Tomcat里面静态资源乱码怎么解决?比如引入layui的时候,layui的中文提示乱码,还有一系列静态资源中文乱码的完美解决方案

2022-07-25,,,,

如果在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

《Tomcat里面静态资源乱码怎么解决?比如引入layui的时候,layui的中文提示乱码,还有一系列静态资源中文乱码的完美解决方案.doc》

下载本文的Word格式文档,以方便收藏与打印。