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