Spring MVC POST中文乱码解决方案

简介:

POST中文乱码解决方案

以前,我都是自己编写一个filter,来实现编码,代码如下:

复制代码
 1 public class CharacterEncodingFilter implements Filter {
 2 
 3     private final static Logger log= LoggerFactory.getLogger(CharacterEncodingFilter.class);
 4 
 5     private String characterEncoding; //编码方式配置在web.xml文件中
 6     private boolean enabled;   //是否启用此Filter,配置在web.xml中
 7 
 8     @Override
 9     public void destroy() {
10         characterEncoding = null;
11     }
12 
13     @Override
14     public void doFilter(ServletRequest request, ServletResponse response,
15                          FilterChain chain) throws IOException, ServletException {
16         if (enabled || characterEncoding != null) {
17             request.setCharacterEncoding(characterEncoding);
18             response.setCharacterEncoding(characterEncoding);
19         }
20         chain.doFilter(request, response);
21     }
22 
23     @Override
24     public void init(FilterConfig config) throws ServletException {
25         characterEncoding = config.getInitParameter("characterEncoding");
26         enabled = "true".equalsIgnoreCase(config.getInitParameter("enabled").trim());
27     }
28 }
复制代码

然后自己在web.xml文件中做如下配置

复制代码
 1  <filter>
 2         <filter-name>characterEncodingFilter</filter-name>
 3         <filter-class>training.model.filter.CharacterEncodingFilter</filter-class>
 4         <init-param>
 5             <param-name>characterEncoding</param-name>
 6             <param-value>UTF-8</param-value>
 7         </init-param>
 8         <init-param>
 9             <param-name>enabled</param-name>
10             <param-value>true</param-value>
11         </init-param>
12     </filter>
13     <filter-mapping>
14         <filter-name>characterEncodingFilter</filter-name>
15         <url-pattern>/*</url-pattern>
16     </filter-mapping>
复制代码

其实我们可以不必这么麻烦,重复造轮子。

spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于解决POST方式造成的中文乱码问题,具体配置如下:

复制代码
 1 <filter>  
 2     <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>  
11     <url-pattern>/*</url-pattern>  
12 </filter-mapping>  
复制代码

  以后我们项目及所有页面的编码均为UTF-8。


目录
相关文章
|
4天前
|
设计模式 前端开发 Java
初识Spring MVC
初识Spring MVC
10 0
|
4天前
|
前端开发 Java 应用服务中间件
Spring MVC框架概述
Spring MVC 是一个基于Java的轻量级Web框架,采用MVC设计模型实现请求驱动的松耦合应用开发。框架包括DispatcherServlet、HandlerMapping、Handler、HandlerAdapter、ViewResolver核心组件。DispatcherServlet协调这些组件处理HTTP请求和响应,Controller处理业务逻辑,Model封装数据,View负责渲染。通过注解@Controller、@RequestMapping等简化开发,支持RESTful请求。Spring MVC具有清晰的角色分配、Spring框架集成、多种视图技术支持以及异常处理等优点。
11 1
|
6天前
|
监控 前端开发 Java
SpringBoot与SpringMVC有哪些区别?
SpringBoot和SpringMVC是Java开发中常用的两个框架,它们都是由Spring框架所提供的,但在功能和使用方式上有着一些区别。
21 2
|
1月前
|
数据采集 前端开发 Java
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
23 3
|
1月前
|
存储 前端开发 Java
会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes
会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes
14 1
|
1月前
|
前端开发 Java Spring
数据之桥:深入Spring MVC中传递数据给视图的实用指南
数据之桥:深入Spring MVC中传递数据给视图的实用指南
33 3
|
1月前
|
前端开发 Java 容器
家族传承:Spring MVC中父子容器的搭建与管理指南
家族传承:Spring MVC中父子容器的搭建与管理指南
26 3
|
1月前
|
前端开发 Java API
头头是道:揭示Spring MVC如何获取和处理请求头数据
头头是道:揭示Spring MVC如何获取和处理请求头数据
26 1
|
1月前
|
前端开发 Java API
饼干探秘:深入Spring MVC中获取Cookie数据的技术解析
饼干探秘:深入Spring MVC中获取Cookie数据的技术解析
18 3
|
1月前
|
前端开发 Java Spring
转换之术:解析Spring MVC中类型转换器的实际运用
转换之术:解析Spring MVC中类型转换器的实际运用
22 0