1. 程式人生 > >springmvc使用rest風格的404錯誤

springmvc使用rest風格的404錯誤

當使用rest風格出現404錯誤時,

web.xml裡

<!-- springmvc 配置 -->
    <servlet>
        <servlet-name>blog</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name
>
<param-value>classpath:/config/mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>blog</servlet-name> <url-pattern>*.do</url-pattern
>
</servlet-mapping>

導致錯誤的地方在

<url-pattern>*.do</url-pattern>

要更改為

<url-pattern>/</url-pattern>

靜態資源訪問處理
採用RESTful架構後,必須將web.xml中控制器攔截的請求設定為 ‘ / ’ ;但是這樣會產生一個問題,就是會將css,js,圖片等靜態資源攔截,發生404錯誤。

解決方案如下:
1、配置<mvc:resources/>
springMVC配置檔案中這樣使用:

<mvc:resources
mapping="請求URI" location="資源位置"

2、在springMVC配置檔案中使用<mvc:default-servlet-handler/>
配置該指令放行預設的靜態資源:

<mvc:default-servlet-handler/>

大部分情況下第二種就可以解決問題,而且方便簡單,相應的,beans裡要新增上

xmlns:mvc="http://www.springframework.org/schema/mvc"
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd

在springMVC-servlet.xml中配置<mvc:default-servlet-handler />後,會在Spring MVC上下文中定義一個org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它會像一個檢查員,對進入DispatcherServlet的URL進行篩查,如果發現是靜態資源的請求,就將該請求轉由Web應用伺服器預設的Servlet處理,如果不是靜態資源的請求,才由DispatcherServlet繼續處理。