JAVA过滤器

HttpReqWrapper.java


 package com.lvwang.utils.filters;

 import java.util.Iterator;

 import java.util.Map;

 import java.util.Set;

 import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletRequestWrapper;

 public class HttpReqWrapper extends HttpServletRequestWrapper {

     private Map< String,String> map = null;

     public HttpReqWrapper(HttpServletRequest request) {

         super(request);

     }

     // 过滤脏话

     public String replace(String str){

         StringBuffer sb = new StringBuffer(str);

         Set keys = this.getMap().keySet();

         Iterator it = keys.iterator();

         String ss = null;

         while(it.hasNext()) {

             String key = (String) it.next();

             int index = sb.indexOf(key);

             if(index != -1) {

                 if(key != null)

                     ss = key;

                 sb.replace(index, index+key.length(), this.getMap().get(key));

             }

         }

         if(ss!=null) {

             if (sb.toString().indexOf(ss) == -1) {

                 return sb.toString();

             } else {

                 return replace(sb.toString());

             }

         }

         return sb.toString();

     }

     // 重写getParameter()方法

     public String getParameter(String str) {
         if(str.equals("pager.offset")){
             return super.getParameter(str);
         }else{
             String content =  super.getParameter(str);
   if(content!=null)
       return replace(content);
   else
    return null;

         }    

     }

     public Map< String,String> getMap() {

         return map;

     }

     public void setMap(Map< String,String> map) {

         this.map = map;

     }

     

     

 }

 

 

package com.lvwang.utils.filters;


import java.io.BufferedReader;

import java.io.FileNotFoundException;

 import java.io.FileReader;

 import java.io.IOException;

 import java.util.HashMap;

 import java.util.Map;

 import javax.servlet.Filter;

 import javax.servlet.FilterChain;

 import javax.servlet.FilterConfig;

 import javax.servlet.ServletContext;

 import javax.servlet.ServletException;

 import javax.servlet.ServletRequest;

 import javax.servlet.ServletResponse;

 import javax.servlet.http.HttpServletRequest;

 public class WordsFilter implements Filter {
     private Map< String, String>map = new HashMap< String, String>();
     // 过滤器的初始化
     public void init(FilterConfig config) throws ServletException {
         String filePath = config.getInitParameter("filePath");
         // 从配置文件中取得文件的相对路径
         ServletContext context = config.getServletContext();
         String realPath = context.getRealPath(filePath);
         // 根据相对路径取得绝对路径
         try {
             FileReader freader = new FileReader(realPath);
             // 根据绝对路径,通过文件流来读取文件
             BufferedReader br = new BufferedReader(freader);
             String line = null;
             while((line=br.readLine()) != null) {
              line=new String(line.getBytes("GBK"),"UTF-8");
                 String []str = line.split("=");
                 if(str!=null&&str.length>=2)
                   map.put(str[0], str[1]);
             }
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }

     public void doFilter(ServletRequest request, ServletResponse response,
             FilterChain chain) throws IOException, ServletException {
         // 乱码处理
         request.setCharacterEncoding("UTF-8");
         response.setContentType("text/html;charset=UTF-8");
         HttpServletRequest HttpReq = (HttpServletRequest) request;
         HttpReqWrapper hrw = new HttpReqWrapper(HttpReq);
         hrw.setMap(map);
         chain.doFilter(hrw, response);
     }
     public void destroy() {
     }
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值