404详解


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注解的组件即可.
希望能对大家有所帮助!

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM