实现了全站的编码过滤,并且实现了,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;
}