get 和 post处理乱码不一样的哦。
用过滤器,get的话,还需要在tomcat中配置下的
现在将常见的乱码问题分为JSP页面显示中文乱码、表单提交乱码两类。
1)JSP页面中显示中文乱码
在JSP文件中使用page命令指定响应结果的MIME类型,如<%@ page language="java" contentType="text/html;charset=gb2312" %>
2)表单提交乱码
表单提交时(post和Get方法),使用request.getParameter方法得到乱码,这是因为tomcat处理提交的参数时默认的是iso-8859-1,表单提交get和post处理乱码问题不同,下面分别说明。
(1)POST处理
对post提交的表单通过编写一个过滤器的方法来解决,过滤器在用户提交的数据被处理之前被调用,可以在这里改变参数的编码方式,过滤器的代码如下:
- package example.util;
-
- import java.io.IOException;
-
- import javax.servlet.Filter;
- import javax.servlet.FilterChain;
- import javax.servlet.FilterConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
-
- public class SetCharacterEncodingFilter implements Filter {
-
- protected String encoding = null;
-
- protected FilterConfig filterConfig = null;
-
- protected boolean ignore = true;
-
-
- public void destroy() {
-
- this.encoding = null;
- this.filterConfig = null;
-
- }
-
- public void doFilter(ServletRequest request, ServletResponse response,
- <strong><span style="color: #ff0000;"> FilterChain chain) throws IOException, ServletException {
-
- if (ignore || (request.getCharacterEncoding() == null)) {
- String encoding = selectEncoding(request);
- if (encoding != null) {
- request.setCharacterEncoding(encoding);
- }
- }</span>
- </strong>
-
- chain.doFilter(request, response);
-
- }
- public void init(FilterConfig filterConfig) throws ServletException {
-
- this.filterConfig = filterConfig;
- this.encoding = filterConfig.getInitParameter("encoding");
- String value = filterConfig.getInitParameter("ignore");
- if (value == null) {
- this.ignore = true;
- } else if (value.equalsIgnoreCase("true")) {
- this.ignore = true;
- } else if (value.equalsIgnoreCase("yes")) {
- this.ignore = true;
- } else {
- this.ignore = false;
- }
-
- }
-
- protected String selectEncoding(ServletRequest request) {
-
- return (this.encoding);
-
- }
-
- }
文中红色的代码即为处理乱码的代码。
web.xml文件加入过滤器
- <filter>
- <filter-name>Encoding</filter-name>
- <filter-class>
- example.util.SetCharacterEncodingFilter
- </filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>gbk</param-value>
-
- </init-param>
- <init-param>
- <param-name>ignore</param-name>
- <param-value>true</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>Encoding</filter-name>
- <servlet-name>/*</servlet-name>
- </filter-mapping>
(2) Get方法的处理
tomcat对post和get的处理方法不一样,所以过滤器不能解决get的乱码问题,它需要在其他地方设置。
打开<tomcat_home>\conf目录下server.xml文件,找到对8080端口进行服务的Connector组件的设置部分,给这个组件添加一个属性:URIEncoding="GBK"。修改后的Connector设置为:
- <Connector port="8080" maxHttpHeaderSize="8192"
- maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
- enableLookups="false" redirectPort="8443" acceptCount="100"
- connectionTimeout="20000" disableUploadTimeout="true" <span style="color: #ff0000;">URIEncoding="GBK"</span> />
* 注意修改后重新启动tomcat才能起作用。
分享到:
相关推荐
这是servlet出现乱码,以及乱码出现时的解决办法。
用ajax 通过url传参数给servlet时,在servlet提取时一直是乱码,即使用了统一的字符编码也没用。
主要是认真分析了jsp乱码产生原因及解决方案
关于java中使用servlet中解决乱码!
解决servlet页面乱码问题,对于初学者还是有帮助的
jsp+servlet+mysql乱码解决的 累积各路方法 最终终成正果
解决此问题的方法非常简单,在业务处理中重新指定中文字符集进行编码即可解决。在实际的开发过程中,如果通过每一个业务处理指定中文字符集编码,则操作过于繁琐,而且容易遗漏某一个业务中的字符编码设置;如果通过...
F:\文档\PDF格式学习资料\主题:Java Web开发(JSP、Servlet)乱码终极解决方案.txtF:\文档\PDF格式学习资料\主题:Java Web开发(JSP、Servlet)乱码终极解决方案.txtF:\文档\PDF格式学习资料\主题:Java Web开发...
Servlet + Tomcat 中文乱码的解决方法,浏览器把Unicode字符转换为GBK字符,这样页面的内容和浏览器的显示模式都设成了GBK,就不会乱码了
jsp 传参 servlet 接收中文乱码问题的解决方法 jsp 传参 servlet 接收中文乱码问题是一个经常遇到的问题,特别是在使用 Hibernate+Servlet 框架时。当我们在 jsp 页面传参到 servlet 时,中文字符经常会出现乱码...
解决jsp+servlet开发中的中文乱码问题
彻底解决Servlet及jsp解决中文乱码问题
解决servlet中文乱码问题1
最简单的写法 只要JSP页面的 编码格式和 web.xml 编码格式一样就行
讲述javaweb开发中的jsp乱码问题 get、post的区别 http协议的图解
彻底解决servlet中文乱码问题,对于gbk、utf-8、iso-8859-1之间的选择,做了详细的讲解!
JAVA 中文乱码解决问题 JAVA 中文乱码问题是开发过程中常见的问题之一,解决这个问题需要了解乱码产生的原因,然后对症下药。下面我们对容易产生乱码问题的场景进行分析,并提出解决方案。 1. 以 POST 方法提交的...
下面小编就为大家带来一篇jsp传参 servlet接收中文乱码问题的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
可以完全解决servlet的dopost和doget中文乱码还有控制台乱码的思维导图,如果觉得太少了看的不太明白,可以去看我的博客https://blog.csdn.net/qq_42495847/article/details/105293206 这个是升级版,更加给力
可以完全解决servlet的dopost和doget中文乱码的思维导图,如果觉得太少了看的不太明白,可以去看我的博客https://blog.csdn.net/qq_42495847/article/details/105237768 这个思维导图是我精华整理过的,试试上传功能