用了springmvc为何JS,CSS等文件就是访问不到

那就是为什么我配置好web.xml中的dispatchservlet后,js,css,甚至gif都不能正常显示了

我们来看看我们配置的web.xml

 1     <!-- springMVC核心配置      controller,viewResolver,HandlerMapping -->
 2     <servlet>
 3         <servlet-name>dispatcherServlet</servlet-name>
 4         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 5         <init-param>
 6             <param-name>contextConfigLocation</param-name>
 7             <!--spingMVC的配置路径 -->
 8             <param-value>classpath:spring-mvc.xml</param-value>
 9         </init-param>
10         <load-on-startup>1</load-on-startup>
11     </servlet>
12     <servlet-mapping>
13         <servlet-name>dispatcherServlet</servlet-name>
14         <url-pattern>/</url-pattern>
15     </servlet-mapping>

这个就涉及到一个知识点了,就是url-pattern的   /    和    *   的区别了

这里我来引用一段别人的原话

url-pattern有5种配置模式:

(1)/xxx:完全匹配/xxx的路径

(2)/xxx/*:匹配以/xxx开头的路径,请求中必须包含xxx。

(3)/*:匹配/下的所有路径,请求可以进入到action或controller,但是转发jsp时再次被拦截,不能访问jsp界面。

(4).xx:匹配以xx结尾的路径,所有请求必须以.xx结尾,但不会影响访问静态文件。

(5)/:默认模式,未被匹配的路径都将映射到刺servlet,对jpg,js,css等静态文件也将被拦截,不能访问。

因此,如果我们一开始就采用了/的方式,那么就需要补上如下的web.xml配置来让静态文件可访问了

<!-- static resources -->
    <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>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
时间: 2024-08-24 21:14:42

用了springmvc为何JS,CSS等文件就是访问不到的相关文章

gulp实现打包js/css/img/html文件,并对js/css/img文件加上版本号

参考打包教程: http://www.cnblogs.com/tugenhua0707/p/4069769.html http://www.cnblogs.com/tugenhua0707/p/4982646.html http://www.tuicool.com/articles/viequay 实现要点: 1.如何运行gulp的任务,加入新建好一个如下任务: // 语法检查 gulp.task('jshint', function () { gulp.src('js/**/*.js') .p

定义不被SpringMVC拦截的静态资源(html, js, css等文件),通用方法,不需要每个目录都设置

springMVC的<mvc:resources mapping="***" location="***">标签是在spring3.0.4出现的,主要是用来定义对静态资源的访问. 上网搜了一下跟这个配置相关的文章,大多推荐用下面这种.可是,用这种的话,如果有一个新目录,就得新增一条配置,比较麻烦. <!-- For static resources --> <mvc:resources mapping="/image/**&q

Maven项目WEB-INF/views无法引入js,css静态文件解决方法

web.xml针对文件后缀配置以下,对客户端请求的静态资源如图片.JS文件等的请求交由默认的servlet进行处理 <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default<

web项目js css静态文件缓存解决

在web开发过程中经常会遇到js及css文件缓存的问题,开发过程中我们可以自己手动的清空浏览器缓存,但是我们没法告诉用户去执行一个他们或许不熟悉的操作(清空浏览器缓存),为解决这个问题,编写了一个grunt插件,在前端构建的时候,可以使用grunt插件来做这件事情,就是将js及css文件自动的加上一个版本号(这里我用的是时间戳) 基于grunt的js 及css文件自动加version的插件,可以将配置的目录下所有引用到指定匹配的js及css文件加上一个版本号 github地址:    https

网站引入了css样式文件能访问,就是没有效果

今天后端的同事遇到这么个问题,引入了外部css文件也能访问,就是页面上没有效果. 大概是下面这个样子: css引入如下: 我非常的纳闷,说真的我还没遇到过这种情况,UI是可以运行的,一点事都没有... 没办法只有对比检查了,发现了问题所在 ,link没有加 rel="stylesheet" 属性, (以前都是自动完成,没怎么在意,汗~~) 于是就加上这个属性,就可以了(>﹏<) 这个属性是必须的,说白了就是指明你链进来的对象是个什么东西的,(我们这里指名被链接的文档是一个样

iOS项目中如何正确引入Html5文件(html/js/css)

iOS项目中使用项目中的html js css 文件时,有时会遇到引用路径出错的问题,导致html js css image文件无法加载的情况. 那么,引入H5相关文件的正确操作方式如下,这样就不会出现资源文件无法引入并正常使用的情况: 1 在项目目录下创建存放Html5文件文件夹:H5 2 将文件夹H5拖放至项目中对应的位置,此处注意要选择:Create groups 3 将各种Html5文件(html js css image等)拖放到H5文件夹中,此处注意选择:Create folder

springmvc如何访问到静态的文件,如jpg,js,css

如何你的DispatcherServlet拦截"*.do"这样的有后缀的URL,就不存在访问不到静态资源的问题. 如果你的DispatcherServlet拦截"/",为了实现REST风格,拦截了所有的请求,那么同时对*.js,*.jpg等静态文件的访问也就被拦截了. 要解决这个问题. 目的:可以正常访问静态文件,不可以找不到静态文件报404. 方案一:激活Tomcat的defaultServlet来处理静态文件 <servlet-mapping> &l

SpringMVC 无法加载js,css等静态资源文件

最近在一些技术群里看到有些朋友的馈,SpringMVC 无法加载js,css等静态资源文件,运行时报无法找到异常.下面说下原因及解决方法: 由于SpringMVC支持较优雅的Rest风格的URL,url-patten又是配置的支持所有的模式,所以对于静态资源(css,js,html等)也会去进行匹配,一旦匹配失败控制台会抛URI匹配异常. 这种情况下,需要在SpringMVC配置中增加默认的配置 <mvc:default-servlet-handler/> 增加了上面这个配置之后,原来的Req

如何访问到静态的文件,如jpg,js,css?

如果你的DispatcherServlet拦截"*.do"这样的有后缀的URL,就不存在访问不到静态资源的问题. 如果你的DispatcherServlet拦截"/",为了实现REST风格,拦截了所有的请求,那么同时对*.js,*.jpg等静态文件的访问也就被拦截了.[目前项目大多是这样的] 我们要解决这个问题. 目的:可以正常访问静态文件,不可以找不到静态文件报404. 这里要提醒一下:在WEB-INF中的静态文件怎么设置都是访问不到的.这里说的都是在WEB-IN