springmvc使用rest風格的404錯誤
阿新 • • 發佈:2018-12-23
當使用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繼續處理。