小工具      在线工具  汉语词典  dos游戏  css  js  c++  java

Spring mvc释放静态资源的方法

# Spring,mvc,spring,java 额外说明

收录于:17天前

Spring MVC是一个基于Servlet API构建的Web框架,全称是Spring Web MVC。

在传统的Servlet中,每个Servlet都有doGet和doPost方法。不管每个Servlet的功能如何,都需要创建一个Servlet API,这样徒劳地增加了力量。在 Spring MVC 中,有一个通用的 DispatcherServlet,它委托特殊的 bean 来处理请求并呈现适当的响应。这些特殊的bean 由Spring 管理。 Spring MVC 还需要 DispacherServlet。

在DispacherServlet中主要有以下Bean:
在这里插入图片描述
在这里插入图片描述
ViewResolver是视图解析器当配置了DispacherServlet后视图由该过滤器解析,还有HandlerMapping的拦截器,静态资源在后端返回时会被拦截。所以配置DispacherServlet后要进行静态资源的放行。

静态资源的三种方法:

  1. 修改拦截源。

在配置DispacherServlet的时url-parttern

<servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

对应的路径是/表示除了jsp文件的所有文件都拦截,/*拦截所有,*为通配符,在这里可使用通配符拦截特定的url,如将Ajax或form的表单提交到.do.from的地址,使用通配符*.do、*.from拦截特定后缀的地址,就不会拦截静态资源了。

<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>
  <async-supported>true</async-supported>
</servlet>
<servlet-mapping>
  <servlet-name>SpringMVC</servlet-name>
  <url-pattern>*.do</url-pattern>
</servlet-mapping>

这样设置Spring就会只针对.do结尾的进行处理,但请求地址也也要加上该后缀。

  1. spring-mvc.xml配置文件释放静态资源

在spring配置文件中添加针对静态资源的释放配置,这样spring的视图解析器的拦截器就不会拦截静态资源。

<!--放行资源-->
<mvc:resources location="/" mapping="/**/*.js"/> 
<mvc:resources location="/" mapping="/**/*.css"/> 
<mvc:resources location="/assets/" mapping="/assets/**/*"/> 
<mvc:resources location="/images/" mapping="/images/*" cache-period="360000"/>

<!--拦截器忽略资源-->
<mvc:interceptors>
  <mvc:interceptor>
    <mvc:mapping path="/**/*"/>
    <mvc:exclude-mapping path="/**/fonts/*"/>
    <mvc:exclude-mapping path="/**/*.css"/>
    <mvc:exclude-mapping path="/**/*.js"/>
    <mvc:exclude-mapping path="/**/*.png"/>
    <mvc:exclude-mapping path="/**/*.gif"/>
    <mvc:exclude-mapping path="/**/*.jpg"/>
    <mvc:exclude-mapping path="/**/*.jpeg"/>
    <mvc:exclude-mapping path="/**/*login*"/>
    <mvc:exclude-mapping path="/**/*Login*"/>
    <bean class="com.luwei.console.mg.interceptor.VisitInterceptor"></bean>
  </mvc:interceptor>
</mvc:interceptors>

选择以上两种方法之一来释放静态资源。

  1. 将无法解析的资源交给默认的Servlet进行处理。

每个Tomcat服务器都有一个默认的服务器default,可以在配置DispacherServlet时进行配置。 DispacherServlet 无法解析的资源由默认 Servlet 解析。

在 spring-mvc.xml 中启用默认 Servlet:

<mvc:default-servlet-handler/>

web.xml中增加对静态资源的处理:

<servlet-mapping>  
  <servlet-name>default</servlet-name>  
  <url-pattern>*.js</url-pattern>  
  <url-pattern>*.css</url-pattern>  
  <url-pattern>/assets/*"</url-pattern>  
  <url-pattern>/images/*</url-pattern>  
</servlet-mapping>

但当前的设置必须在Spring的Dispatcher前面。

. . .

相关推荐

额外说明

Java进阶——类加载机制

类加载机制 简述 主动引用 被动引用 情况一 情况二 情况三 加载 验证 文件格式验证 元数据验证 字节码验证 符号引用验证 准备 解析 CONSTANT_Class_info解析 CON-STANT_Fieldref_info解析 CONSTANT_M

额外说明

canvas学习(四):矩形

使用canvas的基本格式前面已经说过了,这里不再累赘,直接上代码: window.οnlοad=function(){ var myCanvas = document.getElementById("myCanvas");//获取canvas对象

额外说明

【Golang】✔️走进 Go 语言✔️ 第二十二课 json & 文件读写

【Golang】✔️走进 Go 语言✔️ 第二十二课 json & 文件读写 概述 json 编码 解码 文件读写 文件读取 写入文件 概述 Golang 是一个跨平台的新生编程语言. 今天小白就带大家一起携手走进 Golang 的世界. (第 22 课

额外说明

关于DuiLib的CRichEditUI控件在win8下输入中文乱码的解决方案

上午经理拿来一个微软suiface RT的平板,运行着我之前开发的一个软件,发现了一个bug,就是在输入富文本框内容时,竟然是乱码。       这个平板是win8系统,之前这套系统在xp、vista下都进行过系统测试的,都没有出现过这种问题,决定查找一

额外说明

vsftpd服务安装/启动/连接/退出

ftp是非常古老的一种文件传输协议,随着互联网的诞生几乎就出现了。我对vsftp的学习也可以说是经历了很漫长的过程,下面对搭建ftp做一个简单的概述,期望能够帮助到搭建ftp的朋友少走些弯路。 安装非常简单,可以通过rpm或者yum来安装。rpm也是可以

额外说明

深度学习项目_3 网络模型的构建( tensorflow)

1. 网络模型构建 pytorch 和 tensorFlow 两种框架, 此处先介绍tensorflow 2. TF.keras 构建网络模型的三种方法 适用于 TF 2.0以后的版本, 模型创建的思想: 在编写模型代码时,可以多参考借鉴别人的模型构建方

额外说明

Java案例:接口的静态方法

Java SE8,允许接口有静态方法。这样的话,接口就没有必要为了实现工具方法而提供一个伴侣类。 比如,Path接口与Paths类。 下面我们继承Path接口,创建MyPath接口,添加一个静态方法。 package net.hw.interfaces;

额外说明

《实战:如何使用Vue2.0开发一个npm组件库》- 5、方法开发

1、命名规则 小驼峰 **.js,例如:sayHello.js。src/functions文件夹下。 2、示例说明 注意 export default 名称与文件名一致。 const sayHello = (name) => { return `

额外说明

Windows系统缺失找不到aepic.dll文件的解决办法

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个aepic.dll文件(挑选

ads via 小工具