SpringMVC之静态资源映射

SpringMVC在做静态资源映射的时候需要注意的问题 发现问题最近在开发一个小网站,需要支持在页面上播放视频资源(暂时没考虑流媒体服务器神马的,能正常播放就行)。于是在前端使用了HTML5的video标签。并且配合projekktor播放器来实现。因为还在开发阶段,视频资源的映射就直接交给SpringMVC本身了。video 的src如localhost:8080/web/resources/videos/aaaa.mp4 这样。同时在Spring中配 阅读详情

优雅REST风格的资源URL不希望带 .html 或 .do 等后缀,由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往使用*.do、*.xhtml等方式。这就决定了请求URL必须是一个带后缀的URL,而无法采用真正的REST风格的URL。

如果将DispatcherServlet请求映射配置为”/”,则Spring MVC将捕获Web容器所有的请求,包括静态资源的请求,Spring MVC会将它们当成一个普通请求处理,因此找不到对应处理器将导致错误。

如何让Spring框架能够捕获所有URL的请求,同时又将静态资源的请求转由Web容器处理,是可将DispatcherServlet的请求映射配置为”/”的前提。由于REST是Spring3.0最重要的功能之一,所以Spring团队很看重静态资源处理这项任务,给出了堪称经典的两种解决方案。

先调整web.xml中的DispatcherServlet的配置,使其可以捕获所有的请求:

<servlet>
    <servlet-name>springMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springMVC</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

通过上面url-pattern的配置,所有URL请求都将被Spring MVC的DispatcherServlet截获。

方法1、采用<mvc:default-servlet-handler />

<mvc:default-servlet-handler />

在spring-mvc.xml中配置<mvc:default-servlet-handler />后,会在Spring MVC上下文中定义一个DefaultServletHttpRequestHandler,它会像一个检查员,对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。

使用一个servlet来处理静态资源。若我们的资源放置在webapps文件夹下的resources文件夹中,那么我们可以用名字为default的servlet来处理静态资源。因此我们还需要在上述web.xml配置的基础上加上以下配置:

