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

当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 {

	}

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章