2022-08-30
原文作者:键盘林

在传统的方式写动态网站的时候需要将servlet配置到xml中,如今可以直接通过spring注解的方式来处理

创建HelloServlet类继承HttpServlet

202203062037569661.png

启动服务器(这个是什么我什么配置文件都没有,连web.xml都不存在):

202203062037591492.png

创建一个页面

202203062038023693.png

根据官方文档配置

创建MyServletContainerInitializer类继承ServletContainerInitializer

在应用启动的时候,会运行onStartup方法

ServletContext arg1:代表当web应用的ServletContext:一个Web应用对应一个ServletContext

202203062038068574.png
必须将文件javax.servlet.ServletContainerInitializer放到META-INF/services下面;内容为继承ServletContainerInitializer的类的全路径名

202203062038087425.png

创建接口HelloService

202203062038110456.png

@HandlesTypes():容器启动的时候会将@HandlesTypes指定的这个类型下面的子类(实现类、子接口等)传递过来;

Set<Class<?>> arg0:感兴趣的类型的所有子类型

202203062038125127.png

创建HelloServiceExt接口继承HelloService

202203062038148218.png

创建AbstractHelloService抽象类实现HelloService

202203062038162169.png

创建HelloServiceImpl实现HelloService

2022030620381768510.png

打印相关信息

2022030620381904311.png

运行:

2022030620382119312.png

总结:

主要是通过配置类,然后继承相关类型即可。就可以实现在web初始化的时候运行onStartup()方法。

使用ServletContext注册web组件(Servlet、Filter、Listener)

创建UserServlet类继承HttpServlet

2022030620382289713.png

创建UserFilter类实现Filter

2022030620382519714.png

创建UserListener,监听项目的初始化和创建

2022030620382715915.png

2022030620382948916.png

2022030620383174417.png

注册组件(Servlet、Filter、Listener)

2022030620383319518.png

2022030620383520019.png

你可以看到注册Filter,返回的是javax.servlet.FilterRegistration.Dynamic

2022030620383653520.png

配置拦截请求信息

2022030620383832021.png

DispacherType

2022030620384091622.png

拦截请求为REQUEST,

true:开启拦截,

/*:拦截所有

2022030620384221423.png

启动服务器

2022030620384410324.png

输入user我们能看到它被拦截了

2022030620384619625.png

关闭服务器

2022030620384730426.png

阅读全文