ssm訪問頁面404/靜態資源的問題
我們在配置dispatchServlet時配置
<!-- Spring MVC servlet -->
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern>
<url-pattern>/</url-pattern>攔截所有請求包括靜態資源,springMVC會將靜態資源當做一個普通的請求處理,從而也找不到相應的處理器導致404錯誤.這時候dispatchServlet完全取代了default servlet,將不會再訪問容器中原始默認的servlet,而對靜態資源的訪問就是通過容器默認servlet來處理的,故而這時候靜態資源將不可訪問。當然可以配置*.do 、 *.xhtml等方式,但這樣就無法采用真正的REST風格的URL.spring是一個得到廣泛應用的javaEE框架,在spring3后增加了rest,也是spring3里很重要的功能之一,固spring團隊給出了靜態資源處理的方法:
采用<mvc:default-servlet-handler />
<mvc:default-servlet-handler />
在springmvc的配置文件中配置后,會在springMVC上下定義一個default servlet,從而對請求進行篩查,如果發現是靜態資源就由default servlet來處理,
如果不是靜態資源才由DispatcherServlet接着處理.
這里有有一點要注意,default servlet對於使用beanName方式配置的處理器,是可以訪問的.但是對於@RequestMapping注解方式配置的處理器是不起作用的,
因為沒有相應的HandlerMapping和HandlerAdapter支持注解的使用。這時候可以使用<mvc:annotation-driven/>配置在容器中注冊支持@RequestMapping注解的組件即可.
希望能對大家有所幫助!