动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

Spring MVC乱码问题解决方案

09-03 17:48 60浏览
举报 T字号
  • 大字
  • 中字
  • 小字

我们在使用Spring MVC java Web项目时,乱码问题时常都会出现,解决方法也不尽相同,有简单也有复杂的;本文我们就来讲一讲Spring MVC乱码问题解决方案

大家集中精神以下为大家介绍几种常见的Spring MVC乱码问题解决方

1.post乱码

web.xml中加入:

<filter>

<filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

2.Get请求乱码

原因分析Get请求参数是通过请求首行中的 URI 发送给Web服务器( Tomcat )的。

Tomcat 服务器会对 URI 进行编码操作(此时使用的是 Tomcat 设置的字符集,默认是 iso8859- 1 )到了我们的应用程序中的请求参数,已经是被 Tomcat 使用 ISO8859-1 字符集进行编码之后的了。

 

解决方法一:

修改tomcat配置文件,指定UTF-8编码,如下:

 

protocol="HTTP/1.1" redirectPort="8443"/>

解决方法二:

对请求参数进行重新编码,如下:

String username = request.getParamter("userName");

username = new String(username.getBytes("ISO8859-1"),"utf-8") ;

解决方法三:

过滤器+请求装饰器统一解决请求乱码

MyRequestWrapper

MyCharacterEncodingFilter

3.响应乱码

使用 @RequestMapping 注解中的 produces 属性,指定响应体中的编码格式。

// @RequestMapping注解中的consumes和produces分别是为请求头和响应头设置contentType

@RequestMapping(value = "findUserById", produces = "text/plain;charset=UTF8")

@ResponseBody

public String findUserById(Integer id) {

// 在使用@ResponseBody注解的前提下

// 如果返回值是String类型,则返回值会由StringHttpMessageConverter进行处理

return "查询失败";

}

如果加入了Spring框架之后就不一样了,可以采用Spring框架自带的过滤器CharacterEncodingFilter,这样可以大大减轻了我们的工作量,即简单方便又容易理解,配置方式如下:在web.xml文件中filter的位置加上如下内容

<filter>

<filter-name>encodingFilter</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>

<init-param>

<param-name>forceEncoding</param-name>

<param-value>true</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>encodingFilter</filter-name>

<url-pattern>*.htm</url-pattern>

</filter-mapping>

springmvc实现上传文件代码片段

<?xml version="1.0" encoding="UTF-8"?>

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" /></bean>

@Controller

@RequestMapping("/common")

public class CommonController {

@RequestMapping(value = "/upload")

public @ResponseBody String upload(@RequestParam("file") MultipartFile file, HttpSession session) throws Exception {

File localFile = new File("c:/test/a.rar");

file.transferTo(localFile);

return "success";

}

}

通过以上Spring MVC乱码问题解决方案基本上就能轻松解决Spring MVC中的大部分乱码问题了。

需要的小伙伴可以收藏这几个方法,基本上可以解决大部分的Spring MVC乱码问题。在本站的Spring MVC视频教程中还有许多的乱码问题的实例,感兴趣的小伙伴可以去学习,通过实践,举一反三,直到彻底掌握方法。

0人推荐
共同学习,写下你的评论
0条评论
代码小兵1268
程序员代码小兵1268

11篇文章贡献53362字

作者相关文章更多>

推荐相关文章更多>

DOM渲染的详细过程

QCode09-04 14:38

CSS水平和垂直居中技巧大梳理

Code大师09-04 14:50

mui的input框在IOS系统下无法聚焦或点击多次才能聚焦

不写代码你养我啊08-23 11:14

推荐的-视.频播放器以及在线客服

不写代码你养我啊09-17 18:02

谈谈java多线程的三大特性

要学习了06-18 18:13

发评论

举报

0/150

取消