这个可以说是很多初学Springmvc的人都会碰到一个令人头痛的问题

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

比如我们要在 index.jsp 中引用 resource (你也可以把静态文件放在 WEB-INF 里)文件夹下的 静态文件,但是正常情况我们是无法访问的。

下面是解决方法。

方法一、开放指定类型文件访问(推荐)

1、web.xml

  1. <!-- 核心控制器 -->
  2. <servlet>
  3. <servlet-name>forestblog</servlet-name>
  4. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  5. <init-param>
  6. <param-name>contextConfigLocation</param-name>
  7. <param-value>classpath:spring/springmvc.xml</param-value>
  8. </init-param>
  9. </servlet>
  10. <servlet-mapping>
  11. <servlet-name>forestblog</servlet-name>
  12. <url-pattern>/</url-pattern>
  13. </servlet-mapping>

2、这里稍微补充一下这个 url-pattern

  1. url-pattern有5种配置模式:
  2. (1)/xxx:完全匹配/xxx的路径
  3. (2)/xxx/*:匹配以/xxx开头的路径,请求中必须包含xxx。
  4. (3)/*:匹配/下的所有路径,请求可以进入到action或controller,但是转发jsp时再次被拦截,不能访问jsp界面。
  5. (4).xx:匹配以xx结尾的路径,所有请求必须以.xx结尾,但不会影响访问静态文件。
  6. (5)/:默认模式,未被匹配的路径都将映射到刺servlet,对jpg,js,css等静态文件也将被拦截,不能访问。

3、然后再在 web.xml 里添加以下代码

要写在DispatcherServlet的前面, 让 defaultServlet先拦截请求,这样请求就不会进入spring了,我想性能是最好的吧。

  1. <!-- static resources -->
  2. <servlet-mapping>
  3. <servlet-name>default</servlet-name>
  4. <url-pattern>*.css</url-pattern>
  5. <url-pattern>*.js</url-pattern>
  6. <url-pattern>*.gif</url-pattern>
  7. <url-pattern>*.jpg</url-pattern>
  8. <url-pattern>*.jpeg</url-pattern>
  9. <url-pattern>*.png</url-pattern>
  10. <url-pattern>*.ico</url-pattern>
  11. <url-pattern>*.zip</url-pattern>
  12. <url-pattern>*.rar</url-pattern>
  13. </servlet-mapping>

4、根据我们的需求,index.jsp 里引用路径可以这样写啦

  1. <script src="resource/assets/js/script.js"></script>
  2. <link rel="stylesheet" href="resource/assets/css/style.css">
  3. <img src="resource/uploads/${user.avatar}" alt="">

方法二、配置静态资源映射

这个方法也挺好的,甚至可以配合使用。

1、同方法一的第一步,web.xml 要添加如下代码

  1. <!-- 核心控制器 -->
  2. <servlet>
  3. <servlet-name>forestblog</servlet-name>
  4. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  5. <init-param>
  6. <param-name>contextConfigLocation</param-name>
  7. <param-value>classpath:spring/springmvc.xml</param-value>
  8. </init-param>
  9. </servlet>
  10. <servlet-mapping>
  11. <servlet-name>forestblog</servlet-name>
  12. <url-pattern>/</url-pattern>
  13. </servlet-mapping>

2、在 springmvc 配置文件里添加如下代码

  1. <!-- 静态资源映射 -->
  2. <mvc:resources mapping="/css/**" location="/resource/assets/css/"></mvc:resources>
  3. <mvc:resources mapping="/js/**" location="/resource/assets/js/"></mvc:resources>
  4. <mvc:resources mapping="/img/**" location="/resource/assets/img/"></mvc:resources>
  5. <mvc:resources mapping="/uploads/**" location="/resource/uploads/"></mvc:resources>

这里的 /** 表示目录下所有文件包括子文件夹

3、然后index.jsp 里引用今天资源可以这样写

  1. <script src="js/script.js"></script>
  2. <link rel="stylesheet" href="css/style.css">
  3. <img src="uploads/${user.avatar}" alt="" >

这个方法好像有的小问题,不太稳定

这里还是用第一种方法吧

本文链接:https://liuyanzhao.com/6050.html

springmvc解决静态资源无法访问的两种方法相关推荐

  1. SpringMVC解决静态资源不能访问

    解决: 直接在SpringMVC的xml文件中加一行配置: <mvc:default-servlet-handler/> 问题根源: 做项目迁移的时候,原来控制层的框架是Struts2,现 ...

  2. java解压缩文件名乱码_解决JDKZipEntry压缩文件名乱码的两种方法

    当我们在创建java的项目过程中,有时候会遇到一些棘手的问题,就比如说:在JDk zipEntry压缩中文文件名出现乱码的问题.那么对于这个问题,我们应该怎样来解决呢?今天我们就一起来学习一下它的解决 ...

  3. 解决GitHub下载资源慢的问题(两种方法)

    解决GitHub下载资源慢的问题    最近需要使用GitHub下载一个比较大的资源,在以前一直用GitHub下载开源资源,速度一直都是很慢的,但是由于这次文件比较大,使用GitHub进行下载,速度只 ...

  4. 35pic index php,完美解决35dir获取网站缩略图问题(两种方法)

    两种修改方法针对商业版2.2 免费版本差不多 第一种方法也是我推荐的方法,把网页快照外链其他网站的缩略图,这样很省你的服务器空间和带宽资源 1.打开文件 source\module\prelink.p ...

  5. SpringMVC常用配置-添加静态资源处理器-针对SpringMVC中静态资源无法访问的问题...

    转载于:https://www.cnblogs.com/weilu2/p/springmvc_resourcehandler_registry.html

  6. Nginx或Apache禁止某些IP段访问的两种方法

    修改Nginx配置文件nginx.conf Nginx配置访问IP可以修改nginx.conf文件,只需要在server中添加allow和deny的IP即可,如下: server {     list ...

  7. 域用户迁移适用的两种方法

    在企业域林环境中,域用户的调动变更情况会经常遇到,面对这样的棘手问题,我们解决域用户迁移主要有两种方法:一种是使用微软ADMT2.0工具把域用户进行迁移:另一种是采取建立新用户把原有权限复制过来,再把 ...

  8. 查看oracle错误信息,经验:查看oracle错误信息的两种方法

    oracle又报错了,但是他的错误码让我一头雾水.我怎么知道他的错误码是什么含义呢??该死的oracle为什么有这么多错误码呀?? 不要生气,oracle虽然有很多错误码.但是他已经给你方法去查看这些 ...

  9. 产生随机字符java_java生成随机字符串的两种方法

    本文实例为大家分享了java生成随机字符串的具体代码,供大家参考,具体内容如下 import java.util.Random; public class CharacterUtils { //方法1 ...

  10. SpringMVC拦截静态资源的解决方法

    本文中的各软件版本简要信息: IDE:Myeclise17 JDK:1.8.0_111 spring:5.1.8 springMVC:5.1.8 mybatis:3.2.2 Tomcat:9.0 在使 ...

最新文章

  1. 【iOS】自定义日期选择器
  2. Bzoj3998: [TJOI2015]弦论
  3. 再学 GDI+[56]: 路径 - Warp
  4. 变量作用域函数作用域
  5. source insight 添加行号
  6. Vs 2015 调试ASP.NET Core修改监听端口
  7. 分割视图控制器(UISplitViewController)
  8. 【转】小白级的CocoaPods安装和使用教程
  9. 快速指南:剖析JBoss BPM跨进程通信
  10. 原生JS实现的DOM操作笔记(草稿整理)
  11. 人工神经网络_制作属于自己的人工神经网络
  12. Fabric学习笔记(一)- Centos 7下的Fabric 2.3.2环境搭建
  13. 什么是UIScrollView
  14. 配置多台机器SSH相互通信信任
  15. abaqus python 读取文件_通过Python脚本从Abaqus中的excel文件导入幅度数据
  16. 怎样在 linux 系统下增加一块硬盘
  17. 入门级详细USB移植教程
  18. 矿井下无线基站和地面服务器,煤矿井下无线通信系统_矿井通信
  19. ICML2022论文解读『Sparse Double Descent: Where Network Pruning Aggravates Overfitting』
  20. 我眼中 迪杰斯特拉(Dijkstra)与 普雷姆 (prim)的 区别

热门文章

  1. grafana 批量添加图表
  2. Hessian——轻量级的二进制协议远程调用实现方案
  3. Solr学习总结(五)SolrNet的基本用法及CURD
  4. 尽量使用条件属性(Conditional Attribute)而不是#if/#endif预处理
  5. sql 随机函数newid()
  6. 开启、关闭数据库mysql
  7. Silverlight 2.5D RPG游戏技巧与特效处理:(五“.NET研究”)圣赞之HLSL渲染动画
  8. Bing API 将新增 Bing 空间数据服务
  9. 我的博客也是男的(还好)
  10. 【SpringBoot_ANNOTATIONS】 生命周期 01 @Bean指定初始化和销毁方法