一、自定义过滤器

创建一个过滤器,实现javax.servlet.Filter接口,并重写其中的init、doFilter、destory方法。
package com.example.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
/**
* 实现javax.servlet.Filter,覆盖其三个方法
* @author Administrator
*
*/
@WebFilter(filterName="customFilter",urlPatterns="/*")
public class CustomFilter implements Filter{
@Override
public void destroy() {
System.out.println("CustomFilter过滤器销毁");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("CustomFilter指定过滤器操作......");
//执行操作后必须doFilter
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
System.out.println("CustomFilter初始化......");
}
}
二、自定义监听器
创建一个过滤器,实现ServletContextListener接口
package com.example.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
/**
* 实现ServletContextListener,覆盖其两个方法
* @author Administrator
*
*/
@WebListener
public class CustomListener implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent servletContext) {
System.out.println("servletContext销毁......");
}
@Override
public void contextInitialized(ServletContextEvent servletContext) {
System.out.println("servletContext初始化......");
}
}
创建一个session监听器,监听session的创建和销毁
package com.example.listener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* 实现HttpSessionListener接口,监视session的动态
* @author Administrator
*
*/
@WebListener
public class SessionListener implements HttpSessionListener{
@Override
public void sessionCreated(HttpSessionEvent session) {
System.out.println("session创建成功......");
}
@Override
public void sessionDestroyed(HttpSessionEvent session) {
System.out.println("session销毁......");
}
}
三、自定义拦截器
步骤:
1、创建自己的拦截器实现HandlerInterceptor接口
2、创建自己的拦截器链,继承WebMvcConfigurerAdapter类,重写addInterceptors方法。
3、实例化自己的拦截器,并加入到拦截器链中。
拦截器一:
package com.example.Interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class CustomInterceptor implements HandlerInterceptor {
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object,
Exception exception) throws Exception {
//在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)
System.out.println("3. 整个请求结束之后被调用......CustomInterceptor1......");
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView view)
throws Exception {
// 请求处理之后进行调用,但是在视图被渲染之前
System.out.println("2. 请求处理之后进行调用,但是在视图被渲染之前......CustomInterceptor1......");
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
// 在请求处理之前进行调用
System.out.println("1. 在请求处理之前进行调用......CustomInterceptor1......");
// 只有返回true才会继续向下执行,返回false取消当前请求
return true;
}
}
拦截器二:
package com.example.Interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class CustomInterceptor2 implements HandlerInterceptor {
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object,
Exception exception) throws Exception {
//在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)
System.out.println("3. 整个请求结束之后被调用......CustomInterceptor2......");
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView view)
throws Exception {
// 请求处理之后进行调用,但是在视图被渲染之前
System.out.println("2. 请求处理之后进行调用,但是在视图被渲染之前......CustomInterceptor2......");
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
// 在请求处理之前进行调用
System.out.println("1. 在请求处理之前进行调用......CustomInterceptor2......");
// 只有返回true才会继续向下执行,返回false取消当前请求
return true;
}
}
自定义拦截器链并加入自定义的拦截器
package com.example.adapter;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.example.Interceptor.CustomInterceptor;
import com.example.Interceptor.CustomInterceptor2;
/**
* 继承WebMvcConfigurerAdapter,复写addInterceptors方法
* @author Administrator
*
*/
@Configuration
public class WebAdapter extends WebMvcConfigurerAdapter{
@Override
public void addInterceptors(InterceptorRegistry registry) {
//众多的拦截器组成了一个拦截器链
/**
* 主要方法说明:
* addPathPatterns 用于添加拦截规则
* excludePathPatterns 用户排除拦截
*/
registry.addInterceptor(new CustomInterceptor()).addPathPatterns("/*");
registry.addInterceptor(new CustomInterceptor2()).addPathPatterns("/*");
super.addInterceptors(registry);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# spring
# boot
# 监听器
# 加过滤器
# boot拦截器
# SpringBoot 过滤器
# 拦截器
# 监听器的具体使用
# SpringBoot使用过滤器、拦截器和监听器的案例代码(Springboot搭建java项目)
# SpringBoot 过滤器、拦截器、监听器对比及使用场景分析
# SpringBoot实现拦截器、过滤器、监听器过程解析
# Springboot中使用拦截器、过滤器、监听器的流程分析
# 拦截器
# 自定义
# 自己的
# 结束之后
# 创建一个
# 是在
# 但是在
# 也就
# 才会
# 重写
# 主要是
# 在整个
# 大家多多
# 链中
# public
# WebListener
# implements
# CustomFilter
# urlPatterns
# Administrator
相关文章:
宁波免费建站如何选择可靠模板与平台?
建站之星如何通过成品分离优化网站效率?
建站主机选择指南:服务器配置与SEO优化实战技巧
代购小票制作网站有哪些,购物小票的简要说明?
如何选择网络建站服务器?高效建站必看指南
建站之星后台管理:高效配置与模板优化提升用户体验
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
Python路径拼接规范_跨平台处理说明【指导】
黑客入侵网站服务器的常见手法有哪些?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
如何在阿里云虚拟服务器快速搭建网站?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
免费网站制作appp,免费制作app哪个平台好?
个人摄影网站制作流程,摄影爱好者都去什么网站?
网页设计网站制作软件,microsoft office哪个可以创建网页?
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
深圳网站制作平台,深圳市做网站好的公司有哪些?
建设网站制作价格,怎样建立自己的公司网站?
如何选择高效响应式自助建站源码系统?
焦点电影公司作品,电影焦点结局是什么?
建站之星如何配置系统实现高效建站?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
如何在阿里云部署织梦网站?
如何选择PHP开源工具快速搭建网站?
如何在七牛云存储上搭建网站并设置自定义域名?
三星网站视频制作教程下载,三星w23网页如何全屏?
网站制作员失业,怎样查看自己网站的注册者?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
大连网站设计制作招聘信息,大连投诉网站有哪些?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
Thinkphp 中 distinct 的用法解析
建站之星24小时客服电话如何获取?
如何解决ASP生成WAP建站中文乱码问题?
郑州企业网站制作公司,郑州招聘网站有哪些?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
如何快速配置高效服务器建站软件?
制作网站的软件免费下载,免费制作app哪个平台好?
常州企业建站如何选择最佳模板?
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
已有域名和空间,如何快速搭建网站?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
建站之星安装模板失败:服务器环境不兼容?
建站OpenVZ教程与优化策略:配置指南与性能提升
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
简历在线制作网站免费版,如何创建个人简历?
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
*请认真填写需求信息,我们会在24小时内与您取得联系。