今天敲了一个springMVC的中文文件下载的小项目,但是一直出现问题
提示是文件不存在。然后到控制器类去打印文件名,发现是以问号的形式传进来的。
查看了各项编码设置,都没有问题。百度类似问题,看到有一条重要线索:web.xml中的编码过滤器对get方法无效!
也就是下图中的编码配置器
后来将jsp页面的以get的请求方式换成<form>表单格式的post方式上传。
最后问题成功得到解决!
重点:web.xml文件中的编码过滤器对get请求方式无效。遇到中文乱码问题各种方法尝试不成功后可以借鉴此文!
Get乱码的原因是Tomcat对get和post两种提交方式的处理方法不一样造成的,在进行post请求时,Tomcat会仍然使用request.setCharacterEncoding方法设置的编码来处理,如果没有设置,则会默认ISO8859-1编码,但是get请求则不相同,Tomcat对于get请求不会使用request.setCharacterEncoding方法设置的编码,而只会使用ISO8859-1的编码