Spring mvc过滤器不起作用

时间:2018-06-05 04:12:59

标签: java spring-mvc filter

我正在学习SpringMVC。我使用的版本是4.2.5.RELEASE。我在GET中配置的过滤器似乎不起作用

服务器:Tomcat 7

问题:当我使用web.xml方法传入中文参数时,即使我为UTF-8编码转换配置了过滤器,但我得到的字符串仍然是乱码< / p>

<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>/*</url-pattern> </filter-mapping>

Controller

我认为我的配置没有错误

@RequestMapping(value = "/user/info", method = RequestMethod.GET) public String getInfo(HttpServletRequest request, @RequestParam("username") String username, Model model) { UserInfo userInfo = new UserInfo(username, "xxx", "xxx"); Logger.i(userInfo.toString()); model.addAttribute("info", userInfo); return "user/info"; }

request.getCharacterEncoding()

当我传入中文参数时,控制台打印的信息是乱码,返回前面是乱码。 而try { username = new String(username.getBytes("ISO-8859-1"), "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } 返回的是“UTF-8”

但是当我使用时:

<!-- Custom styles for this template -->
<link href="css/heroic-features.css" rel="stylesheet">

<!-- Bootstrap core JavaScript -->
<script src="vendor/jquery/jquery.min.js"></script>
<script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>

它可以正常显示。

所以我更改了Tomcat的默认编码并将其更改为UTF-8。之后,即使我没有在代码中执行转码,我也可以获得正确的参数。

问题:所以我很困惑,过滤器没有效果。

我想对你的热情表示衷心的感谢。谢谢!

1 个答案:

答案 0 :(得分:0)

您是否尝试过配置Tomcat&#39; server.xml?尝试将URIEncoding="UTF-8"属性设置为Connector组件:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           URIencoding="UTF-8"
           redirectPort="8443" />

您可以获得更多信息here