Tomcat里面静态资源乱码怎么解决?比如引入layui的时候,layui的中文提示乱码,还有一系列静态资源中文乱码的完美解决方案
如果在SSM里面,如果是你自己项目的web.xml里面没设置编码为UTF-8或者自己的静态资源编码对应不上响应的编码,这种简单的就不说了
我之前用tomcat9老是发现layui里面的中文提示乱码,搞了半天没搞出来,明明文件编码是utf8,响应编码也是,为什么就会乱码呢?
解决方案:
找到本地tomcat所有的路劲,找到里面/conf/web.xml,找到default那个servlet
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<!--添加上这个,默认是没有这个的-->
<init-param>
<param-name>fileEncoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
解释:
1. 默认没有指定字符编码,需要指定字符编码(注意:是tomcat下面的web.xml,不是你自己项目的web.xml)
有人可能好奇,这个default是啥哦?
我们如果在自己项目的web.xml里面配置了url-pattern为 / ,就代表:我们会把我们所有的请求给DispatcherServlet处理,包括静态和动态的,我们会发现静态的请求404,动态的没问题
因为 DispatcherServlet 根本没有处理静态资源的能力,然后我们如何解决?
找到springmvc.xml的配置文件添加 : <mvc:default-servlet-handler/> (加了这个配置必须添加 <mvc:annotation-driven/>因为这个配置和RequestMapping会有冲突,添加它了可以解决)
<mvc:default-servlet-handler/> 这个注解创建DefaultServletRequestHandler来处理静态资源,这个DefaultServletRequestHandler类似于我们自己写的Controller, 把静态资源交给tomcat/conf/web.xml里面的defaultServlet处理
所以,因为这个defaultServlet没指定编码,所以静态资源会乱码。
本文地址:https://blog.csdn.net/String_name_TT/article/details/111994407
上一篇: Qt发布(windows)
下一篇: 一文读懂微内核架构