chenzehe 发表于 2013-2-6 08:22:40

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]
查看完整版本: Java 过滤器