解决spring3 mvc中乱码的问题。
来源:互联网 发布:g3网络推广石家庄分站 编辑:程序博客网 时间:2024/04/24 15:02
今天搭建spring3 mvc框架的时候,发现居然又出现了乱码(万恶的iso编码啊),想起之前解决post提交乱码问题一般都是写一个filter,在filter中实现编码的转换,配置方法是是在web.xml中加入以下代码:
<filter> <filter-name>Character Encoding</filter-name> <filter-class>com.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
其中:com.filter.CharacterEncodingFilt
觉得这样做有点麻烦,百度了一下,发spring中自带了一个设置编码的过滤器org.springframework.web.filter.CharacterEncodingFilter,所以在web.xml中可以改成这样:
<filter> <filter-name>Character Encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
这样就不用自己写过滤器了。
但是还是觉得有点麻烦,因为使用spring mvc的时候,已经在web.xml中设置了servlet:
<servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
上面已经对请求做了一次过滤,如果再加一个过滤器感觉有点多余,直接改一下DispatcherServlet这个类,使它具有修改编码的功能不是更好?于是就写了一个新的类,继承自DispatcherServlet,代码如下:
package com.mocha.servlet;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.DispatcherServlet;public class EncodingDispatcherServlet extends DispatcherServlet { private String encoding; public void init(ServletConfig config) throws ServletException { encoding = config.getInitParameter("encoding"); super.init(config); } protected void doService(HttpServletRequest request, HttpServletResponse response) throws Exception { request.setCharacterEncoding(encoding); super.doService(request, response); }}
然后将web.xml中的配置改为:
<servlet> <servlet-name>spring</servlet-name> <servlet-class>com.mocha.servlet.EncodingDispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
OK,乱码消失,现在总结一下乱码的问题,get方法乱码解决方法一般是将tomcat中conf目录下server.xml文件中加入
<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />
而post方法解决乱码是设置一个专门处理编码转换的filter或者servlet。
- 解决spring3 mvc中乱码的问题。
- 解决spring3 mvc中乱码的问题。
- 解决spring3 mvc中乱码的问题。
- 解决spring3 mvc中乱码的问题。
- 解决spring3 mvc中乱码的问题
- 解决spring3 mvc中乱码的问题。
- 解决spring3 mvc中乱码的问题。
- spring3 mvc中POST和GET乱码的解决
- spring3 mvc中POST和GET乱码的解决
- 解决spring mvc中乱码的问题。
- spring3 mvc框架乱码问题
- Spring3 MVC使用@ResponseBody的乱码问题及解决办法
- Spring3 MVC使用@ResponseBody的乱码问题及解决办法
- Spring3 MVC使用@ResponseBody的乱码问题及解决办法
- Spring MVC 中解决中文乱码的问题
- 解决Spring MVC中传值乱码的问题
- 解决Spring3.0 MVC @ResponseBody Ajax返回中文乱码
- 解决spring mvc 乱码问题
- Linux系统32位与64位数据类型长度比较
- Ubuntu dpkg和apt
- maven 简单实用教程
- oracle回闪操作
- 数字转换成指定进制的数字字符串
- 解决spring3 mvc中乱码的问题。
- oracle实时性能诊断命令
- yii中添加meta信息
- EAS703参数设置问题
- 虚拟机的内存管理
- 一段很有意思的代码
- jQuery的强大选择器详解
- Math取整方法
- js中preventDefault和stopPropagation