使用过滤器解决全站中文乱码问题
2017-07-30 10:19
330 查看
package com.tinysoft.cn; 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; /** * 解决中文乱码问题,使用过滤器,对整个应用的编码和解码进行约定,这样就不会编解码不一致而导致中文乱码问题 * @author 董乐强 2017-7-29 * */ public class SetAllCharacterEncodingFilter implements Filter { private FilterConfig filterConfig; public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub this.filterConfig = filterConfig; } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request; HttpServletResponse response; try { request = (HttpServletRequest) req; response=(HttpServletResponse) resp; } catch (Exception e) { throw new RuntimeException("non-http request"); } String encoding = "UTF-8";//默认为UTF-8 //得到用于配置的参数 String value = filterConfig.getInitParameter("encoding"); if(value!=null) encoding=value; //这个只使用Post的请求方式 request.setCharacterEncoding(encoding); response.setContentType("text/html;charset="+encoding); //处理Get方式提交请求的过滤方式 MyHttpServletRequest mrequest = new MyHttpServletRequest(request); chain.doFilter(mrequest, response); } public void destroy() { // TODO Auto-generated method stu } } //在不改写已有类的基础上,为其加功能 class MyHttpServletRequest extends HttpServletRequestWrapper{ private HttpServletRequest request; public MyHttpServletRequest(HttpServletRequest request) { super(request); this.request = request; } //这段是get方式的核心过滤中文乱码问题 @Override public String getParameter(String name) { String value = request.getParameter(name); if(value==null) return value; try { if("get".equalsIgnoreCase(request.getMethod())) value = new String(value.getBytes("ISO-8859-1"),request.getCharacterEncoding()); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return value; } }
相关文章推荐
- 解决页面中文的乱码问题,使用过滤器为所有页面配置编码格式,解决大部分的中文乱码问题
- Post与Get提交使用过滤器解决中文乱码问题
- 使用过滤器解决中文乱码问题
- 04_过滤器Filter_05_Filter解决全站中文乱码问题(POST方式)
- 用过滤器解决全站中文数据提交乱码问题
- 使用过滤器(Filter)解决请求参数中文乱码问题(复杂方式)
- 使用过滤器解决中文乱码问题
- 在JSP中使用过滤器解决中文乱码问题
- JavaWeb学习篇——使用过滤器及装饰器设计模式解决全站乱码问题
- struts使用过滤器解决中文乱码问题
- 使用过滤器Filter解决Java系统中中文乱码的问题
- 使用过滤器(Filter)解决请求参数中文乱码问题(复杂方式)
- Filter 过滤器解决全站中文乱码问题
- 使用过滤器(Filter)解决请求参数中文乱码问题(复杂方式)
- JavaWeb中使用过滤器来解决中文乱码问题
- 过滤器案例----解决全站中文乱码问题
- VC轻松解析XML文件--CMarkup使用方法(解决解析中文字符出现乱码问题)
- Spring mvc 实例--使用velocity视图,解决中文乱码问题
- 过滤器 -- 解决中文乱码问题
- 在win7下使用zend studio 7.1.0,解决汉化、中文乱码、js等问题