采用Filter的方法解决Servlet的编码问题
2013-07-08 10:14
513 查看
这样比你自己在Servlet代码中硬编码request.setCharacterEncoding, response.setCharacterEncoding方便多了
总之,如果你添加了这个filter,配置好了web.xml,那么如果还出现乱码问题,你就去检查你的JSP和HTML代码中的encoding选项吧(charset, pageEncoding, meta.content之类的),看看是否和你在web.xml中配置的filter的encoding相匹配
CharacterEncodingFilter.java
web.xml
总之,如果你添加了这个filter,配置好了web.xml,那么如果还出现乱码问题,你就去检查你的JSP和HTML代码中的encoding选项吧(charset, pageEncoding, meta.content之类的),看看是否和你在web.xml中配置的filter的encoding相匹配
CharacterEncodingFilter.java
public class CharacterEncodingFilter implements Filter { protected String encoding = null; protected FilterConfig filterConfig = null; protected boolean enable = false; public void destroy() { this.encoding = null; this.filterConfig = null; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (this.enable) { String encoding = selectEncoding(request); if (encoding != null && !encoding.equals("")) { System.out.println(this + ": ignore = true " + encoding); request.setCharacterEncoding(encoding); //Overrides the name of the character encoding used in the body of this request. This method must be called prior to reading request parameters or reading input using getReader(). response.setCharacterEncoding(encoding); } } // Pass control on to the next filter chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; this.encoding = filterConfig.getInitParameter("encoding"); // String enable = filterConfig.getInitParameter("enable"); if (enable.equalsIgnoreCase("true")) { this.enable = true; } else { this.enable = false; } } protected String selectEncoding(ServletRequest request) { return (this.encoding); } }
web.xml
<filter> <filter-name>charset-encoding</filter-name> <filter-class>cn.mldn.lxh.encoding.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>enable</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>charset-encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
相关文章推荐
- 采用Filter的方法解决HttpServletRequest.getParameter乱码的问题
- jsp&servlet编码问题解决方法
- servlet简单使用filter解决编码问题
- springMvc 完美解决 multipart/form-data 方式提交请求 在 Filter 中 ServletRequest.getParameter方法 获取不到参数的问题
- springMvc 完美解决 multipart/form-data 方式提交请求 在 Filter 中 ServletRequest.getParameter方法 获取不到参数的问题
- as3中的socket的readUTFBytes方法,它的UTF指的是UTF-8,只要服务器采用UTF-8编码,传输和修改中文的问题就能解决
- springMvc 完美解决 multipart/form-data 方式提交请求 在 Filter 中 ServletRequest.getParameter方法 获取不到参数的问题
- can not be cast to javax.servlet.Filter等问题的解决方法 推荐
- 我用python将结果写入txt文件出现的编码问题及其解决方法
- WebSphere Application Server8.5中Filter没有在Servlet之前初始化的解决方法
- ruby 文件中文编码问题 导致passenger start错误的解决方法
- 严重: Exception starting filter struts2问题解决方法
- IO 流读取文件时候出现乱码 文件编码格式问题 怎么转换解决方法
- Servlet中文乱码问题及其解决方法
- Tomcat中用Filter解决JSP提交中文信息到Servlet的乱码问题
- 解决gedit中文乱码问题,采用命令行输入相关命令,简单实用的解决方法
- [JSP] 利用Filter解决Servlet输出中文乱码的问题
- qt creator修改程序编码(解决中文乱码问题)的方法
- 【转自loveifa】PHP 获取邮箱未读邮件的方法 根据receivemail改编而来,已解决乱码,编码问题
- servlet中解决get和post方法提取内容乱码问题