全站編碼問題 請求和響應編碼的處理

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

	}

}


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