这个可以说是很多初学Springmvc的人都会碰到一个令人头痛的问题
那就是为什么我配置好web.xml中的dispatchservlet后,js,css,甚至gif都不能正常显示了
比如我们要在 index.jsp 中引用 resource (你也可以把静态文件放在 WEB-INF 里)文件夹下的 静态文件,但是正常情况我们是无法访问的。
下面是解决方法。
1、web.xml
2、这里稍微补充一下这个 url-pattern
3、然后再在 web.xml 里添加以下代码
要写在DispatcherServlet的前面, 让 defaultServlet先拦截请求,这样请求就不会进入spring了,我想性能是最好的吧。
4、根据我们的需求,index.jsp 里引用路径可以这样写啦
这个方法也挺好的,甚至可以配合使用。
1、同方法一的第一步,web.xml 要添加如下代码
2、在 springmvc 配置文件里添加如下代码
这里的 /** 表示目录下所有文件包括子文件夹
3、然后index.jsp 里引用今天资源可以这样写
这个方法好像有的小问题,不太稳定
这里还是用第一种方法吧
本文链接:https://liuyanzhao.com/6050.html
那就是为什么我配置好web.xml中的dispatchservlet后,js,css,甚至gif都不能正常显示了
![](https://oss.liuyanzhao.com/uploads/2017/08/static.png)
比如我们要在 index.jsp 中引用 resource (你也可以把静态文件放在 WEB-INF 里)文件夹下的 静态文件,但是正常情况我们是无法访问的。
下面是解决方法。
方法一、开放指定类型文件访问(推荐)
1、web.xml
- <!-- 核心控制器 -->
- <servlet>
- <servlet-name>forestblog</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:spring/springmvc.xml</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>forestblog</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
2、这里稍微补充一下这个 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等静态文件也将被拦截,不能访问。
3、然后再在 web.xml 里添加以下代码
要写在DispatcherServlet的前面, 让 defaultServlet先拦截请求,这样请求就不会进入spring了,我想性能是最好的吧。
- <!-- static resources -->
- <servlet-mapping>
- <servlet-name>default</servlet-name>
- <url-pattern>*.css</url-pattern>
- <url-pattern>*.js</url-pattern>
- <url-pattern>*.gif</url-pattern>
- <url-pattern>*.jpg</url-pattern>
- <url-pattern>*.jpeg</url-pattern>
- <url-pattern>*.png</url-pattern>
- <url-pattern>*.ico</url-pattern>
- <url-pattern>*.zip</url-pattern>
- <url-pattern>*.rar</url-pattern>
- </servlet-mapping>
4、根据我们的需求,index.jsp 里引用路径可以这样写啦
- <script src="resource/assets/js/script.js"></script>
- <link rel="stylesheet" href="resource/assets/css/style.css">
- <img src="resource/uploads/${user.avatar}" alt="">
方法二、配置静态资源映射
这个方法也挺好的,甚至可以配合使用。
1、同方法一的第一步,web.xml 要添加如下代码
- <!-- 核心控制器 -->
- <servlet>
- <servlet-name>forestblog</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:spring/springmvc.xml</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>forestblog</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
2、在 springmvc 配置文件里添加如下代码
- <!-- 静态资源映射 -->
- <mvc:resources mapping="/css/**" location="/resource/assets/css/"></mvc:resources>
- <mvc:resources mapping="/js/**" location="/resource/assets/js/"></mvc:resources>
- <mvc:resources mapping="/img/**" location="/resource/assets/img/"></mvc:resources>
- <mvc:resources mapping="/uploads/**" location="/resource/uploads/"></mvc:resources>
这里的 /** 表示目录下所有文件包括子文件夹
3、然后index.jsp 里引用今天资源可以这样写
- <script src="js/script.js"></script>
- <link rel="stylesheet" href="css/style.css">
- <img src="uploads/${user.avatar}" alt="" >
这个方法好像有的小问题,不太稳定
这里还是用第一种方法吧
本文链接:https://liuyanzhao.com/6050.html
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