1. Servlet过滤器
Servlet过滤器从字面上的字意理解为景观一层次的过滤处理才达到使用的要求,而其实Servlet过滤器就是服务器与客户端请求与响应的中间层组件,在实际项目开发中Servlet过滤器主要用于对浏览器的请求进行过滤处理,将过滤后的请求再转给下一个资源。
在多个页面需要统一执行的代码,可以通过过滤器的 web 组件来完成
英文 Filter
1) 定义过滤器
@WebFilter(urlPattern="要过滤哪些路径")
class 过滤器类 implements Filter {
// 初始化操作
public void init() {
}
// 销毁操作
public void destroy() {
}
// 过滤方法 子类对象 子类对象 过滤器链
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain ) throws ... {
// 要统一执行的代码
//chain.doFilter(request, response); // 调用此方法,让请求继续前进
}
}
2) 过滤路径格式
- 精确匹配 /servlet1, 只会进入servlet1之前进入过滤器
- 后缀匹配 *.jsp , 只要请求的后缀是 jsp 结尾的,就会进入过滤器
- 前缀匹配 /user/* , 例如 /user/insert /user/update, 都会经过此过滤器
只要过滤器的路径与目标路径匹配,这个过滤器就会被执行,因此,在请求前进的过程中会经过多个过滤器
顺序和过滤器的名字有关, 按名字排序
3) request和response的类型转换
filter中的request,response 声明的是父类型,有些方法没有,需要转为子类型对象(实际就是子类对象,可以安全转换)
HttpServletRequest req =