Tomcat部署项目,样式显示问题

文章目录

  • 项目场景:Tomcat部署Maven项目
  • 问题描述:Tomcat部署Maven项目样式加载问题
    • 问题示例图一
    • 问题示例图二
  • 原因分析:
    • Tomcat的问题
    • Maven的问题
    • 项目的问题
  • 解决方案:
    • 最后的方案
    • 图解一
    • 图解二
  • 疑惑
    • 控制台的响应内容乱码
    • 其他项目

项目场景:Tomcat部署Maven项目

使用Tomcat9部署Maven项目,启动项目页面的CSS、JS样式加载有问题


问题描述:Tomcat部署Maven项目样式加载问题

在写一个增删改查案例时,一直是使用Tomact插件运行编写代码,没有什么问题;在编写完后,使用Maven打包成War包,准备放在本地Tomcat(我使用的Tomcat版本是Tomcat9.0.58)下webapp下运行,发现运行不出来,然后就在eclipse中用本地的Tomcat9来运行这个项目,然后惊奇的发现原本的项目样式加载不出来,一开始以为是路径不对读取不到资源文件,打开控制台,查看网络,发现资源都可以读取到,但是不能加载。

问题示例图一

左边是使用本地Tomcat运行的项目,可以看到样式加载有问题,右边也是使用本地Tomcat运行的项目但是就没有问题(很奇怪)
Tomcat部署项目,样式显示问题_第1张图片

问题示例图二

左边是本地Tomcat运行的项目,右边是使用Tomcat插件运行的项目也没有问题
Tomcat部署项目,样式显示问题_第2张图片


原因分析:

Tomcat的问题

一开始以为是本地Tomcat的问题,就开始网上查找资料。开始修改各种web.xml什么加载静态文件访问路径放行、浏览器的缓存等等发现都不可以解决

Maven的问题

以为是Maven的打包的问题,然后就开始使用Maven clean清除所文件后,在Maven install 下载回来,再次运行发现还是不能解决

项目的问题

实在是没有办法了,然后重新复制这个项目再运行,发现还是不可以捏,然后我又把那个可以在本地正常运行的项目也复制一份再运行,然后惊奇的发现它也不能正常运行了,样式也显示不出来了(然后整个人都不好了),但是我使用Tomcat插件运行就没有问题


解决方案:

最后的方案

最后最后没有实在没有办法了,我就开始从头开始使用本地Tomcat运行项目一步步的编写,最后终于发现了问题的所在,原因是出现在我编写的过滤器Filter上,然后网上查找资料是response.setContentType("text/html;charset=utf-8");这句代码的问题,这句代码的作用大概是,将请求到内容以text/html响应传输给下一个对象。

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
	throws IOException, ServletException {
	request.setCharacterEncoding("UTF-8");
	response.setContentType("text/html;charset=utf-8");
	response.setCharacterEncoding("UTF-8");
	chain.doFilter(request, response);
}

图解一

我就开始查看网络资源,查看请求头和响应头,发现CSS的请求内容类型和响应内容类型不太一样

Tomcat部署项目,样式显示问题_第3张图片

图解二

然后我就注释那句代码后再次运行,惊奇的发现可以正常的显示了,请求类型和响应类型是一样的,问题终于解决了
Tomcat部署项目,样式显示问题_第4张图片

疑惑

控制台的响应内容乱码

把代码注释掉后,问题虽然解决了,但是没有这句代码的话,调试模式控制台中的响应内容就会乱码,还没有找到好的解决办法

其他项目

为什么其他的项目使用本地Tomcat运行,不注释这句代码也可以正常显示呢

你可能感兴趣的:(问题,tomcat)