zoukankan      html  css  js  c++  java
  • servlet过滤器1 解决字符集乱码 filter

    package com.tarena.web.filter;    import java.io.IOException;    import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;    import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;    public class CharacterEncodingFilter implements Filter {    private static Log log = LogFactory.getLog(CharacterEncodingFilter.class);    private boolean ignore = true;    private String encoding;    private FilterConfig filterConfig;        @Override    public void init(FilterConfig filterConfig) throws ServletException {        this.filterConfig = filterConfig;        String value = filterConfig.getInitParameter("ignore");                //ignore就是说,忽略掉页面默认编码,统一采用web.xml中的字符集配置,强制转码        if (value == null) {            this.ignore = true;        } else if (value.equalsIgnoreCase("true")) {            this.ignore = true;        } else {            this.ignore = false;        }    }        @Override    public void doFilter(ServletRequest servletRequest,            ServletResponse servletResponse, FilterChain filterChain)            throws IOException, ServletException {        HttpServletRequest request = (HttpServletRequest) servletRequest;        HttpServletResponse response = (HttpServletResponse) servletResponse;        log.info("开始过滤");        encoding = getUserEncoding();        if (ignore && encoding == null) {            encoding=filterConfig.getInitParameter("encoding");        }        if (encoding != null) {            request.setCharacterEncoding(encoding);            response.setContentType("text/html;charset=" + encoding);        }        filterChain.doFilter(request, response);    }        // 用户项目中定义字符集(配置文件中、在session中获取)    public String getUserEncoding() {            return null;    }        @Override    public void destroy() {        }    }


    web.xml


    <!-- 过滤器 -->    <filter>        <filter-name>CharacterEncodingFilter</filter-name>        <filter-class>            com.riambsoft.report.servlet.CharacterEncodingFilter        </filter-class>        <init-param>            <param-name>ignore</param-name>            <param-value>true</param-value>        </init-param>        <init-param>            <param-name>encoding</param-name>            <param-value>GBK</param-value>        </init-param>    </filter>            <filter-mapping>        <filter-name>CharacterEncodingFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>    <!--过滤器结束-->


    注意 : ignore这个参数就是说,忽略掉页面默认编码,统一采用web.xml中的字符集配置,强制转码!!


    这个ignore参数,自己思考了好久好久才发现是这个用途,靠,记忆力果然不可靠,不写注释害人匪浅啊~~


    记住,过滤器的xml配置要优先放于最前边,放在<servlet>之前,才能生效!


    下一篇介绍 servlet过滤器2,对于用户非法在线的处理~~很简单的 http://hi.baidu.com/ae6623/item/617c46c5a96b6dd196445292

  • 相关阅读:
    js 自动下载函数
    集群中用Memcached来实现session共享
    PDO防注入原理分析以及使用PDO的注意事项
    侧边栏
    helloworld
    angularjs 获取地址传参
    ionic 上拉加载更多&瀑布流加载&滚动到底部加载更多 主意事项
    亿级Web系统搭建——单机到分布式集群
    php 模拟表单提交
    R语言curve绘图函数
  • 原文地址:https://www.cnblogs.com/ae6623/p/4416559.html
Copyright © 2011-2022 走看看