经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring Boot » 查看文章
Spring Boot 2使用Servlet、Listener和Filter配置
来源:cnblogs  作者:gdjlc  时间:2019/9/25 9:32:50  对本文有异议

开发环境:IntelliJ IDEA 2019.2.2
Spring Boot版本:2.1.8

新建一个名称为demo的Spring Boot项目。

一、使用Servlet配置

1、修改启动类 DemoApplication.cs 代码,加入注解ServletComponentScan,它用于扫描Servlet组件,包括使用@WebServlet、
@WebFilter和@WebListener进行修饰的类。

  1. package com.example.demo;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.boot.web.servlet.ServletComponentScan;
  5. @SpringBootApplication
  6. @ServletComponentScan
  7. public class DemoApplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(DemoApplication.class, args);
  10. }
  11. }

2、新建一个类 MyServlet.cs,继承HttpServlet并且加入注解 @WebServlet

  1. package com.example.demo;
  2. import javax.servlet.annotation.WebServlet;
  3. import javax.servlet.http.HttpServlet;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. @WebServlet(value="/servlet")
  7. public class MyServlet extends HttpServlet {
  8. public MyServlet(){
  9. System.out.println("servlet类");
  10. }
  11. protected void service(HttpServletRequest arg0, HttpServletResponse arg1){
  12. System.out.println("servlet方法");
  13. }
  14. }

在浏览器中访问http://localhost:8080/servlet,可看到IDEA控制台输出
servlet类
servlet方法

二、使用Listener配置

1、启动类 DemoApplication.cs 代码在使用Servlet配置上已经加入注解ServletComponentScan,在此保持不变。

2、新建一个类 MyServlet.cs

  1. package com.example.demo;
  2. import javax.servlet.ServletRequestEvent;
  3. import javax.servlet.ServletRequestListener;
  4. import javax.servlet.annotation.WebListener;
  5. @WebListener
  6. public class MyListener implements ServletRequestListener {
  7. @Override
  8. public void requestInitialized(ServletRequestEvent servletRequestEvent){
  9. System.out.println("请求创建");
  10. }
  11. @Override
  12. public void requestDestroyed(ServletRequestEvent servletRequestEvent){
  13. System.out.println("请求销毁");
  14. }
  15. }

在浏览器中访问一个接口,如上步http://localhost:8080/servlet,可看到IDEA控制台输出:
请求创建
请求销毁

附,常用的监听器接口:

  1. 1.ServletContextListener -- 监听servletContext对象的创建以及销毁   
  2. 1.1 contextInitialized(ServletContextEvent arg0)   -- 创建时执行   
  3. 1.2 contextDestroyed(ServletContextEvent arg0)  -- 销毁时执行
  4. 2.HttpSessionListener  -- 监听session对象的创建以及销毁   
  5. 2.2 sessionCreated(HttpSessionEvent se)   -- 创建时执行   
  6. 2.2 sessionDestroyed(HttpSessionEvent se) -- 销毁时执行
  7. 3.ServletRequestListener -- 监听request对象的创建以及销毁   
  8. 3.1 requestInitialized(ServletRequestEvent sre) -- 创建时执行   
  9. 3.2 requestDestroyed(ServletRequestEvent sre) -- 销毁时执行
  10. 4.ServletContextAttributeListener  -- 监听servletContext对象中属性的改变   
  11. 4.1 attributeAdded(ServletContextAttributeEvent event) -- 添加属性时执行   
  12. 4.2 attributeReplaced(ServletContextAttributeEvent event) -- 修改属性时执行   
  13. 4.3 attributeRemoved(ServletContextAttributeEvent event) -- 删除属性时执行
  14. 5.HttpSessionAttributeListener  --监听session对象中属性的改变   
  15. 5.1 attributeAdded(HttpSessionBindingEvent event) -- 添加属性时执行   
  16. 5.2 attributeReplaced(HttpSessionBindingEvent event) -- 修改属性时执行   
  17. 5.3 attributeRemoved(HttpSessionBindingEvent event) -- 删除属性时执行
  18. 6.ServletRequestAttributeListener  --监听request对象中属性的改变   
  19. 6.1 attributeAdded(ServletRequestAttributeEvent srae) -- 添加属性时执行   
  20. 6.2 attributeReplaced(ServletRequestAttributeEvent srae) -- 修改属性时执行   
  21. 6.3 attributeRemoved(ServletRequestAttributeEvent srae) -- 删除属性时执行

三、使用Filter配置

1、启动类 DemoApplication.cs 代码在使用Servlet配置上已经加入注解ServletComponentScan,在此保持不变。

2、新建一个类 MyFilter.cs

  1. package com.example.demo;
  2. import javax.servlet.*;
  3. import javax.servlet.annotation.WebFilter;
  4. import java.io.IOException;
  5. //第一个参数为过滤器名字,第二个参数为要拦截的请求地址
  6. @WebFilter(filterName="myFilter", urlPatterns="/*")
  7. public class MyFilter implements Filter {
  8. @Override
  9. public void init(FilterConfig filterConfig) throws ServletException {
  10. System.out.println("filter初始化");
  11. }
  12. @Override
  13. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
  14. ServletException {
  15. System.out.println("filter方法");
  16. chain.doFilter(request, response);
  17. }
  18. @Override
  19. public void destroy() {
  20. System.out.println("filter销毁");
  21. }
  22. }

在浏览器中访问http://localhost:8080/servlet,可看到IDEA控制台输出:
filter方法

最后,附上项目结构图:

 

原文链接:http://www.cnblogs.com/gdjlc/p/11581722.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号