Tomcat裡面靜態資源亂碼怎麼解決?比如引入layui的時候,layui的中文提示亂碼,還有一系列靜態資源中文亂碼的完美解決方案
阿新 • • 發佈:2020-12-31
如果在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處理