`

应用springMVC时 JS等文件找不到错误

 
阅读更多
http://love-love-l.blog.163.com/blog/static/21078304201111895950748/

应用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+Ajax异步文件上传

    在现代Web应用中,文件上传是一项常见的功能,尤其是在多媒体丰富的平台。`SpringMVC`作为Java后端的一个强大框架,...在实际开发中,还需要考虑安全性、错误处理以及性能优化等问题,确保文件上传功能的稳定和高效。

    WEB文件上传之SpringMVC+ajaxfileupload使用(三)

    在本文中,我们将深入探讨如何在Web应用中实现文件上传功能,特别关注SpringMVC框架与AJAXFileUpload库的整合。SpringMVC是Java Web开发中的一个强大框架,而AJAXFileUpload则是一个用于异步文件上传的JavaScript库...

    springMVC多文件上传demo

    在处理多文件上传时,可能遇到文件过大、文件类型不合法等问题,需要在代码中添加适当的异常处理机制。 8. **前端界面** 前端页面通常使用HTML5的`FormData`对象来构建上传请求。可以使用JavaScript库如jQuery、...

    springmvc ajax 文件上传

    这两种方法都是在Web应用中处理用户上传文件的常见方式,特别是当需要在后台处理文件且不刷新整个页面时,AJAX上传就显得尤为重要。 首先,我们来看**Spring MVC**。Spring MVC是Spring框架的一个模块,专门用于...

    webuploader+springMVC实现大文件上传.zip

    - 错误处理:要有完善的错误处理机制,包括网络中断、文件不完整等情况。 总的来说,这个项目展示了如何结合WebUploader和SpringMVC实现高效、可靠的大文件及多文件上传功能,为开发者提供了一个实用的参考示例。...

    springmvc上传下载并且保存到数据库

    - 编写异常处理逻辑,捕获并处理上传和下载过程中可能出现的错误,如文件不存在、IO 错误等。 7. **日志记录** - 记录文件操作的日志,有助于追踪和排查问题。 以上就是关于“springmvc上传下载并且保存到数据库...

    springmvc带进度条上传源码

    在提供的"springmvc带进度条上传源码"中,可能包含了这些功能的实现,包括控制器、服务层、视图层以及前端的HTML、CSS和JavaScript文件。分析这些源码可以帮助你更好地理解文件上传和进度条显示的完整流程。如果你...

    【springmvc+jquery.form.min.js+spring文件上传】

    在本项目"【springmvc+jquery.form.min.js+spring文件上传】"中,我们将探讨如何结合这两个技术实现异步文件上传。 首先,我们需要理解Spring MVC中的文件上传处理。Spring MVC提供了`@RequestParam("file") ...

    springmvc+ajax上传例子

    4. **错误处理和反馈**:在实际项目中,你需要处理可能出现的错误,如文件大小超出限制、文件类型不被接受等,并通过Ajax回调向用户显示相应的信息。 通过以上步骤,你已经成功地创建了一个基于SpringMVC和Ajax的...

    springmvc dwr

    然而,随着Web技术的发展,现代的前端框架如React、Vue.js等提供了更强大和完善的解决方案,它们通常不需要像DWR这样的中间件就能实现丰富的客户端-服务器通信。尽管如此,理解DWR与SpringMVC的整合对于理解Web应用...

    SpringMVC多文件上传带进度条

    2. **前端JS**:当文件被选中后,使用`FormData`创建一个新的表单数据对象,将文件添加到其中。然后,使用Ajax发送POST请求,携带`FormData`对象,并监听`onprogress`事件以更新进度条。 3. **后端SpringMVC ...

    springmvc上传文件实时显示进度条

    Spring MVC 是一个强大的Java Web...记得在实际应用中,你还需要处理错误情况,例如文件类型检查、安全验证等。此外,根据项目需求,可能还需要考虑文件存储策略(本地、云存储等),以及文件上传完成后的处理逻辑。

    springmvc+ajax带有文本域进行文件上传

    2. `ajaxfileupload.js`,这是一个JavaScript库,它允许通过Ajax方式异步上传文件,提供了进度显示和错误处理等功能。 3. Java源代码,包括Spring MVC的Controller类,可能还有Service和DAO层的实现,用于处理文件...

    spring mvc ajax异步文件的上传和普通文件上传

    在Spring MVC框架中,文件上传是一项常见的功能,无论是普通的文件上传还是通过Ajax实现的异步文件上传,都为用户提供...在实际应用中,还需要注意文件大小限制、错误处理、安全性(如防止上传恶意文件)等方面的细节。

    SpringMvc+POI 导入Excel文件

    在处理Excel导入请求时,控制器会接收到文件上传的请求,然后通过POI库解析Excel文件内容。 Apache POI提供了一套API,允许我们读取和写入Excel文件。例如,我们可以使用HSSFWorkbook类来处理老版本的.xls文件,...

    springmvc+hibernate完整项目

    SpringMVC和Hibernate是Java开发中的两个重要框架,SpringMVC负责处理Web应用的请求-响应,而Hibernate则是一个强大的对象关系映射(ORM)工具,用于简化数据库操作。这个"springmvc+hibernate完整项目"是一个整合了...

    SpringMVC入门很简单之数据验证

    在给定的文件结构中,`WebContent`通常包含Web应用的静态资源,如HTML、CSS和JavaScript文件。`src`目录是源代码目录,`web`可能是放置Web应用配置文件如`web.xml`的地方。`build`目录可能包含编译后的类文件,而`...

    ajax上传文件进度条及springMVC上传

    在现代Web应用中,用户经常需要上传文件,如图片、文档等。为了提供更好的用户体验,开发者需要实现文件上传时的进度条显示,这样用户可以直观地看到文件上传的状态。本篇将详细介绍如何利用Ajax和SpringMVC框架实现...

    基于SpringMVC的文件上传(兼容IE8)

    在开发Web应用时,文件上传是一项常见的功能,尤其是在处理用户数据、报表或者图片时。SpringMVC作为Spring框架的一部分,提供了强大的MVC支持,包括文件上传。本篇将详细讲解如何在SpringMVC中实现文件上传,并确保...

    SSM笔记-SpringMVC的数据格式化 、数据校验、错误提示、错误信息国际化、返回json

    当数据校验失败时,SpringMVC可以通过`ModelAndView`对象或`Model`接口将错误信息绑定到视图。这些错误信息可以在视图模板(如JSP或Thymeleaf)中显示。此外,`BindingResult`对象包含了所有错误的详细信息,如错误...

Global site tag (gtag.js) - Google Analytics