应用springMVC时如果配置URL映射时如下配置

<servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

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

会导致页面引用的JS CSS发生找不到的错误 
此时应在web.xml中添加 
<servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
    </servlet-mapping>

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

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

<servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
    </servlet-mapping>
指明对于如上资源文件不采用spring的过滤器

关于default
是tomcat配置的一个servlet
“DefaultServlet 被定义在$CATALINA_HOME/conf/web.xml中,配置文件中被定义的东西会在Tomcat启动的时候 被加载,对所有的webapp都有效。DefaultServlet在Tomcat中主要是做目录列表(Directory Listing)用。 ” 
    <servlet> 
        <servlet-name>default</servlet-name> 
        <servlet-class> 
          org.apache.catalina.servlets.DefaultServlet 
        </servlet-class> 
        <init-param> 
            <param-name>debug</param-name> 
            <param-value>0</param-value> 
        </init-param> 
        <init-param> 
            <param-name>listings</param-name> 
            <param-value>true</param-value> 
        </init-param> 
        <load-on-startup>1</load-on-startup> 
    </servlet>

...

<servlet-mapping> 
        <servlet-name>default</servlet-name> 
        <url-pattern>/</url-pattern> 
    </servlet-mapping> 
有一些参数可以控制DefaultServlet的行为。此外,当请求的URL是/的时候, 也就是没有匹配的时候,就会触发这个DefaultServlet。

The default resource-serving servlet for most web applications, used to serve static resources such as HTML pages and images. 
静态资源都走这个DefaultServlet

也可以使用spring mvc 的 resources 注解 用来处理静态文件
pring mvc 的<mvc;resources mapping="***" location="***">标签是在spring3.0.4出现的,主要是用来进行静态资源的访问。在spring3.0.4出来的时候 spring还没有更新其schema所以在配置文件中有可能找不到<mvc:resources >标签,这个问题在spring3.0.5中已经解决,而且网上也有很多其他的解决方案,我在这里就不记录了。

首先使用spring mvc需要配置其使用的servlet.在web.xml中:
Java代码  收藏代码

<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>  
            <url-pattern>/</url-pattern>  
        </servlet-mapping>

这 里给 servlet-name定义的名称是springMVC,这样的话会在web-inf下spring会自动扫描一个XML文件名叫springMVC- servlet.xml文件,这里都是spring自动扫描的,如果你没有提供,将会报一个文件查找不到的异常。看了下 org.springframework.web.servlet.DispatcherServlet加载这个文件的过程,貌似这个文件存放的地址也是 可以进行设置的,具体怎么搞我还没有研究。

由于spring mvc拦截了所有请求,所以当你设置
引用
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

的时候会影响到静态资源文件的获取,这样就需要有这个标签来帮你分类完成获取静态资源的责任。

springMVC-servlet.xml文件
Java代码  收藏代码

<?xml version="1.0" encoding="UTF-8"?>  
    <beans xmlns="http://www.springframework.org/schema/beans"    
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
        xmlns:mvc="http://www.springframework.org/schema/mvc"  
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd     
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">     
      
        <mvc:resources mapping="/javascript/**" location="/static_resources/javascript/"/>  
        <mvc:resources mapping="/styles/**" location="/static_resources/css/"/>  
        <mvc:resources mapping="/images/**" location="/static_resources/images/"/>  
        <mvc:default-servlet-handler />  
          
          
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
            <property name="prefix" value="/WEB-INF/views/"/>  
            <property name="suffix" value=".jsp"/>  
        </bean>  
      
    </beans>

这里可以看到我所有的页面引用到/styles/**的资源都从/static_resources/css里面进行查找。

页面的一段静态资源访问的代码。
Java代码  收藏代码

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>  
    <HTML>  
    <HEAD>  
      <TITLE> ABCDEFG </TITLE>  
    <link type="text/css" rel="stylesheet" href="http://love-love-l.blog.163.com/blog/<c:url value='/styles/siteboard.css'/>">  
    ...  
    ...  
    ...

可能这个标签的真谛就是为了引用资源的访问不会类似CONTROLLER一样被拦截,区分出关注的资源的访问,一般我们在springMVC里面的拦截都会配置为"/",拦截所有的。

 
 

springMVC找不到JS等文件的更多相关文章

  1. SpringMVC找不到js等文件,有两种方式可以解决这个问题。

    (1)当你选择不过滤任何文件时,必须去springmvc.xml去设置默认加载. (2)如果你在web.xml中设置的过滤请求那么你就不用设置默认加载,但请求的url必须符合格式.

  2. SpringMVC里静态网页不能加载到.js .css文件的问题

    在写SpringMVC项目时候,写的js css文件打不开,网上查了一下,解决办法: 在web.xml里面: <servlet> <servlet-name>dispatche ...

  3. SpringMVC结合ajaxfileupload.js实现文件无刷新上传

    直接看代码吧,注释都在里面 首先是web.xml <?xml version="1.0" encoding="UTF-8"?> <web-ap ...

  4. web主题公园版权信息破解:script.js加密文件

    很多人会使用web主题公园网站的免费worldpress主题,但它的主题又都被加了版权信息,故意让人找不到版权信息的修改位置. 你如果去footer.php里面删除版权信息(技术支持:web主题公园) ...

  5. iOS之在webView中引入本地html,image,js,css文件的方法 - sky//////////////////////////////////////ZZZZZZZZZZZZZZZ

    iOS之在webView中引入本地html,image,js,css文件的方法   2014-12-08 20:00:16CSDN-sky_2016-点击数:10292     项目需求 最近开发的项 ...

  6. nginx设置反向代理后,页面上的js css文件无法加载

    问题现象: nginx配置反向代理后,网页可以正常访问,但是页面上的js css文件无法加载,页面样式乱了. (1)nginx配置如下: (2)域名访问:js css文件无法加载: (3)IP访问:j ...

  7. nginx设置反向代理后端jenklins,页面上的js css文件无法加载

    转载 2017年06月14日 22:36:59 8485 问题现象: nginx配置反向代理后,网页可以正常访问,但是页面上的js css文件无法加载,页面样式乱了. (1)nginx配置如下: (2 ...

  8. 转载:Java项目读取配置文件时,FileNotFoundException 系统找不到指定的文件,System.getProperty("user.dir")的理解

    唉,读取个文件,也就是在项目里面去获得配置文件的目录,然后,变成文件,有事没事,总是出个 FileNotFoundException  系统找不到指定的文件,气死人啦. 还有就是:System.get ...

  9. net start mongodb发生系统错误2 系统找不到指定的文件

    安装mongodb时, 将mongodb 作为系统服务启动 net start mongodb,报错发生系统错误2 系统找不到指定的文件 . 查找原因是因为,系统服务的可执行文件地址有误. 修改服务地 ...

随机推荐

  1. NSNumber、NSValue、NSDate、NSObject

    注:OC中数组和字典只能存储OC对象不能存放基本数据类型. NSNumber NSNumber可以用来把一个基本数据类型包装成一个NSNumber类型的对象. NSNumber *number = [ ...

  2. OpenCV检测人脸实例代码

    下面是使用OpenCV通过在硬盘中读入图像来对其进行Haar人脸检测的代码. //包含头文件 #include <opencv2/core/core.hpp> #include " ...

  3. 使用getElementById获取xml中的指定元素

    Document有一个getElementById的方法,在文档中的解释是:     返回具有带给定值的 ID 属性的 Element.如果不存在此类元素,则此方法返回 null.如果多个元素具有带该 ...

  4. PSPO表格

    一.项目计划总结: 周活动总结表 日期         任务 听课 编写程序 阅读课本 准备考试 日总计 周日 周一 周二 300 100 30 430 周三 100 50 30 180 周四 200 ...

  5. java线程图

  6. Android Studio 单刷《第一行代码》系列 02 —— 日志工具 LogCat

    前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...

  7. sql中having的使用

    where 和having有什么区别? where 是group by之前进行筛选,having是group by 之后进行统计的筛选,一般having会和group by一起使用,结合聚合函数,统计 ...

  8. 自定义异常时如何定义checked异常和unchecked异常

    When defining your own exception type, study the existing exception classes in the Java API and try ...

  9. Hibernate O/R Mapping模拟

    作为SSH中的重要一环,有必要理解一下Hibernate对 O/R Mapping的实现. 主要利用java的反射机制来得到完整的SQL语句. 准备工作: 1. Object Student实体类: ...

  10. Flash Attribute

    参考:http://www.open-open.com/lib/view/open1397266120028.html 为解决POST/Forward/GET出现的重复提交数据问题,改用POST/Re ...