您的位置:首页 > 其它

使用过滤器解决中文编码问题

2014-04-02 00:00 351 查看
摘要: 使用过滤器解决中文编码问题

package com.techsboy.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 com.techsboy.wraper.MyHttpServletRequest;
public class EncodingFilter implements Filter {
private FilterConfig config;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
config = filterConfig;
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
//过滤前处理
String encoding = config.getInitParameter("encoding");
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
response.setContentType("text/html;charset=" + encoding);
MyHttpServletRequest myRequest = new MyHttpServletRequest(request);
//放行
chain.doFilter(myRequest, response);
}
@Override
public void destroy() {
}
}

package com.techsboy.wraper;
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
/**
*
* @author Speeddsy
*
* 通过继承HttpServletRequestWrapper包装类覆盖需要改写的方法getParameter,
* 如果获取参数是通过get方式传递过来的,处理中文编码问题
*/
public class MyHttpServletRequest extends HttpServletRequestWrapper {
public MyHttpServletRequest(HttpServletRequest request) {
super(request);
}
@Override
public String getParameter(String name) {
String value = super.getParameter(name);
if(value!=null){
String method = super.getMethod();
if ("get".equalsIgnoreCase(method)) {
try { // 处理get方式传递的参数默认使用ISO-8859-1编码,因此可通过下一行代码解决中文乱码问题
return new String(value.getBytes("ISO-8859-1"),
super.getCharacterEncoding());
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
}
return value;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  过滤器 编码
相关文章推荐