您的位置:首页 > 其它

Filter解决servlet接收前台传的中文字符乱码问题

2011-11-08 09:58 465 查看
在开发jsp项目的时候,通常会遇到从前台传的值在后台servlet接收的时候是乱码,即使在jsp页面上设置了字符的编码格式。

解决方法有很多种,有一种方法是给每一个request设置字符集,不过感觉很麻烦。

设置字符集方法

String keyWords = new String(request.getParameter("keyWords").trim().getBytes("iso-8859-1"),"UTF-8");


我这里的解决方法是写一个Filter。

过滤器的代码如下:

package com;

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 FilterEncoding implements Filter {

private FilterConfig filterConfig = null;

public FilterEncoding() {
}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (request.getCharacterEncoding() == null
|| !(request.getCharacterEncoding().equals("UTF-8"))) {
try {
request.setCharacterEncoding("UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
}
try {
chain.doFilter(request, response);
} catch (ServletException sx) {
filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
filterConfig.getServletContext().log(iox.getMessage());
}
}

public void destroy() {
}

public void init(FilterConfig filterConfig) {

this.filterConfig = filterConfig;
}
}


写完之后,还得在web.xml中配置一下,加上的配置如下:

<filter>
<filter-name>filterEncoding</filter-name>
<filter-class>com.FilterEncoding</filter-class>
</filter>

<filter-mapping>
<filter-name>filterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: