您的位置:首页 > 编程语言 > Java开发

java 之 编码实现Filter学习示例

2015-04-20 11:46 281 查看
public interface Filter {  
  void doFilter(Request request,Response response,FilterChain chain);  
}  

public class HTMLFilter implements Filter {  
 
  @Override  
   public void doFilter(Request request, Response response, FilterChain chain) {  
       request.setRequestStr(request.getRequestStr().replace('<', '[').replace('>', ']'));  
       chain.doFilter(request, response, chain);  
       response.setResponseStr("-----------HtmlFilter()");  
   }  
  
}  

public class SensitiveFilter implements Filter {  
   @Override  
   public void doFilter(Request request, Response response, FilterChain chain) {  
        request.setRequestStr(request.getRequestStr().replace("s","js"));  
        chain.doFilter(request, response, chain);  
       response.setResponseStr("-----------SensitiveFilter()");  
    }   
}  

import java.util.ArrayList;  
import java.util.List;  
 
 
public class FilterChain implements Filter {  
   List<Filter> filters = new ArrayList<Filter>();  
    int index = 0;  
    public FilterChain addFilter(Filter f) {  
        this.filters.add(f);  
        return this;  
    }  
    @Override
public void doFilter(Request request, Response response, FilterChain chain) {  
       if(index==filters.size()) {  
            return;  
        }  
          
        Filter f = filters.get(index);  
        index++;  
         
        f.doFilter(request, response, chain);  
    }  
  
}  

public class Request {  
    private String requestStr;  
  
    public String getRequestStr() {  
        return requestStr;  
    }   
    public void setRequestStr(String requestStr) {  
        this.requestStr = requestStr;  
    }  
}  

public class Response {  
    private String responseStr="response";  
  
    public String getResponseStr() {
return responseStr;  
   }  
  
    public void setResponseStr(String responseStr) {  
        this.responseStr += responseStr;  
    }  
}  

public class TestFilter {  
  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        String msg = "<script>";  
        Request request = new Request();  
       request.setRequestStr(msg);  
          
       Response response = new Response();  
          
        FilterChain fc = new FilterChain();  
      fc.addFilter(new HTMLFilter()).addFilter(new SensitiveFilter());  
          
       fc.doFilter(request, response, fc);  
          
        System.out.println(request.getRequestStr());  
       System.out.println(response.getResponseStr());
}  
  
}  

打印结果:

[jscript]
 response-----------SensitiveFilter()-----------HtmlFilter()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: