完整的字符编码过滤器
字符过滤器package com.pdworld.web.filter;import java.io.IOException;import java.util.Collection;import java.util.Iterator;import java.util.Map;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;import javax.servlet.http.HttpServletResponse;public class Encode implements Filter {private String encode;private String decode;public void destroy() {}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {HttpServletRequest req=(HttpServletRequest)request;HttpServletResponse resp=(HttpServletResponse)response;//获得请求方式String method=req.getMethod();//post 请求可直接设置编码方式if("post".equalsIgnoreCase(method)){System.out.println("进行编码!");request.setCharacterEncoding("GBK");response.setCharacterEncoding("GBK");}else{//get 请求//从请求中获得所有参数的键值对Map params=req.getParameterMap();//获得所有参数的值Collection c=params.values();//迭代出每一个参数for(Iterator it=c.iterator();it.hasNext();){String[] values=(String[])it.next();//对每一个字符进行重新的编码解码for(int i=0;i<values.length;i++){values=new String(values.getBytes(encode),decode);}}//将回复的编码设置为utf-8response.setCharacterEncoding("GBK");}//将请求传递到下一个环节chain.doFilter(request, response);}public void init(FilterConfig config) throws ServletException {encode=config.getInitParameter("encode");decode=config.getInitParameter("decode"); }}
页:
[1]