拦截
下来,做一些处理后再交给下一个过滤器或客户端。从而实现一些特殊的功能。通用操作
,比如:自动登录、权限控制、统一编码格式设置、敏感字符过滤等。init()
方法init()
方法,然后调用过滤器的doFilter()
方法对请求过滤,然后再调用servlet的service()
方法,然后再调用过滤器的doFilter()
方法对响应过滤doFilter()
方法和Servlet的service()
方法destroy()
方法,然后再执行Filter的destroy()
方法package top.ygang.filters;
import javax.servlet.*;
import java.io.IOException;
public class MyFilter implements Filter {
@Override
public void init(FilterConfig arg0) throws ServletException {
// 初始化方法,接受一个 FilterConfig 的参数,该参数是对Filter的配置,在服务器启动时自动调用
// 一般不用实现该方法
}
@Override
public void destroy() {
// 服务器关闭时调用,释放Filter占用的资源
// 一般不用实现该方法
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException {
// 过滤方法,对 Resquest 与 Response 对象进行处理,之后交给其他Filter或服务器端
// 如果符合过滤规则则通过chain.doFilter(request,response);进行放行
}
}
/xxx
/servletDemo1,/demo1.jsp
/xxx/*
/user/*,/goods/*
*.jsp
/*
<filter>
<!-- 配置过滤器名称,一般为Filter实现类类名 -->
<filter-name>MyFilter</filter-name>
<!-- 配置过滤器实现类全类名 -->
<filter-class>top.ygang.filters.MyFilter</filter-class>
</filter>
<!-- 指定过滤器规则 -->
<filter-mapping>
<!-- 规则所属的过滤器 -->
<filter-name>MyFilter</filter-name>
<!-- 过滤器拦截路径 -->
<filter-pattern>/*</filter-pattern>
</filter-mapping>
@WebFilter({"/login.jsp","/auth.jsp"})
a-z
)进行排序由小到大如果是tomcat8
之前的版本,该方法只可以解决post请求的乱码处理
@WebFilter("/*")
public class CharacterFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
chain.doFilter(request,response);
}
}