filter 过滤器

简单配置步骤: 
1.在项目web.xml文件添加过滤器标记<filter><filter-mapping>2.实现过滤器代码; 
3.对Tomcat服务器conf目录里的Server.xml文件配置URIEncoding; 
4.前台页面设置contentType的charset值与web.xml里设置的值一致。

项目的WEB-INF/web.xml文件

<web-app>
<!-- 编码过滤器 -->  
    <filter>  
        <filter-name>setCharacterEncoding</filter-name>  
        <filter-class>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> 
    </web-app>

java代码

import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;

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 EncodingFilter implements Filter {
    private String encoding;
    private Map<String, String> params = new HashMap<String, String>();
    // 项目结束时就已经进行销毁
    public void destroy() {
        System.out.println("end do the encoding filter!");
        params=null;
        encoding=null;
    }
    public void doFilter(ServletRequest req, ServletResponse resp,
            FilterChain chain) throws IOException, ServletException {
        //UtilTimerStack.push("EncodingFilter_doFilter:");
        System.out.println("before encoding " + encoding + " filter!");
        req.setCharacterEncoding(encoding);
        // resp.setCharacterEncoding(encoding);
        // resp.setContentType("text/html;charset="+encoding);
        chain.doFilter(req, resp);      
        System.out.println("after encoding " + encoding + " filter!");
        System.err.println("----------------------------------------");
        //UtilTimerStack.pop("EncodingFilter_doFilter:");
    }

    // 项目启动时就已经进行读取
    public void init(FilterConfig config) throws ServletException {
        System.out.println("begin do the encoding filter!");
        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);
        }
    }
 }

最后一步:

修改Tomcat服务器conf\Server.xml文件,加入一个URIEncoding="UTF-8"
<!--URIEncoding 配置服务器反应编码集-->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>

修改了Server.xml文件后,之后的一切中文传输没有经过filter都会变乱码,无论是否设置了String name=new String(request.getParameter(“name”).getBytes(“ISO-8859-1”),”UTF-8”);

转载:http://blog.csdn.net/techbirds_bao/article/details/8243800#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值