请问有人可以比较详细的说一下过滤器(Filter)的作用吗?最好带上一个小例子,谢谢

解决方案 »

  1.   

    public class EncodingFilter implements Filter { private String encoding = "ISO-8859-1";
    private final Logger log = Logger.getLogger(this.getClass()); public void init(FilterConfig config) throws ServletException {
    String tmp = config.getInitParameter("encoding");
    if (tmp != null) {
    encoding = tmp;
    }
    log.info("初始化編碼過濾器,編碼格式:" + encoding);
    } public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) arg0;
    HttpServletResponse response = (HttpServletResponse) arg1; request.setCharacterEncoding(encoding);
    response.setCharacterEncoding(encoding); arg2.doFilter(arg0, arg1);
    } public void destroy() { }
    }
    这是一个编码过滤器的源代码
    <filter>
    <filter-name>encoding</filter-name>
    <filter-class>com.shaw.web.filter.EncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>encoding</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    用来解决乱码问题filter可以做很多事的,楼主可以找专门的文章看看
      

  2.   

    有点类似于AOP   相当于一个门。。你可以指定这个门对那些房间管用
      

  3.   


    请问有过虑是否登录的Filter吗?
      

  4.   

    就在doFilter里用session来判断吧。网上可以找到代码
      

  5.   

    Filter过滤器就是一个“检查部门”,你给他一个条件,然后他就会对在他监控范围内的信息进行“检查”。
    一般我们用于字符码的转换
    代码:import javax.servlet.*;    
    import java.io.IOException;    /** 
    * 用于设置 HTTP 请求字符编码的过滤器,通过过滤器参数encoding指明使用何种字符编码,用于处理Html Form请求参数的中文问题 
    */   
    public class CharacterEncodingFilter    
    implements Filter    
    {    
    protected FilterConfig filterConfig = null;    
    protected String encoding = "";    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException    
    {    
    if(encoding != null)    
    servletRequest.setCharacterEncoding(encoding);    
    filterChain.doFilter(servletRequest, servletResponse);    
    }    public void destroy()    
    {    
    filterConfig = null;    
    encoding = null;    
    }    public void init(FilterConfig filterConfig) throws ServletException    
    {    
    this.filterConfig = filterConfig;    
    this.encoding = filterConfig.getInitParameter("encoding");    }    
    }    
    配置:
    <filter>   <filter-name>EncodingAndCacheflush</filter-name>   
    <filter-class>EncodingAndCacheflush</filter-class>   
    <init-param>   
    <param-name>encoding</param-name>   
    <param-value>UTF-8</param-value>   
    </init-param>   
    </filter>   
    <filter-mapping>   
    <filter-name>EncodingAndCacheflush</filter-name>   
    <url-pattern>/*</url-pattern>   
    </filter-mapping>   
    要传递参数的时候最好使用form进行传参,如果使用链接的话当中文字符的时候过滤器转码是不会起作用的,还有就是页面上 form的method也要设置为post,不然过滤器也起不了作用。 
      

  6.   

    请问有登录过滤session和.jsp的例子吗?