java 之 編碼實現Filter學習示例


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()

發佈了268 篇原創文章 · 獲贊 30 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章