关闭

jsp&servlet编码问题解决方法

标签: jsp
231人阅读 评论(0) 收藏 举报
分类:
在Java Web项目中总会遇到编码格式问题,在JSP/Servlet与浏览器传输数据时,处理编码格式的方式通常是设置request对象和response对象的编码格式。然而,一个项目中有很多个JSP/Servlet,在每个JSP/Servlet中分别对request对象和response对象进行编码格式的设置是一件非常麻烦的事情,于是我们想能不能把对于request对象和response对象编码格式的设置统一起来做。
用过滤器解决统一设置编码格式的问题

    定义一个过滤器类CharacterEncodingFilter


    package com.ftx.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;

    public class CharacterEncodingFilter implements Filter {

        protected FilterConfig filterConfig = null;
        protected String encoding = "";

        public void init(FilterConfig filterConfig) throws ServletException {
            this.filterConfig = filterConfig;
            this.encoding = filterConfig.getInitParameter("encoding");
        }
        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain chain) throws IOException, ServletException {

            request.setCharacterEncoding(this.encoding);
            response.setCharacterEncoding(this.encoding);
            response.setContentType("text/html;charset="+this.encoding);

            chain.doFilter(request, response);
        }
        public void destroy() {
            this.encoding = null;
            this.filterConfig = null;
        }
    }
  在项目配置文件web.xml中添加过滤器的配置信息

  <filter>
            <description>CharacterEncodingFilter</description>
            <display-name>CharacterEncodingFilter</display-name>
            <filter-name>CharacterEncodingFilter</filter-name>
            <filter-class>
                org.zeroup.filter.CharacterEncodingFilter
            </filter-class>
            <init-param>
    <param-name>encoding</param-name>
    <param-value>utf-8</param-value>
            </init-param>
        </filter>

        <filter-mapping>
            <filter-name>CharacterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

此例将当前项目中所有request和response对象字符编码格式全部设置为utf-8,同时浏览器端读取和发送数据的编码格式也自动设定为utf-8。




1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:130235次
    • 积分:2588
    • 等级:
    • 排名:第14674名
    • 原创:115篇
    • 转载:15篇
    • 译文:6篇
    • 评论:12条
    最新评论