您的位置:首页 > 其它

Servlet——解决全站乱码问题(过滤器)

2017-06-21 19:30 381 查看
package com.hongyi.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.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
/**
* 解决全站乱码问题
*/
public class CharacterEnCodingFilter implements Filter {

public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
//对request/response进行预处理
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset-utf-8");

MyCharacterEnCodingRequest requestWrapper = new        MyCharacterEnCodingRequest(request);

//执行后面的拦截器(如果有的话)
chain.doFilter(requestWrapper, response);
}

public void init(FilterConfig config) throws ServletException {

}
public void destroy() {

}

}
//解决get请求的乱码问题
class MyCharacterEnCodingRequest extends HttpServletRequestWrapper{

private HttpServletRequest request;
public MyCharacterEnCodingRequest(HttpServletRequest request) {
super(request);
this.request = request;
}
@Override
public String getParameter(String name) {
try {
String value = this.request.getParameter(name);
if(value==null){
return null;
}
if(this.request.getMethod().equalsIgnoreCase("post")){
return value;
}else{
value = new String(value.getBytes("utf-8"),this.request.getCharacterEncoding());
return value;
}

} catch (Exception e) {
throw new RuntimeException(e);
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  servlet