①解决全站post和个get提交乱码
public class CharacterEncodingFilter implements Filter {
@Override
public void destroy() {
}
private String encoding;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
encoding = filterConfig.getInitParameter("encoding"); // 获取配置文件中的参数,此处是获得字符编码
}
@Override
public void doFilter(ServletRequest request, ServletResponseresponse,
FilterChain chain) throws IOException, ServletException {
//post提交乱码
request.setCharacterEncoding(encoding);
HttpServletRequest req =(HttpServletRequest) request;
if(req.getMethod().equals("GET")){
request = new MyRequest(req);
}
chain.doFilter(request, response);
}
}
class MyRequest extends HttpServletRequestWrapper{ // 这里只重写getParameters,有需要可以重写其他获得参数的方法
public MyRequest(HttpServletRequestrequest) {
super(request);
}
@Override
public StringgetParameter(String name) {
String val = super.getParameter(name);
if(val != null){
try {
val = new String(val.getBytes("ISO-8859-1"),super.getCharacterEncoding());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return super.getParameter(name);
}
}