Filter过滤器复习笔记

来源:互联网 发布:游戏辅助编程 编辑:程序博客网 时间:2024/06/07 12:47

编码格式
web.xml配置

 <!--  中文编码 -->  <filter>      <filter-name>chinesefiter</filter-name>      <filter-class>com.eduask.control.filter.ChineseFilter</filter-class>  </filter>  <filter-mapping>     <filter-name>chinesefiter</filter-name>     <url-pattern>/*</url-pattern>  </filter-mapping>

实现Filter

public class ChineseFilter implements Filter{    public void destroy() {    }    @Override    public void doFilter(ServletRequest req, ServletResponse resp,            FilterChain chain) throws IOException, ServletException {        req.setCharacterEncoding("utf-8");        resp.setContentType("text/html;charset=utf-8");        resp.setCharacterEncoding("utf-8");        chain.doFilter(req, resp);    }    public void init(FilterConfig arg0) throws ServletException {       }}

过滤敏感词
1、敏感词设置

public class WordUtil {    // 过滤单词的工具,有增删改要过滤的内容的功能 单例    private static List list = new ArrayList();    // 初始化的单词    static {        list.add("fuck");    }    public static List getWords() {        return list;    }    //增加敏感词    public static void addWords(String name) {        list.add(name);    }    //移除敏感词    public static void remove(String name) {        for (int i = 0; i < list.size(); i++) {            if (list.get(i) == "b") {                list.remove(i--);            }        }    }    //修改敏感词}

2、设置到servlet,重写里面的方法

public class MyFilterForWord extends HttpServletRequestWrapper{//包装类    public MyFilterForWord(HttpServletRequest request) {        super(request);    }    //重新getParameter方法    public String getParameter(String name){        String words=super.getParameter(name);        //之前的e        System.out.println("过滤前的内容:"+words);        List<String> list=WordUtil.getWords();        for(String l:list){            words=words.replace(l, "**");        }        System.out.println();        return words;       }}

3、web.xml设置

<!--  过滤敏感词 -->    <filter>      <filter-name>sensitive</filter-name>      <filter-class>com.eduask.control.filter.SensitiveWordsFilter</filter-class>  </filter>  <filter-mapping>      <filter-name>sensitive</filter-name>      <url-pattern>/*</url-pattern>  </filter-mapping>

实现Filter

public class SensitiveWordsFilter implements Filter{    public void destroy() {    }    @Override    public void doFilter(ServletRequest req, ServletResponse resp,            FilterChain chain) throws IOException, ServletException {        //将req转为http        HttpServletRequest hreq=(HttpServletRequest) req;        MyFilterForWord myfilter=new MyFilterForWord(hreq);//      设置过滤后的req        chain.doFilter(myfilter, resp);     }    public void init(FilterConfig arg0) throws ServletException {    }}

中文编码过滤

  <!-- 编码过滤器 -->    <filter>  <filter-name>setCharacterEncoding</filter-name>  <filter-class>com.edusak.filter.EncodingFilter</filter-class>    <init-param>              <param-name>encoding</param-name>              <param-value>utf-8</param-value>      </init-param>  </filter>   <filter-mapping>   <filter-name>setCharacterEncoding</filter-name>   <url-pattern>/*</url-pattern>  </filter-mapping>
//public class EncodingFilter implements Filter {    private String encoding;    private Map<String,String> params=new HashMap<String,String>();    @Override    public void init(FilterConfig config) throws ServletException {        //初始化        encoding=config.getInitParameter("encoding");        for(Enumeration e=config.getInitParameterNames();e.hasMoreElements();){            String name=(String) e.nextElement();            String value=config.getInitParameter(name);            params.put(name, value);        }    }    @Override    public void destroy() {        System.out.println("end do the coding filter");        params=null;        encoding=null;      }    @Override    public void doFilter(ServletRequest req, ServletResponse resp,            FilterChain chain) throws IOException, ServletException {        req.setCharacterEncoding(encoding);            chain.doFilter(req, resp);    }}
0 0
原创粉丝点击