购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.2 集成原生Filter和Listener

Servlet(ServerApplet)是JavaServlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

Servlet程序中有一套专门用于开发的Java类和接口ServletAPI(ServletApplicationProgrammingInterface)。早期包装ServletAPI的jar包被称之为JSDK(JavaServletDevelopmentKit,即JavaServlet开发工具包),最新版本的JavaServlet开发工具包已经被集成到了JavaEE(J2EE升级后的名称,即Java企业级版本)开发工具包中。

使用SpringBoot开发项目之后,就基本上告别Servlet,Filter和Listener了。但是有时在整合一些第三方框架时,还是不得不使用Servlet。为了更好地完善复杂的业务逻辑,SpringBoot中对于整合这些基本的Web组件也提供了很好的支持,下面对原生的Filter,Listener讲解。

4.2.1 原生方式

1.集成Servlet

创建一个MyServlet类来继承HttpServlet从而Override出对应的doGet与doPost方法代码(继承了HttpServlet其他的操作与使用原生的Servlet一样,此处就不再赘述),具体代码如下所示。

然在进入该工程中的主启动类(含注解@SpringBootApplication的类)中编写,创建一个方法返回SpringBoot中的WEB组件里面的ServletRegistrationBean对象来引入自定义的Servlet对象,代码如下所示,创建一个方法使用@Bean注解将该方法返回的对象注入Spring容器中,用于Servlet请求数据。

2.集成Listener

创建一个MyListener类来实现HttpSessionListene接口从而Override出对应的sessionCreated与sessionDestroyed方法(实现HttpSessionListene其他的操作与使用原生的Listene一样,此处就不再赘述),代码如下所示。

在MyServlet类中获取到Session对象,并在Session的setAttribute方法保存数据,便于后续的Listener对该域的拦截,代码如下所示。

然在进入到该工程中的主启动类(含注解@SpringBootApplication)中编写,创建一个方法返回SpringBoot中的WEB组件里面的ServletListenerRegistrationBean对象来引入自定义的Listener对象,使用@Bean注解将该方法返回的对象注入Spring容器中,代码如下所示。

3.集成Filter

创建一个MyFilter类实现Filter接口,从而Override出对应的doFilter方法代码(实现Filter其他的操作与使用原生的Filter一样,在此就不过多地说明了)如下所示所示。

然在进入到该工程中的主启动类(含注解@SpringBootApplication)中创建一个方法返回SpringBoot中的WEB组件里面的FilterRegistrationBean对象来引入自定义的Filter对象,过滤getServlet和getServlet2的请求,因为构造方法是个不定参数,代码如下所示。

4.2.2 使用@ServletComponentScan注解

在SpringBoot工程启动类上使用@ServletComponentScan注解后,使用@WebServlet,@WebFilter,@WebListener标记的Servlet,Filter,Listener就可以自动注册到Servlet容器中,无需其他代码。

创建一个新的工程并且在主启动类(含注解@SpringBootApplication的类)加上注解@ServletComponentScan,代码如下所示。

在创建一个MyServlet类继承HttpServlet来表示一个对应的Servlet类,并在该类上加上注解@WebServlet(“地址”),代码如下所示。

在创建一个MyFilter类实现Filter来表示一个Filter类,并在该类加上注解@Web Filter(),代码如下所示。

在创建一个MyListener类实现HttpSessionListener来表示一个Listener类并在该类加上注解@WebListener,代码如下所示。 IWrpG65tNu66t6gmryl4w4fOe2ft7SoFz2OX6MDZ9vUjxMglyptj2ADpjx1nf/el

点击中间区域
呼出菜单
上一章
目录
下一章
×