解决spring3 mvc中乱码的问题(转)

今天搭建spring3 mvc框架的时候,发现居然又出现了乱码(万恶的iso编码啊),想起之前解决post提交乱码问题一般都是写一个filter,在filter中实现编码的转换,配置方法是是在web.xml中加入以下代码:

[html] view plaincopy

  1. <filter>
  2. <filter-name>Character Encoding</filter-name>
  3. <filter-class>com.filter.CharacterEncodingFilter</filter-class>
  4. <init-param>
  5. <param-name>encoding</param-name>
  6. <param-value>UTF-8</param-value>
  7. </init-param>
  8. </filter>
  9. <filter-mapping>
  10. <filter-name>Character Encoding</filter-name>
  11. <url-pattern>/*</url-pattern>
  12. </filter-mapping>

其中:com.filter.CharacterEncodingFilter是自己实现的过滤器,具体写法可以参考tomcat6中webapps\examples\WEB-INF\classes\filters下SetCharacterEncodingFilter这个类。

觉得这样做有点麻烦,百度了一下,发spring中自带了一个设置编码的过滤器org.springframework.web.filter.CharacterEncodingFilter,所以在web.xml中可以改成这样:

[html] view plaincopy

  1. <filter>
  2. <filter-name>Character Encoding</filter-name>
  3. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  4. <init-param>
  5. <param-name>encoding</param-name>
  6. <param-value>UTF-8</param-value>
  7. </init-param>
  8. </filter>
  9. <filter-mapping>
  10. <filter-name>Character Encoding</filter-name>
  11. <url-pattern>/*</url-pattern>
  12. </filter-mapping>

这样就不用自己写过滤器了。

但是还是觉得有点麻烦,因为使用spring mvc的时候,已经在web.xml中设置了servlet:

[html] view plaincopy

  1. <servlet>
  2. <servlet-name>spring</servlet-name>
  3. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  4. <load-on-startup>1</load-on-startup>
  5. </servlet>
  6. <servlet-mapping>
  7. <servlet-name>spring</servlet-name>
  8. <url-pattern>*.do</url-pattern>
  9. </servlet-mapping>

上面已经对请求做了一次过滤,如果再加一个过滤器感觉有点多余,直接改一下DispatcherServlet这个类,使它具有修改编码的功能不是更好?于是就写了一个新的类,继承自DispatcherServlet,代码如下:

[java] view plaincopy

  1. package com.mocha.servlet;
  2. import javax.servlet.ServletConfig;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. import org.springframework.web.servlet.DispatcherServlet;
  7. public class EncodingDispatcherServlet extends DispatcherServlet {
  8. private String encoding;
  9. public void init(ServletConfig config) throws ServletException {
  10. encoding = config.getInitParameter("encoding");
  11. super.init(config);
  12. }
  13. protected void doService(HttpServletRequest request, HttpServletResponse response) throws Exception {
  14. request.setCharacterEncoding(encoding);
  15. super.doService(request, response);
  16. }
  17. }

然后将web.xml中的配置改为:

[html] view plaincopy

  1. <servlet>
  2. <servlet-name>spring</servlet-name>
  3. <servlet-class>com.mocha.servlet.EncodingDispatcherServlet</servlet-class>
  4. <load-on-startup>1</load-on-startup>
  5. <init-param>
  6. <param-name>encoding</param-name>
  7. <param-value>UTF-8</param-value>
  8. </init-param>
  9. </servlet>
  10. <servlet-mapping>
  11. <servlet-name>spring</servlet-name>
  12. <url-pattern>*.do</url-pattern>
  13. </servlet-mapping>

OK,乱码消失,现在总结一下乱码的问题,get方法乱码解决方法一般是将tomcat中conf目录下server.xml文件中加入

[html] view plaincopy

  1. <Connector port="8080" maxHttpHeaderSize="8192"
  2. maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
  3. enableLookups="false" redirectPort="8443" acceptCount="100"
  4. connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />

而post方法解决乱码是设置一个专门处理编码转换的filter或者servlet。

时间: 2024-11-06 09:55:09

解决spring3 mvc中乱码的问题(转)的相关文章

解决Spring MVC ResponseBody 乱码问题

解决Spring MVC ResponseBody 乱码问题 @RequestMapping(value="qxyjqyresult",produces = "plain/text; charset=UTF-8") @ResponseBody public String getQxyjqyResult(String filename) throws Throwable { return "中文" }

在Spring3 MVC中五步配置集成注解方式Hibernate3

最近在搞一个WEB项目,以前在公司做项目用的都是JPA做ORM持久层,这次这个项目是我自己接的,我决定改一下,用Hibernate3来做ORM持久层.于是我网上搜索了Hibernate3怎么配置集成到Spring3 MVC上,发现千奇百怪,而且很多都是不是基于注解方式配置,显然那些文字上面的配置方式已经跟如今的Hibernate3注解支持方式脱节了,于是我决定自己搞一把,首先说一下网上那些配置方式的不好的地方,很多文章都提到要jdbc.properties文件与Hibernate config文

【转】解决spring mvc 中ajax返回json乱码问题

转载自:http://my.oschina.net/u/140421/blog/176625 转载自:http://my.oschina.net/candon/blog/149073?fromerr=I9VBOy62 第一个转载: 在使用spring-mvc的mvc的时候既享受它带来的便捷,又头痛它的一些问题,比如经典的中文乱码问题.现在是用json作为客户端和服务端 的数据交换格式貌似很流行,但是在springmvc中有时候会因为我们的各种疏忽从而造成页面ajax请求到的相应数据,如果带有中文

彻底解决Spring MVC 中文乱码 问题

目录(?)[+] 1:表单提交controller获得中文参数后乱码解决方案 注意: jsp页面编码设置为UTF-8 form表单提交方式为必须为post,get方式下面spring编码过滤器不起效果 [html] view plain copy <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> [html] view plain copy <

彻底解决Spring mvc中时间的转换和序列化等问题

痛点 在使用Spring mvc 进行开发时我们经常遇到前端传来的某种格式的时间字符串无法用java8的新特性java.time包下的具体类型参数来直接接收. 我们使用含有java.time封装类型的参数接收也会报反序列化问题,在返回前端带时间类型的同样会出现一些格式化的问题.今天我们来彻底解决他们. 建议 其实最科学的建议统一使用时间戳来代表时间.这个是最完美的,避免了前端浏览器的兼容性问题,同时也避免了其它一些中间件的序列化/反序列化问题.但是用时间表达可能更清晰语义化.两种方式各有千秋,如

解决Spring MVC中文乱码

在web.xml中设置编码过滤器 <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name>

解决在eclipse中乱码编码问题

点击edit set encoding 发现zend和eclipse的设置都大同小异差不多.

解决Spring Mvc中对象绑定参数重名的问题

html页面 <form method='post' action='url'> 用户名 <input type='text' name='name'> 用户id <input type='text' name='id'> 食品名 <input type='text' name='name'> 食品id <input type='text' name='id'> <input type='text' name='age'> <i

Spring MVC中@ResponseBody 返回中文字符串乱码问题

在MVC配置文件中配置 <mvc:annotation-driven> <!-- 解决@ResponseBody返回中文乱码 --> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name