Java 过滤器
<div class="Section0">1、什么是过滤器什么是过滤器, 过滤器不是servlet, 它是一个可以传送请求或者修改响应的对象, 它是请求到达Servlet前的预处理程序, 以及响应离开Servlet后的后处理程序。也就是:
在一个servlet被调用前截获该调用
在一个servlet被调用前检查 请求
修改 在实际请求中 提供的 请求对象的 请求头 和 请求数据
修改 在实际响应中 提供的 响应对象的 响应头 和 响应数据
在一个servlet被调用之后 截获该调用
2、过滤器必须实现javax.servlet.Filter接口
Filter接口有如下方法:
public void init(FilterConfig filterConfig) throws ServletException{
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException{
}
public void destroy(){
}
服务器启动时执行一次init方法,在请求使用过滤器时调用doFilter方法,服务器停止调用destroy方法。
3、web.xml文件中注册过滤器
<filter>
<filter-name>filtername</filter-name>
<filter-class>com.xxx.xxx.xxx</filter-class>
</filter>
<filter-mapping>
<filter-name>filtername</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4、过滤器转发
如果想让过滤器继续执行servlet,则在doFilter方法中调用FilterChain对象的doFilter(ServletRequest request, ServletResponse response)方法:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException{
//实现业务逻辑,如果符合则将控制权转到servlet
If(xxx){
chain.doFilter(request,response);
}else{
// 通过requestDispatcher跳转到其它页面
request.getRequestDispatcher("xxx.jsp").forward(request,response) ;
}
}
页:
[1]