1. 程式人生 > 其它 >為什麼在maven建立的專案中不能使用靜態資源???

為什麼在maven建立的專案中不能使用靜態資源???

技術標籤:SpringMVCjavaweb

為什麼在maven建立的專案中不能使用靜態資源???
靜態資源的訪問:html\css\js\圖片資源等 (注意:jsp不是靜態資源)

因為訪問靜態資源要訪問全域性web.xml中的DefaultServlet,
對映路徑為/,和前端控制器衝突了,而且區域性優先,前端控制器沒問題,但是靜態資源就訪問不到了

解決方案1:將web.xml中前端控制器的影射路徑改成*.action,訪問handler時都帶上.action(我們不動全域性檔案)
<url-pattern>/</url-pattern>改成
<url-pattern>*.action</url-pattern>
缺點:每個都要加.action如    @RequestMapping("/show")-->@RequestMapping("/show.action")

解決方案2:
mvc.xml中加一句:
<mvc:default-servlet-handler></mvc:default-servlet-handler>
<!--    靜態資源訪問-->
<!--    在後端controller中生成一個handler,該handler用於解決靜態資源訪問
         訪問優先順序最低,其他路徑都訪問不到的時候就訪問/**-->
    
    相當於:
    UerController.java中加上了:(用於處理靜態資源)
    @RequestMapping("/**")
    public String resouce(){
        //處理靜態資源
        return null;
    }

全域性web.xml:
<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>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>