实现了全站的编码过滤,并且实现了,get请求编码过滤
public class EncodeFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
MyRequest myReq = new MyRequest(req);
chain.doFilter(myReq, response);
}
public void destroy() {
}
}
class MyRequest extends HttpServletRequestWrapper
{
ServletRequest r;
private HttpServletRequest req;
MyRequest(HttpServletRequest req)
{
super(req);
this.req = req;
}
@Override
public String getParameter(String name) {
Map<String,String[]> map = getParameterMap();
return map.get(name)[0];
}
@Override
public String[] getParameterValues(String name) {
Map<String,String[]> map = getParameterMap();
return map.get(name);
}
boolean flag = true;
@Override
public Map<String,String[]> getParameterMap() {
Map<String,String[]> map = req.getParameterMap();
if(flag){
for(Map.Entry<String, String[]> en:map.entrySet()){
String[] arr = en.getValue();
for(int i=0;i<arr.length;i++){
try {
arr[i] = new String(arr[i].getBytes("ISO8859-1"),"utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
flag = false;
}
return map;
}