博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
servlet过滤器1 解决字符集乱码 filter
阅读量:6678 次
发布时间:2019-06-25

本文共 2408 字,大约阅读时间需要 8 分钟。

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://znyao.baihongyu.com/

你可能感兴趣的文章
中国航信借助NetApp存储系统打造高效数据中心
查看>>
增强加密是把双刃剑
查看>>
外媒:清理数据成数据科学家最大挑战
查看>>
载波聚合:保障LTE-A速率的有力武器
查看>>
WHID注入器:在无线环境下实现HID攻击的最新利器
查看>>
智能制造下徐工开启三大改造
查看>>
SOA减低成本提升效率的最有效的思想方法
查看>>
解读:云计算产业“钱”景
查看>>
《认知设计:提升学习体验的艺术》——学习者与你有何不同
查看>>
英国脱欧对中国光伏产业的短期及长期影响
查看>>
Consensus Attention-based Neural Networks for Chinese Reading
查看>>
英国NPCC称网络摄像头勒索案件数量急剧增加 四起自杀事件与此有关
查看>>
TCTF:鹅厂的“黑客游戏”上线
查看>>
Kief Morris:实现基础设施即代码
查看>>
《Drupal实战》——2.3 为图书添加对应的字段
查看>>
《Android和PHP开发最佳实践》一1.4 小结
查看>>
光伏发电与“鸭子曲线”
查看>>
博鳌直击 | 业界大佬激辩金融科技:互联网金融并不是翻牌就可以叫Fintech
查看>>
Amdocs将成为AT&T ECOMP平台的集成商
查看>>
热带地区数据中心需要太阳能发电,而不是自然冷却
查看>>