<servlet-mapping>  
    <servlet-name>default</servlet-name>  
    <url-pattern>resources/*</url-pattern>  
</servlet-mapping>  

这表示default的servlet会处理url中为resources/*的对应的请求。这样,当你把你的image,css以及其他文件放在resources文件中时,spring就可以找到它啦。

一般Web应用服务器默认的Servlet名称是”default”,因此DefaultServletHttpRequestHandler可以找到它。如果你所有的Web应用服务器的默认Servlet名称不是”default”,则需要通过default-servlet-name属性显示指定:

<mvc:default-servlet-handler default-servlet-name="所使用的Web服务器默认使用的Servlet名称" />

方法2、采用<mvc:resources />(推荐)

<mvc:default-servlet-handler />将静态资源的处理经由Spring MVC框架交回Web应用服务器处理。而<mvc:resources />更进一步,由Spring MVC框架自己处理静态资源,并添加一些有用的附加值功能。

首先,<mvc:resources />允许静态资源放在任何地方,如WEB-INF目录下、类路径下等,你甚至可以将JavaScript等静态文件打到JAR包中。通过location属性指定静态资源的位置,由于location属性是Resources类型,因此可以使用诸如”classpath:”等的资源前缀指定资源位置。传统Web容器的静态资源只能放在Web容器的根路径下,<mvc:resources />完全打破了这个限制。

其次,<mvc:resources />依据当前著名的Page Speed、YSlow等浏览器优化原则对静态资源提供优化。你可以通过cacheSeconds属性指定静态资源在浏览器端的缓存时间,一般可将该时间设置为一年,以充分利用浏览器端的缓存。在输出静态资源时,会根据配置设置好响应报文头的Expires 和 Cache-Control值。

在接收到静态资源的获取请求时,会检查请求头的Last-Modified值,如果静态资源没有发生变化,则直接返回303相应状态码,提示客户端使用浏览器缓存的数据,而非将静态资源的内容输出到客户端,以充分节省带宽,提高程序性能。

在springMVC-servlet中添加如下配置:

<mvc:resources location="/,classpath:/META-INF/publicResources/" mapping="/resources/**"/>
或
<mvc:resources mapping="/images/**" location="/images/" />
<mvc:resources mapping="/js/**" location="/js/" />
<mvc:resources mapping="/css/**" location="/css/" />

以上配置将Web根路径”/”及类路径下 /META-INF/publicResources/ 的目录映射为/resources路径。假设Web根路径下拥有images、js这两个资源目录,在images下面有bg.gif图片,在js下面有test.js文件,则可以通过 /resources/images/bg.gif 和 /resources/js/test.js 访问这二个静态资源。

假设WebRoot还拥有images/bg1.gif 及 js/test1.js,则也可以在网页中通过 /resources/images/bg1.gif 及 /resources/js/test1.js 进行引用。

SpringMVC响应处理进阶:静态资源映射与响应数据统一修改实战 在Web应用开发中,前后端数据交互与静态资源访问是两大基础场景。浏览器向服务端发起请求后,SpringMVC通过DispatcherServlet统一分发,由HandlerMapping匹配处理器,再经拦截器、Controller、消息转换器生成响应。理解这条链路,才能解决静态资源404、响应结构不统一、跨域预检失败等高频问题。静态资源映射决定了HTML/CSS/JS能否被正确加载,而ResponseBodyAdvice与拦截器则提供了在响应返回前统一加工数据的能力,适合实现全局响应包装、日志记录或敏感信息 阅读详情

相关推荐

SpringBoot静态资源映射

在Web 应用中会涉及到大量的静态资源,例如:JS、CSS、HTML、图片等等。我们知道,Spring MVC 导入静态资源文件时,需要配置静态资源的映射;但在Spring Boot 中则不需要进行此项配置,因为 Spring Boot 已经默认完成了这一工作。Spring Boot为什么提供三种静态资源映射的规则:在传统的web应用中,通常会使用大量的JS和CSS,例如:Jquery.js、Bootstrap.css等等,通常需要将这些web资源拷贝到Java Web 项目的 webapp 相应目录下进行

郭宝的博客 2799

SpringBoot 静态资源映射

当涉及到Spring Boot的静态资源映射时,了解如何配置和访问静态资源是至关重要的。默认情况下,Spring Boot将resources/static目录下的内容映射到根路径,但其他同级目录需要进行额外的配置。这意味着你可以通过简单的方式管理和展示博客中的静态资源。通过正确配置application.properties或application.yml文件,你可以自定义静态资源的映射路径,以适应项目的需求。这样,你可以更灵活地处理静态资源,并确保它们能够被应用程序轻松访问。

weixin_44814196的博客 6045

【数据分享】中国371个城市的坡度矢量数据和excel数据

在城市发展的进程中,地形地貌始终是影响规划决策的关键因素,而坡度作为表征地表倾斜程度的核心指标,更是贯穿于城市建设、生态保护等诸多环节。本文将全面解读中国 371 个城市坡度数据的相关情况,包括数据概况、生成流程、应用场景等内容,为读者呈现一份详尽的坡度数据指南。

qq_39719713的博客 1844

SpringBoot对静态资源映射的处理

在解决上述问题前,我们来先了解一哈springboot是如何对静态资源的处理。 以下内容仅仅提供个人理解,不确保其正确性!! 1. SpringBoot对静态资源映射的处理 SpringBoot默认为我们提供了静态资源的处理,其通过配置类WebMvcAutoConfiguration实现的。此类存放了与web开发相关的各种配置属性和方法。 1.1 addResourceHandlers()方法 察看WebMvcAutoConfiguration类的源码。在此类中,addResourceHandlers()

菩提小猿的博客 2645

PCIe ATS介绍

主机侧使用IOMMU完成设备地址到物理memory地址的转换,以及设备访问权限的检查。但如果所有PCIe设备都在进行DMA操作,则TA(Translation Agent)和ATPT(Address Translation and Protection Table)则会成为瓶颈,从而影响系统的latency。

maxwell2ic的博客 6021

SAP特殊采购类80实战:跨工厂生产配置避坑指南(附完整测试流程)

本文深入解析SAP特殊采购类80在跨工厂生产场景下的实战应用与配置要点。文章从核心业务逻辑出发,详细拆解了后台配置、主数据与BOM的“双工厂”思维模式,并提供了从创建需求到成品收货的完整测试流程。重点揭示了多层BOM下的需求传递陷阱及常见报错解决方案,旨在帮助SAP顾问及用户规避实施风险,实现资源的灵活调度与流程自动化。

wind6的博客 1139

Spring MVC静态资源映射

>子元素则可控制更多的缓存选项。➢ max-age:用于为“Cache-Control”响应头添加max-age指令,控制缓存服务器响应的时间(单位是秒)。➢ stale-while-revalidate:用于为“Cache-Control”响应头添加stale-while-revalidate指令,该指令控制缓存数据过期多少秒之内依然有效。➢ s-maxage:用于为“Cache-Control”响应头添加s-maxage指令,该指令与max-age指令的功能大致相同,区别是该指令仅对共享缓存有效。

leva的博客 1362

[代码开源]基于DistFlow的IEEE33和IEEE69节点最优潮流模型(OPF)实现与性能分析

本文详细介绍了基于DistFlow的IEEE33和IEEE69节点最优潮流模型(OPF)的实现与性能分析。通过代码开源,展示了如何从零搭建电力系统优化模型,解决配电网中的发电成本最小化问题。文章涵盖数据准备、模型实现细节、性能优化建议及常见问题解答,为电力系统研究者提供实用参考。

weixin_29103191的博客 707

静态资源映射

我们有的时候要使用静态资源映射,我们在创建SpringBoot项目的时候,resources目录底下有static和template,系统会默认在这两个目录底下寻找前端文件,但是我们这个项目的目录是这样的。addResourceHandler是访问路径,addResourceLocations是映射后的真实路径,结尾必须要加上/,不然找不到。这就要求我们使用静态资源映射,让系统从backend和front里面读取前端文件。...

qq_61039408的博客 1469

【TM1650】STM8S TM1650芯片控制程序

以下为.h文件: #ifndef __TM1650_I2C_H #define __TM1650_I2C_H #include "stm8s.h" #include "stm8s_gpio.h" #include "tim1.h" #include "usart2.h" #include &lt;iostm8s103f3.h&gt; #include &lt;intrinsics....

cxw312864660的博客 1万+

端到端自动驾驶的精准测试场景开发

1. 背景介绍 自动驾驶技术的发展正在改变交通运输的未来,然而,要实现安全可靠的自动驾驶,需要进行大量的测试和验证。端到端自动驾驶系统的测试场景开发是实现这一目标的关键。本文将详细介绍端到端自动驾驶的精准测试场景开发,包括核心概念、算法原理、数学模型、项目实践,以及未来发展趋势。 2. 核心概念与联系

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 1318

SpringMVC 静态资源映射

通常情况下,我们在配置资源请求映射是会配置如下配置 <servlet> <servlet-name>mvc-dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <lo...

ys.hubery 1507

CRC_16---ModBus 计算方法及代码实现

1、 CRC寄存器初始值为 0xFFFF;即16个字节全为1; 2、 CRC-16 / ModBus的多项式0xA001H (1010 0000 0000 0001B) ; ‘H’表示16进制数,‘B’表示二进制数。 计算步骤为: (1).预置 16 位寄存器为十六进制 0xFFFF(即全为 1) ,称此寄存器为 CRC 寄存器; (2).把第一个 8 位数据与 16 位 CRC 寄存器的低位相异或,把结果放于 CRC 寄存器; (3).检测相异或后的CRC寄存器的最低位,若最低位为1,CRC寄存器

1万+

SpringMVC静态资源映射配置

SpringMVC访问静态资源   在SpringMVC中常用的就是Controller与View。但是我们常常会需要访问静态资源,如html,js,css,image等。 默认的访问的URL都会被DispatcherServlet所拦截,但是我们希望静态资源可以直接访问。该肿么办呢? 在配置文件:web.xml可以看到: Processes appli

gloryzyf 1万+

Whisper 模型在嘈杂环境中的表现:降噪与增强技术

本报告系统分析了OpenAI Whisper模型在嘈杂环境中的表现机制,重点揭示其内在降噪能力的技术边界,并结合语音增强(SE)、时频分析等前沿技术提出优化方案。内容覆盖从基础概念(如噪声类型对ASR的影响)到理论框架(模型架构与数学形式化),再到实际应用(端到端部署策略)的全链路分析,同时通过案例研究与可视化工具(如梅尔频谱对比图)降低复杂概念的认知门槛。核心结论指出:Whisper的多语言预训练虽提升了泛化性,但在低信噪比(SNR<5dB)场景下需结合前端降噪或联合训练技术以突破性能瓶颈。

AI 原生应用开发的博客 488

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

SpringMvc静态资源映射

本文主要介绍的是SpringMvc中的静态资源映射

gaoqiandr的博客 775

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SpringMvc系列七——静态资源映射

静态资源映射 当在 DispatcherServlet 的中配置拦截 “/” 时,除了.jsp 不会拦截以外,其他所有的请求都会经过前端控制器进行匹配*,此时静态资源,例如 *.css、*.js、*.jpg…… 就 会被前端控制器拦截,导致不能访问,出现 404 问题 通过DefaultServlet 处理静态资源 web.xml <servlet-mapping> <servlet-name>default</servlet-name> <url-patte

qq_53226437的博客 1030

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

SpringMVC_3.请求映射与静态资源处理

1.请求映射 介绍: 请求到 web.xml ,经过 SpringMVC的分发器对象 [ DispatcherServlet ] ,将请求转到 SpringMVC 框架中,通过 @RequestMapping 注解实现了请求到控制器 [ 方法 ] 的映射. @RequestMapping注解: 作用: 用于将Web请求 映射到 特定的处理程序或处理程序的方法.格式: @RequestMapping ( [ 参数.. ] )说明: ...

NeiHan2020的博客 431

springmvc 映射静态资源几种方式

1.直接用tomcat的自带的servlet default *.jpg 2.mvc:default-servlet-handler/ springmvc dispatchServlet 检查请求的url,静态资源的请求交回tomcat的自带的servlet处理 3.<mvc:resource location="/WEB-INFO/css" mapping=" /css/** "/>...

oh_my_god2014的博客 498

SpringMVC-----静态资源映射

忍住不打一把联盟,我把SpringMVC的静态资源映射搞定了

qq_48788523的博客 2272

SpringMVC学习笔记9-静态资源映射

九、 静态资源映射 当在 DispatcherServlet 的中配置拦截 “/” 时,除了*.jsp 不会拦截以外,其 他所有的请求都会经过前端控制器进行匹配,此时静态资源,例如 .css、.js、*.jpg…… 就 会被前端控制器拦截,导致不能访问,出现 404 问题。 访问web目录下untitled.png失败。因为使用DispatcherServlet,配置urlParterrn为/只会过滤jsp,那其他的会拦截,然后找Controller去调用请求处理。因为没有写,所以报错404. 1 通过

White 585

图片上传和SpringMvc配置访问图片等静态资源的映射

公司的需求是要做一个微服务来上传图片和附件等资源,并且能通过浏览器url格式为: 域名/网关配置的文件服务路由路径/静态资源直接存放的文件夹名(不在项目路径resource目录)/文件名 , 来直接进行静态资源的访问. 由于之前做过的都是使用nginx负载的静态资源, 没用过mvc来映射静态资源,所以很是头痛, 在网上看了一些帖子之后, 自己做了一下, 捣鼓了一上午没见到效果, 其中进入了一个坑, 因为我们项目访问每个微服务都要在网关进行用户登陆验证, 而我又恰好不会设置访问路径白名单, 所以测试访问静态资

qq_38955098的博客 1345

SpringMVC配置映射非WebRoot目录文件位置的静态资源访问

很多时候我们在部署项目很多时候需要一个图片服务器, 一方面原因是为了动静分离做CDN加速, 另一方面原因是文件存在WebRoot目录下,容易在部署项目时不小心删除了文件。 其实我们可以使用SpringMVC的静态资源的方式访问我们的图片路径,可以省略图片服务器。 实现很简单: &amp;amp;lt;mvc:resources mapping=&amp;quot;/images/**&amp;quot; location=&amp;quot;file:C:\&amp;

Java地带@道圣科技 3018

SpringBoot实战笔记:09_SpringMVC的静态资源映射

SpringMVC的静态资源映射 程序的静态文件(js,css,图片)等需要直接访问的话,如下配置。 1,创建目录resources/assets/js 2,修改MyMvcConfig配置文件 package com.zyf.config; import org.springframework.context.annotation.Bean; import org.spr...

android_zyf的博客 457

J2EE for SpringMVC 映射静态资源独Js不成功的问题解决

刚才博主遇到一个很头大的问题,静态资源映射了,路径语法啥的都没问题而css和img又能够映射成功,能够正常读取,经过反复检查,博主发现是版本跟不上了。看看博主的配置先:<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc

可可可可可是 的博客 653

【SpringMVC】SpringMVC基础-静态资源映射、拦截器配置、@ControllerAdvice与其他基本配置

转载请注明出处:http://blog.youkuaiyun.com/qq_26525215 本文源自【大学之旅_谙忆的博客】 Spring MVC的定制配置需要我们的配置类继承一个WebMvcConfigurerAdapter类,并在此类使用@EnableWebMvc注解,来开启对Spring MVC的配置支持,这样我们就可以重写这个类的方法,完成我们的常用配置。静态资源映射程序的静态文件(js、css、图片

谙忆-陈浩翔 8071
上一篇: SpringMVC之mvc:annotation-driven标签
下一篇: SpringMVC常用注解整理
章 鱼
博客等级 码龄10年 203粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值