gpt4 book ai didi

java - Spring mvc过滤器不生效

转载 作者:太空宇宙 更新时间:2023-11-04 10:24:32 24 4
gpt4 key购买 nike

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

服务器:Tomcat 7

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

web.xml:

<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() 返回的是“UTF-8”

但是当我使用时:

try {
username = new String(username.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

可以正常显示。

所以我把Tomcat的默认编码改成了UTF-8。之后,即使我在代码中不进行转码,也能得到正确的参数。

问题:所以我很疑惑滤镜没有效果。

我谨对您的热情表示衷心的感谢。谢谢!

最佳答案

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

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

您可以获取更多信息here

关于java - Spring mvc过滤器不生效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50691920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com