SpringMVC之静态资源访问
2016-12-03 04:01
330 查看
web.xml中的DispatcherServlet对应的<url-pattern>/</url-pattern>拦截了所有请求,静态资源也无法访问。
有的静态资源是需要限制访问的,但有的静态资源(如:css样式文件和js文件、页面用到的图片)我们是不希望进行拦截的。
SpringMVC访问静态资源有三种方式。
方案一:激活Tomcat的defaultServlet来处理静态文件
每种不需要过滤文件的后缀都需要设置一个。要写在DispatcherServlet的前面, 让defaultServlet先拦截,这个就不会进入Spring
下面的两种方式都是在springmvc的配置文件中,文件的springmvc文件该怎么配置就不多说了。
且两者都引用了mvc注解,那么需要在使用它们之前加上注解支持:
<mvc:annotation-driven />方案二,使用<mvc:default-servlet-handler/>
直接在SpringMVC配置文件中加上以下内容即可。<mvc:default-servlet-handler/>
方案三: 在spring3.0.4以后版本提供了mvc:resources
按网上搜的所有方法配置,我的css文件全放在WebContent/static/css下
<mvc:resources location="/static/css/" mapping="/css/**" />
然而依照网上的配置都不靠谱呀。
控制台出现警示:No mapping found for HTTP request with URI [/springmvcoa/static/css/ack.css] in DispatcherServlet with name 'dispatcherServlet'
页面样式无法加载。
根据控制台警告知道就是这个资源配置路径的问题。
于是直接访问样式文件,页面404报错,控制台出现上面的警告。
既然是路径的问题,我就一步步测试。
新建两个a.txt,路径分别为static/css和static/css/css
http://localhost/springmvcoa/static/css/a.txt按上面的方式,警示内容:WARN PageNotFound:1147 - No mapping found for HTTP request with URI [/springmvcoa/static/css/a.txt] in DispatcherServlet
with name 'dispatcherServlet'
不停调试location和resource后,mvc:resource配置为:
和
均可。
如果要配置多个文件夹就设置多个mvc:resource。
如果是访问static下所有目录,包括css、js、image等文件的目录,则配置:
<mvc:resources location="/static/" mapping="/static/**" />
这些方式配置的文件都是可直接访问
当加了拦截器,发现配置好可以直接访问的静态资源的路径也会被拦截,
这样static以及static子目录中的文件路径不会被拦截;登录操作也要配置为不拦截,不然没法进行登录;后期还有退出登录等操作需要不拦截。
SpringMVC可以过滤所有路径,免去了需要配置过滤器;
有的静态资源是需要限制访问的,但有的静态资源(如:css样式文件和js文件、页面用到的图片)我们是不希望进行拦截的。
SpringMVC访问静态资源有三种方式。
方案一:激活Tomcat的defaultServlet来处理静态文件
<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>*.css</url-pattern> </servlet-mapping>
每种不需要过滤文件的后缀都需要设置一个。要写在DispatcherServlet的前面, 让defaultServlet先拦截,这个就不会进入Spring
下面的两种方式都是在springmvc的配置文件中,文件的springmvc文件该怎么配置就不多说了。
且两者都引用了mvc注解,那么需要在使用它们之前加上注解支持:
<mvc:annotation-driven />方案二,使用<mvc:default-servlet-handler/>
直接在SpringMVC配置文件中加上以下内容即可。<mvc:default-servlet-handler/>
方案三: 在spring3.0.4以后版本提供了mvc:resources
按网上搜的所有方法配置,我的css文件全放在WebContent/static/css下
<mvc:resources location="/static/css/" mapping="/css/**" />
然而依照网上的配置都不靠谱呀。
控制台出现警示:No mapping found for HTTP request with URI [/springmvcoa/static/css/ack.css] in DispatcherServlet with name 'dispatcherServlet'
页面样式无法加载。
根据控制台警告知道就是这个资源配置路径的问题。
于是直接访问样式文件,页面404报错,控制台出现上面的警告。
既然是路径的问题,我就一步步测试。
新建两个a.txt,路径分别为static/css和static/css/css
http://localhost/springmvcoa/static/css/a.txt按上面的方式,警示内容:WARN PageNotFound:1147 - No mapping found for HTTP request with URI [/springmvcoa/static/css/a.txt] in DispatcherServlet
with name 'dispatcherServlet'
不停调试location和resource后,mvc:resource配置为:
<mvc:resources location="/static/css/" mapping="/static/css/**" />
和
<mvc:resources location="/static/css/" mapping="static/css/**" />
均可。
如果要配置多个文件夹就设置多个mvc:resource。
如果是访问static下所有目录,包括css、js、image等文件的目录,则配置:
<mvc:resources location="/static/" mapping="/static/**" />
这些方式配置的文件都是可直接访问
当加了拦截器,发现配置好可以直接访问的静态资源的路径也会被拦截,
<!-- 拦截器配置 --> <mvc:interceptors> <!-- 登录验证和session控制 --> <mvc:interceptor> <!-- 拦截所有路径 --> <mvc:mapping path="/**"/> <!-- 不过拦截器的请求 --> <mvc:exclude-mapping path="/static/**"/> <mvc:exclude-mapping path="/user/login"/> <bean class="com.ack.crm.interceptor.LoginInterceptor"/> </mvc:interceptor> </mvc:interceptors>
这样static以及static子目录中的文件路径不会被拦截;登录操作也要配置为不拦截,不然没法进行登录;后期还有退出登录等操作需要不拦截。
SpringMVC可以过滤所有路径,免去了需要配置过滤器;
相关文章推荐
- SpringMVC REST 风格静态资源访问配置
- SpringMVC对静态资源文件的访问(配置)
- SpringMVC访问静态资源实例讲解
- springMVC配置静态资源访问的<mvc:resources>标签的使用
- SpringMVC访问静态资源的三种方式
- SpringMVC学习笔记(5) 启用(优化)注解+静态资源访问
- springmvc如何访问静态资源
- SpringMVC 多控制器,静态资源访问,配置文件位置更改
- SpringMVC访问静态资源[转]
- SpringMVC访问静态资源
- SpringMVC访问静态资源的三种方式
- SpringMVC访问静态资源
- SpringMVC访问静态资源的三种方式
- SpringMVC访问静态资源的三种方式
- SpringMVC访问静态资源
- SpringMVC访问静态资源的三种方式
- 【SpringMVC系列一】 EasyUI + SpringMVC 解决静态资源访问
- SpringMVC中对静态资源访问处理方法
- SpringMVC访问静态资源
- SpringMvc对静态资源的访问