springmvc解决静态资源无法访问的两种方法
这个可以说是很多初学Springmvc的人都会碰到一个令人头痛的问题
那就是为什么我配置好web.xml中的dispatchservlet后,js,css,甚至gif都不能正常显示了
比如我们要在 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
springmvc解决静态资源无法访问的两种方法相关推荐
- SpringMVC解决静态资源不能访问
解决: 直接在SpringMVC的xml文件中加一行配置: <mvc:default-servlet-handler/> 问题根源: 做项目迁移的时候,原来控制层的框架是Struts2,现 ...
- java解压缩文件名乱码_解决JDKZipEntry压缩文件名乱码的两种方法
当我们在创建java的项目过程中,有时候会遇到一些棘手的问题,就比如说:在JDk zipEntry压缩中文文件名出现乱码的问题.那么对于这个问题,我们应该怎样来解决呢?今天我们就一起来学习一下它的解决 ...
- 解决GitHub下载资源慢的问题(两种方法)
解决GitHub下载资源慢的问题 最近需要使用GitHub下载一个比较大的资源,在以前一直用GitHub下载开源资源,速度一直都是很慢的,但是由于这次文件比较大,使用GitHub进行下载,速度只 ...
- 35pic index php,完美解决35dir获取网站缩略图问题(两种方法)
两种修改方法针对商业版2.2 免费版本差不多 第一种方法也是我推荐的方法,把网页快照外链其他网站的缩略图,这样很省你的服务器空间和带宽资源 1.打开文件 source\module\prelink.p ...
- SpringMVC常用配置-添加静态资源处理器-针对SpringMVC中静态资源无法访问的问题...
转载于:https://www.cnblogs.com/weilu2/p/springmvc_resourcehandler_registry.html
- Nginx或Apache禁止某些IP段访问的两种方法
修改Nginx配置文件nginx.conf Nginx配置访问IP可以修改nginx.conf文件,只需要在server中添加allow和deny的IP即可,如下: server { list ...
- 域用户迁移适用的两种方法
在企业域林环境中,域用户的调动变更情况会经常遇到,面对这样的棘手问题,我们解决域用户迁移主要有两种方法:一种是使用微软ADMT2.0工具把域用户进行迁移:另一种是采取建立新用户把原有权限复制过来,再把 ...
- 查看oracle错误信息,经验:查看oracle错误信息的两种方法
oracle又报错了,但是他的错误码让我一头雾水.我怎么知道他的错误码是什么含义呢??该死的oracle为什么有这么多错误码呀?? 不要生气,oracle虽然有很多错误码.但是他已经给你方法去查看这些 ...
- 产生随机字符java_java生成随机字符串的两种方法
本文实例为大家分享了java生成随机字符串的具体代码,供大家参考,具体内容如下 import java.util.Random; public class CharacterUtils { //方法1 ...
- SpringMVC拦截静态资源的解决方法
本文中的各软件版本简要信息: IDE:Myeclise17 JDK:1.8.0_111 spring:5.1.8 springMVC:5.1.8 mybatis:3.2.2 Tomcat:9.0 在使 ...
最新文章
- 【iOS】自定义日期选择器
- Bzoj3998: [TJOI2015]弦论
- 再学 GDI+[56]: 路径 - Warp
- 变量作用域函数作用域
- source insight 添加行号
- Vs 2015 调试ASP.NET Core修改监听端口
- 分割视图控制器(UISplitViewController)
- 【转】小白级的CocoaPods安装和使用教程
- 快速指南:剖析JBoss BPM跨进程通信
- 原生JS实现的DOM操作笔记(草稿整理)
- 人工神经网络_制作属于自己的人工神经网络
- Fabric学习笔记(一)- Centos 7下的Fabric 2.3.2环境搭建
- 什么是UIScrollView
- 配置多台机器SSH相互通信信任
- abaqus python 读取文件_通过Python脚本从Abaqus中的excel文件导入幅度数据
- 怎样在 linux 系统下增加一块硬盘
- 入门级详细USB移植教程
- 矿井下无线基站和地面服务器,煤矿井下无线通信系统_矿井通信
- ICML2022论文解读『Sparse Double Descent: Where Network Pruning Aggravates Overfitting』
- 我眼中 迪杰斯特拉(Dijkstra)与 普雷姆 (prim)的 区别
热门文章
- grafana 批量添加图表
- Hessian——轻量级的二进制协议远程调用实现方案
- Solr学习总结(五)SolrNet的基本用法及CURD
- 尽量使用条件属性(Conditional Attribute)而不是#if/#endif预处理
- sql 随机函数newid()
- 开启、关闭数据库mysql
- Silverlight 2.5D RPG游戏技巧与特效处理:(五“.NET研究”)圣赞之HLSL渲染动画
- Bing API 将新增 Bing 空间数据服务
- 我的博客也是男的(还好)
- 【SpringBoot_ANNOTATIONS】 生命周期 01 @Bean指定初始化和销毁方法