新手上路第一个第一个项目,是师兄帮学校做的项目,交给了新生的我来维护,本就是一个上线项目,当我部署到云服务器上时候发现了向tomcat里请求下载文件遇到了麻烦.先上图
不管怎么请求都进入不了这个方法....
这问题困扰了我三天,一开始发现乱码都在想是请求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的卑微码农,觉得好用记得点赞收藏!!!