您的位置:首页 > 其它

全站编码问题 请求和响应编码的处理

2015-08-03 19:31 363 查看
当GET请求有中文时,对其编码工作很复杂。 可以通过过滤器的方法,实现其编码的便捷式。 GET请求时需要装饰HttpServletRequest

package cn.itcast.filter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

public class EncodingRequest extends HttpServletRequestWrapper {
private HttpServletRequest request;

public EncodingRequest(HttpServletRequest request) {
super(request);
this.request=request;

}
@Override
public String getParameter(String name) {

String value =request.getParameter(name);
try{
value = new String(value.getBytes("iso-8859-1"),"utf-8");
}catch (Exception e) {
// TODO: handle exception
}
return value;
}

}


创建过滤器,过滤中文编码

package cn.itcast.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;

public class EncodingFilter implements Filter {

public void destroy() {

}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
HttpServletRequest req = (HttpServletRequest) request;
if (req.getMethod().equalsIgnoreCase("GET")) {
EncodingRequest er = new EncodingRequest(req);
chain.doFilter(er, response); //GET请求时,掉包request
} else {
chain.doFilter(request, response);
}
}

public void init(FilterConfig fConfig) throws ServletException {

}

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