springMVC 请求404错误或静态资源无法访问
来源:互联网 发布:好看的武侠小说知乎 编辑:程序博客网 时间:2024/06/05 20:17
问题:springMVC 请求404错误或静态资源无法访问。
在web.xml中我们一般这样配置:
- <servlet>
- <servlet-name>springmvc</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>springmvc</servlet-name>
- <!-- 这里可以用 / 但不能用 /*, "/"拦截了所有请求会导致静态资源无法访问,所以要在springmvc-servlet.xml中配置mvc:resources -->
- <url-pattern>/</url-pattern>
- </servlet-mapping>
使用<url-pattern>/</url-pattern>可以实现rest风格,但是会拦截了所有的请求导致静态资源无法访问(解决方法后面说),<url-pattern>/</url-pattern>使用的是/,而不是/*,如果使用/*,那么请求时可以通过DispatcherServlet转发到相应的Action或者Controller中的,但是返回的内容,如返回的jsp还会再次被拦截,这样导致404错误,即访问不到jsp。所以如果以后发现总是有404错误的时候,别忘了check一下<url-pattern>/</url-pattern>的配置是否是/*.
当然,如果你使用*.do、*.xhtml等就不会出现静态资源无法访问问题。
静态资源无法访问解决方案:
1,在springmvc-servlet.xml中添加一下配置:
- <mvc:resources location="/resources/" mapping="/resources/**"/>
使用<mvc:resources/>元素,把mapping的URI注册到SimpleUrlHandlerMapping的urlMap中,key为mapping的URI pattern值,而value为ResourceHttpRequestHandler,这样就巧妙的把对静态资源的访问由HandlerMapping转到ResourceHttpRequestHandler处理并返回,所以就支持classpath目录,jar包内静态资源的访问.
另外需要注意的一点是,不要对SimpleUrlHandlerMapping设置defaultHandler.因为对static uri的defaultHandler就是ResourceHttpRequestHandler,
否则无法处理static resources request.
如果加上以上配置还是不成功,检查一下是不是没有配置:
- <mvc:annotation-driven/>
2,在springmvc-servlet.xml中添加一下配置:
- <mvc:default-servlet-handler/>
会把"/**" url,注册到SimpleUrlHandlerMapping的urlMap中,把对静态资源的访问由HandlerMapping转到 org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler 处理并返回.
DefaultServletHttpRequestHandler使用就是各个Servlet容器自己的默认Servlet.
推荐使用 *.do 或 方案2,如果你访问一个网站的默认主页(也就是web.xml中配置的welcome-file)index.jsp,一般我们可以类似这样访问:http://localhost:8080/apprecommend-web/会自动跳转到http://localhost:8080/apprecommend-web/index.jsp,如果使用方案1,就不能这样访问了,因为spring会拦截所有的请求,但是拦截到的/apprecommend-web/没有匹配的处理action,而且就直接返回404,不再处理了,如果使用方案2,还会由DefaultServletHttpRequestHandler去调用Servlet容器自己的默认Servlet进行处理,然后返回。
- springMVC 请求404错误或静态资源无法访问
- springmvc无法访问静态资源
- SpringMVC请求静态资源出现404从错误
- 解决SpringMVC 静态资源无法访问
- SpringMVC静态资源无法访问的问题
- springmvc中静态资源无法访问问题
- SpringMVC请求静态资源异常
- SpringMVC处理静态资源请求
- SpringMVC静态资源无法访问的一个奇怪的问题
- springmvc解决静态资源无法访问的两种方法
- 一个springmvc请求静态资源的问题
- springMvc无法访问静态文件
- nginx 静态资源无法访问
- 使用SSM创建项目后,无法访问静态资源,报404错误解决办法
- nginx静态资源文件无法访问,403 forbidden错误
- nginx静态资源文件无法访问,403 forbidden错误
- intellij idea无法访问静态资源
- springboot程序无法访问静态资源
- JS学习(13)----eventlistener
- RAID介绍
- 分解质因数(5分)
- MyBatis错题分析
- HDU-5961 传递(暴力)
- springMVC 请求404错误或静态资源无法访问
- C++开源大全
- 如何关闭账号自动同步?
- iOS 崩溃记录
- Linux上Scala的安装
- git
- JavaScript获取form表单中的数据以及拼接传参
- POJ
- Android 7.0 行为变更