过滤器的api包含有三个简单接口,Filter,Filter Chain,Filter Config。通过过滤器类实现Filter,该类将一个引用给Filter Chain,如果通过则把控制权交由下一个链接。init()是在服务器启动时自动调用执行,说白了就是为过滤器的处理做准备,这个方法接受Filter Config类型的对象作为输入。destory()折行清理操作,一般是在垃圾自动收集前调用执行

1 public void destroy() {  
2 this.filterConfig = null;  
3 } 

 

doFilter()例子

 1 //采用注解方式配置URL,此处就不必再在web.xml文件中配置。如果两者均配置的话,系统将以web.xml文件中配置信息为准
 2 @WebFilter(filterName="CodeFilter",urlPatterns={"/*"})      
 3 
 4 public class CodeFilter implements Filter{
 5         
 6     
 7          @Override
 8          public void destroy() {
 9              System.out.println("destroy---CodeFilter");                          
10          }
11      
12          @Override
13          public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
14                  throws IOException, ServletException {
15 
16              HttpServletRequest request =(HttpServletRequest) arg0;
17              HttpServletResponse response =(HttpServletResponse) arg1;
18              //以上是强制内型转换,使用request对象和response对象
19              
20              request.setCharacterEncoding("utf-8");          //设置过滤页面提取数据的编码
21              response.setContentType("text/html;charset=utf-8");  //设置过滤页面显示数据的编码
22              
23              arg2.doFilter(arg0, arg1);//在页面跳转之前执行此语句前面的代码,执行完页面的代码之后,在执行后面的语句
24  
25              }
26      
27          @Override
28          public void init(FilterConfig filterConfig) throws ServletException {
29 
30          }
31 
32 }

以这个类为过滤类,执行其他servlet类时,调用此类,如果字符型通过,则可以正确跳转至期望页面

posted on 2017-04-21 22:17  red丶tomato  阅读(216)  评论(0编辑  收藏  举报