`
tiankong6622
  • 浏览: 53646 次
社区版块
存档分类
最新评论

spring mvc 静态资源 404问题

阅读更多

spring mvc 静态资源 404问题

在web.xml配置servlet-mapping的时候,如果url-pattern设置为“/” (如下),很多人都会遇到导入js,css,图片等静态资源出现Firefox调试窗口会报出的404错误,而你的确也不能访问那些资源

<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

百度了很久,大致有3种方法:但是我仍然没有解决404问题,后来又google了一下,发现少了一个关键的地方(在百度搜索中都没提到的一个地方,所以认为比较关键 :)),就是在jsp页面中导入静态资源的时候需要用<c:url>标签。

例如:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<script type="text/javascript" src='<c:url value="/js/jquery.js"></c:url>'></script>

这里的c:url中 value的值也是需要特别注意到地方,见下面3种方法详细说明:

 

方法1. 修改web.xml文件,增加对静态资源的url映射

如:

<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>

在web.xml中添加好配置后,在jsp页面就可以引用这些静态资源了,但需要用<c:url value="">,

如:

 

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<script type="text/javascript" src='<c:url value="/js/jquery.js"></c:url>'></script>

这里还需要说明的是:这种方法不能访问WEB-INF目录下的静态资源,也就是js目录必须是web根(可能是webapp,webContent等)目录下,否则是不能引用的;

如果放在WEB-INF目录下,即使你使用<c:url value=“/WEB-INF/js/jquery.js”>也是会出现404错误的。

 

百度时发现:以下各容器的default servlet名字,而且还提到静态资源servlet映射需要写在dispatcherServlet的前面;我在Jboss-eap-5.1中测试过,前后没有关系;所以可能是容器或者版本的关系吧。

Tomcat, Jetty, JBoss, and GlassFish  默认 Servlet的名字 -- "default"
Google App Engine 默认 Servlet的名字 -- "_ah_default"
Resin 默认 Servlet的名字 -- "resin-file"
WebLogic 默认 Servlet的名字  -- "FileServlet"
WebSphere  默认 Servlet的名字 -- "SimpleFileServlet" 

 

 

方法2.在相应的 -servlet.xml中添加spring配置<mvc:default-serlvet-handler>

如:

<mvc:default-servlet-handler/>

这种方法只需要添加一行代码,在jsp页面中引用时和方法1一样,同样也不能引用WEB-INF下的资源。

 

方法3.使用spring 3.0.4的新特性,在相应的 -servlet.xml中添加配置<mvc:resource>

如:

3.1 <mvc:resources location="/js/" mapping="/js/**" />

3.2 <mvc:resources location="/WEB-INF/js/" mapping="/js/**" />

这种方法我写了两个配置,不同的地方只是location的值,一个是“/js/”,一个是“/WEB-INF/js/”;两种都可以,根据你自己的目录结构来引用。这就说明使用这种方式可以引用WEB-INF目录下的静态资源;这里的mapping属性的值用了ant的通配符方式,"/js/**"(两个"*")指location的值所表示的目录以及所有子目录;但是在jsp页面中引用时需要注意:

<c:url value="/js/jquery.js"> value的值必须类似于mapping属性的值,如果是3.1方式的配置,则引用的是web根目录下js/jquery.js,如果是3.2方式的配置,则引用的是web根目录下WEB-INF/js/jquery.js;

<c:url value="/js/ui/jquery-ui.js"> 则引用location目录下子目录ui下的jquery-ui.js。

 

被这个问题困扰了一天,搞得很郁闷,现在终于解决了,写一篇博客记录一下

 

分享到:
评论

相关推荐

    Spring MVC入门教程

    七、spring mvc 如何访问到静态的文件,如jpg,js,css? 八、spring mvc 请求如何映射到具体的Action中的方法? 九、spring mvc 中的拦截器: 十、spring mvc 如何使用拦截器? 十一、spring mvc 如何实现全局的异常...

    Spring MVC和springboot静态资源处理.rar

    Spring MVC和springboot静态资源处理.rar

    Spring MVC 教程 快速入门 深入分析

    七、spring mvc 如何访问到静态的文件,如jpg,js,css? 八、spring mvc 请求如何映射到具体的Action中的方法? 九、spring mvc 中的拦截器: 十、spring mvc 如何使用拦截器? 十一、spring mvc 如何实现全局的异常...

    SpringMVC框架架构介绍

    七、spring mvc 如何访问到静态的文件,如jpg,js,css? 八、spring mvc 请求如何映射到具体的Action中的方法? 九、spring mvc 中的拦截器: 十、spring mvc 如何使用拦截器? 十一、spring mvc 如何实现全局的异常...

    Spring MVC 3.0实战指南.ppt

    《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及解析器 7...

    spring mvc整合thymeleaf示例

    thymeleaf,我个人认为是个比较好的模板,性能也比一般的,比如freemaker的要高,而且把将美工和程序员能够结合起来,美工能够在浏览器中查看静态效果,程序员可以在应用服务器查看带数据的效果。 thymeleaf是一个...

    spring mvc+spring+mybatis架构实例

    spring mvc+spring+Mybatis架构 Mybatis分页功能 伪静态配置 spring mvc访问静态资源

    Spring3MVC注解教程.ppt

    《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及...

    Spring MVC 3.0实战指南

    支持REST风格的URL 添加更多注解,可完全注解驱动 引入HTTP输入输出转换器...和数据转换、格式化、验证框架无缝集成 对静态资源处理提供特殊支持 更加灵活的控制器方法签名,可完全独立于Servlet API

    ssm(spring+spring mvc+mybatis+maven)高仿bilibili视频网站项目实例

    ssm(spring+spring mvc+mybatis+maven)高仿bilibili视频网站项目实例 里面包含论坛, 购物商城 网页 后台管理的java项目集成 演示地址: http://106.75.216.49/bilibili/ (服务器不太稳定,可以尝试刷新,感谢...

    sprjson,spring mvc的json和xml视图,dwr及静态资源等不同种类url整合

    spring mvc的json和xml视图,dwr及静态资源等不同种类url整合,对应博客教程地址: http://blog.csdn.net/qgmzzn1/article/details/8465969

    第四章 Spring MVC Rest风格的url、静态资源标签

    NULL 博文链接:https://1151461406.iteye.com/blog/2390768

    springmvc静态资源增强处理

    Spring Framework 4.1 mvc添加了静态资源增强处理功能.本源码仅是一个简单使用例子.详细参考;http://blog.csdn.net/xiejx618/article/details/40478275

    Spring MVC 3.0实战指南--陈雄华

    Spring MVC 3.0新特性: 1.支持REST风格的URL ...4.对静态资源处理提供特殊支持 5.更加灵活的控制器方法签名,可完全独立于Servlet API 参考《Spring 3.x企业应用开发实战》的第15章撰写的培训材料

    防止SpringMVC拦截器拦截js等静态资源文件的解决方法

    本篇文章主要介绍了防止SpringMVC拦截器拦截js等静态资源文件的解决方法,具有一定的参考价值,有兴趣的同学可以了解一下

    基于spring-MVC的在线测试系统(客观题)

    自己写的模拟在线考试系统,虽然只是个demo(其实就是木有用数据库,用的一个静态集合模拟的,方便快速部署),但是建模和架构都是完整的,包含war和源码,只需把war部署到tomcat服务器中就可以运行

    Extjs4.0通用后台管理系统源码完整大型项目(ExtJS 4.2+Hibernate 4.1.7+Spring MVC

    数据库在项目里面的一个sql文件里面 1、采用Spring MVC的静态加载缓存功能,在首页将Javascript文件、CSS文件和图片等静态资源文件加载进来放进内存,极大提高ExtJS的加载速度。 2、三种皮肤主题:经典、灰色和海王...

Global site tag (gtag.js) - Google Analytics