全站编码有关问题 请求和响应编码的处理
全站编码问题 请求和响应编码的处理
创建过滤器,过滤中文编码
当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 { } }
版权声明:本文为博主原创文章,未经博主允许不得转载。