- package cn.edu.itcast.filter;
- import java.io.IOException;
- import java.io.UnsupportedEncodingException;
- 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.HttpServletRequestWrapper;
- import javax.servlet.http.HttpServletResponse;
- // 解决全站中文乱码的问题
- public class AllCharacterFilter implements Filter{
- private FilterConfig filterConfig ;
- @Override
- public void init(FilterConfig arg0) throws ServletException {
- this.filterConfig = arg0 ;
- }
- @Override
- public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
- System.out.println("整站中文过滤器开始............");
- HttpServletRequest request = (HttpServletRequest)req ;
- HttpServletResponse response = (HttpServletResponse)res ;
- String encoding = filterConfig.getInitParameter("encoding");
- if(encoding == null){
- encoding = "UTF-8" ;
- }
- // 默认只能解决POST方式的中文乱码问题
- request.setCharacterEncoding(encoding) ;
- response.setCharacterEncoding(encoding) ;
- response.setContentType("text/html;charset="+encoding) ;
- MyHttpServletRequest myRequest = new MyHttpServletRequest(request);
- chain.doFilter(myRequest, response) ;
- System.out.println("整站中文过滤器结束............");
- }
- @Override
- public void destroy() {
- }
- }
- // 包装设计模式修改GET请求处理方式
- class MyHttpServletRequest extends HttpServletRequestWrapper
- {
- public MyHttpServletRequest(HttpServletRequest request)
- {
- super(request);
- }
- @Override
- public String getParameter(String name)
- {
- String value = super.getParameter(name) ;
- if(value != null)
- {
- String method = super.getMethod() ;
- if("get".equalsIgnoreCase(method))
- {
- try
- {
- value = new String (value.getBytes("ISO-8859-1"),super.getCharacterEncoding()) ;
- } catch (UnsupportedEncodingException e)
- {
- e.printStackTrace();
- }
- }
- }
- return value ;
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/2412201514296.html
来源: http://www.codesnippet.cn/detail/2412201514296.html