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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值