在springboot中自定义Filter、Listener、Servlet、Interceptor
2019-05-06 18:35
274 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hpukevin/article/details/89887203
前提
在springboot启动类上加上@ServletComponentScan注解
[code]@SpringBootApplication @ServletComponentScan public class SpbthymeleafApplication { public static void main(String[] args) { SpringApplication.run(SpbthymeleafApplication.class, args); } }
1.Filter
[code] @WebFilter(filterName = "MyFilter",urlPatterns = {"/test/*"}) public class MyFilter implements Filter { private static Logger logger= LoggerFactory.getLogger(MyFilter.class); @Override public void init(FilterConfig filterConfig) throws ServletException { logger.info("start"); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request= (HttpServletRequest) servletRequest; HttpServletResponse response= (HttpServletResponse) servletResponse; String url=request.getRequestURI(); logger.info(url); filterChain.doFilter(request,response); } @Override public void destroy() { logger.info("end"); } }
2.Listener
监听器用于监听web应用中某些对象、信息的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处理。当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。常用于统计在线人数和在线用户,系统加载时进行信息初始化,统计网站的访问量等等。
监听器总共分为6类:
按监听的对象划分,可以分为
- ServletContext对象监听器(ServletContextListener )
- HttpSession对象监听器(HttpSessionListener )
- ServletRequest对象监听器(ServletRequestListener )
按监听的事件划分
- 对象自身的创建和销毁的监听器
- 对象中属性的创建和消除的监听器
- session中的某个对象的状态变化的监听器
此处以HttpSessionListener和ServletContextListener为例
2.1 HttpSessionListener
[code]@WebListener("myHttpSessionListener") public class MyHttpSessionListener implements HttpSessionListener { private static Logger logger = LoggerFactory.getLogger(MyHttpSessionListener.class); @Override public void sessionCreated(HttpSessionEvent se) { logger.info("session创建"); } @Override public void sessionDestroyed(HttpSessionEvent se) { logger.info("session销毁"); } }
2.2 ServletContextListener
[code]@WebListener(value = "myListener") public class MyContextListener implements ServletContextListener { private static Logger logger= LoggerFactory.getLogger(MyContextListener.class); @Override public void contextInitialized(ServletContextEvent sce) { logger.info("容器启动"); } @Override public void contextDestroyed(ServletContextEvent sce) { logger.info("容器结束"); } }
3.Servlet
[code]@WebServlet(name = "user", urlPatterns = "/user") public class MyServlet extends HttpServlet { private static Logger logger = LoggerFactory.getLogger(MyServlet.class); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { logger.info("servlet请求的URL",req.getRequestURI()); PrintWriter writer = resp.getWriter(); writer.write("请求成功"); writer.flush(); } }
4.Interceptor
4.1 先新建一个类继承HandlerInterceptorAdapter,重写preHandle方法
[code]@Component public class MyInterceptor extends HandlerInterceptorAdapter { private static Logger logger = LoggerFactory.getLogger(MyInterceptor.class); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { logger.info("拦截处理"); return super.preHandle(request, response, handler); } }
4.2 注册拦截器
[code]@Configuration public class registryInterceptor extends WebMvcConfigurationSupport { private static final String[] excludePathPatterns = {"/images/*","/js/*"}; @Autowired private MyInterceptor myInterceptor; @Override protected void addInterceptors(InterceptorRegistry registry) { super.addInterceptors(registry); registry.addInterceptor(myInterceptor).addPathPatterns("/**") .excludePathPatterns(excludePathPatterns); } }
相关文章推荐
- 基于SpringBoot,SSM的Filter,Servlet,Listener,Interceptor的实现
- spring 4000 boot自定义监听器(listener),过滤器(filter),拦截器(interceptor)。即执行时机、顺序。
- Spring Boot参考教程(六)Spring Boot配置Servlet,Filter,Listener,Interceptor
- Spring Boot中Servlet&Filter&Listener&Interceptor的使用
- spring boot (二) servlet listener filter interceptor
- Spring Boot 编写Servlet、Filter、Listener、Interceptor的方法
- spring boot扫描自定义的servlet和filter
- Spring Boot使用Servlet、Filter或Listener的方式
- SpringBoot中Servlet&Listener&Filter的应用
- SpringBoot(四)-- 整合Servlet、Filter、Listener
- Spring Boot - Web 应用开发 - Servlet, Filter, Listener
- springboot 使用Servlet,Filter,Listener的方法
- Spring Boot Servlet Filter Listener
- 【spring】SpringBoot之Servlet、Filter、Listener配置
- SpringBoot初始教程之Servlet、Filter、Listener配置
- SpringBoot学习教程 - 03 - 配置Servlet、Filter、Listener
- spring-boot如何定义一个servlet,filter,listener
- SpringBoot之Servlet、Filter、Listener配置
- 18.玩转Spring Boot 注册Servlet、Filter、Listener
- SpringBoot初始教程之Servlet、Filter、Listener配置(七)