1、建立CharFilter.java
package cn.itcast.pub; import java.io.IOException; import java.util.Map; import java.util.Set; 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 CharFilter implements Filter { private FilterConfig filterConfig = null; public void destroy() { this.filterConfig = null; } @SuppressWarnings("unchecked") public void doFilter(ServletRequest req, ServletResponse response, FilterChain chain) throws IOException, ServletException { String encoding = this.filterConfig.getInitParameter("encoding"); HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse resp = (HttpServletResponse) response; request.setCharacterEncoding(encoding); resp.setContentType("text/html;charset="+encoding); System.out.println(request.getQueryString()); // 处理GET参数 if (request.getMethod().equalsIgnoreCase("get")) { Map paramMap = req.getParameterMap(); String[] queryStringArray = { "" }; if (request.getQueryString() != null) { queryStringArray = request.getQueryString().split("&"); } for (int i = 0; i < queryStringArray.length; i++) { queryStringArray[i] = queryStringArray[i].replaceAll("(.*)=(.*)", "$1"); } Set<String> keySet = paramMap.keySet(); for (String key : keySet) { // check where param from boolean isFromGet = false; for (String paramFromGet : queryStringArray) { if (key.equals(paramFromGet)) { isFromGet = true; } } if (!isFromGet) { continue; } String[] paramArray = (String[]) paramMap.get(key); for (int i = 0; i < paramArray.length; i++) { paramArray[i] = new String(paramArray[i].getBytes("iso-8859-1"), encoding); } } } chain.doFilter(req, resp); } public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; } }
?2、web.xml
<!-- Filter 定义 --> <!-- GET Character Encoding filter --> <filter> <filter-name>CharFilter</filter-name> <filter-class>net.hlj.common.filter.CharFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <!-- Filter 映射 --> <filter-mapping> <filter-name>CharFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
?