SpringMVC中jsp页面传中文到controller变成问号的可能原因。

今天敲了一个springMVC的中文文件下载的小项目,但是一直出现问题SpringMVC中jsp页面传中文到controller变成问号的可能原因。

提示是文件不存在。然后到控制器类去打印文件名,发现是以问号的形式传进来的。

SpringMVC中jsp页面传中文到controller变成问号的可能原因。

查看了各项编码设置,都没有问题。百度类似问题,看到有一条重要线索:web.xml中的编码过滤器对get方法无效!

也就是下图中的编码配置器

SpringMVC中jsp页面传中文到controller变成问号的可能原因。

后来将jsp页面的以get的请求方式换成<form>表单格式的post方式上传。

SpringMVC中jsp页面传中文到controller变成问号的可能原因。

最后问题成功得到解决!

重点:web.xml文件中的编码过滤器对get请求方式无效。遇到中文乱码问题各种方法尝试不成功后可以借鉴此文!

Get乱码的原因是Tomcat对get和post两种提交方式的处理方法不一样造成的,在进行post请求时,Tomcat会仍然使用request.setCharacterEncoding方法设置的编码来处理,如果没有设置,则会默认ISO8859-1编码,但是get请求则不相同,Tomcat对于get请求不会使用request.setCharacterEncoding方法设置的编码,而只会使用ISO8859-1的编码