填坑之路!细谈tomcat版本编码上的坑

新手上路第一个第一个项目,是师兄帮学校做的项目,交给了新生的我来维护,本就是一个上线项目,当我部署到云服务器上时候发现了向tomcat里请求下载文件遇到了麻烦.先上图

填坑之路!细谈tomcat版本编码上的坑_第1张图片

填坑之路!细谈tomcat版本编码上的坑_第2张图片

不管怎么请求都进入不了这个方法....

这问题困扰了我三天,一开始发现乱码都在想是请求url的乱码问题,前后端统一编码的问题,

吭哧吭哧debug了两天,发现一点头绪都没有.

今天又坐在项目前,突然想起这并不是向后台代码发送请求, 这是直接向tomcat服务器要文件..然后就去问师兄用的是tomcat哪个版本部署了,一问才知道他用的是tomcat9,而我用的是tomcat7..

(这也是另一个师兄给我的坑,他竟然和我说tomcat789没有什么关系??)

然后我就用了tomcat8 和9都部署了一遍,发现可以请求到文件了..

这里就说一下tomcat7、8和9的编码区别

tomcat7版本GET请求默认用的是 ISO-8859-1,

而tomcat8和9版本GET请求则是默认用 UTF-8,

这也是为什么路径乱码问题tomcat7不能解码,而tomcat8和9可以解码的关键所在.

希望新手可以少走一些坑.

 

顺提一下云服务器部署的问题:如果docker启动的tomcat访问不了的话,不过就是这样的tomcat启动是很慢的...需要耐心等待他启动成功..我开始也犯了心急的病,一直很烦躁为什么访问不了tomcat。

也可以用以下命令进入容器查看启动日志,查看启动成功与否。

docker exec -it tomcat bash

 

2020/4/11补充:

修改tomcat默认编码:

修改tomcat下的conf/server.xml文件

找到如下代码:    

这段代码规定了Tomcat监听HTTP请求的端口号等信息。

可以在这里添加一个属性:URIEncoding,将该属性值设置为UTF-8,即可让Tomcat(默认ISO-8859-1编码)以UTF-8的编码处理get请求。

修改完成后:

如果提交方式为post,想不乱码,只需要设置request对象的编码即可。

 


有什么问题可以评论或者私信我,每日在线解(LIAO)疑(SAO)。

我是大誌,一位准备996的卑微码农,觉得好用记得点赞收藏!!!

你可能感兴趣的:(Bug)