Filter
-
javaweb三大组件(servlet,Filter,Listener)之一。用于拦截对web资源的访问,以进行特殊的功能处理,例如:权限控制,数据脱敏,统一编码等。
-
运行流程
- 执行放行前逻辑
- 放行后访问资源
- 执行放行后逻辑
-
一个web程序中可以设置多个过滤器,而多个过滤器组合在一起形成过滤器链
-
拦截路劲设置
@WebFilter("")
/*
:拦截所有请求/hello.html
: 拦截具体资源/img/*
:目录拦截/*.jsp
:后缀名拦截
-
实例代码
注意:拦截只存在浏览器和web资源间,request的请求重发不会受影响
@WebFilter("/*")
public class FilterDemo implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
Filter.super.init(filterConfig);
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("过滤·······");
HttpServletRequest req = (HttpServletRequest) servletRequest;
String[] urls = {"/login.html","/css/"};
String url = req.getRequestURL().toString();
for(String s:urls){
if(url.contains(s)){
System.out.println("放行");
filterChain.doFilter(servletRequest,servletResponse);
return;
}
}
req.getRequestDispatcher("/login.html").forward(servletRequest,servletResponse);
System.out.println("请求转发");
System.out.println("过滤后");
}
@Override
public void destroy() {
Filter.super.destroy();
}
}
Listener
监听器可以监听application,session,request三个对象的创建、销毁和修改动作时自动执行代码的功能组件。主要类型分为:
1. ServletContext监听
2. Session 监听
3. Request 监听