spring 静态资源处理

深入 Spring 系列之静态资源处理

方案一:

一、原理:让DefaultServlet提前拦截静态请求资源:
defaultServlet提前拦截.png
二、在web.xml中加以配置:

因为web.xml的配置,优先于代码方式启动的DispatcherServlet,所以对静态资源会提前拦截

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
<!--    打开静态的资源的方法1 -->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
        <url-pattern>*.html</url-pattern>
        <url-pattern>*.css</url-pattern>
        <url-pattern>*.img</url-pattern>
    </servlet-mapping>
</web-app>

方案二:

一、原理:让DispatcherServlet开发DefaultServlet:

DispatcherServlet将不能确认资源类型转发给DefaultServlet,然后DefaultServlet将静态请求进行处理。


开放默认Servlet.png

二、在代码中:

@Configuration
@EnableWebMvc
public class MyWebConfigure implements WebMvcConfigurer {
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        //tomcat提供的默认Servlet的名字(可以省略)
        configurer.enable("default");
    }
}

方案三:

一、原理:为DispatcherServlet添加ResourceHandler:

相当于为DispatcherSerlvet,添了针对于静态资源的处理器。


添加ResourceHandler.png
二、方法:

以下代码相当于为DispathcerServlet开放了:所有未知的url资源,这些资源都将首先在/static文件夹下进行映射。

@Configuration
@EnableWebMvc

public class WebConf implements WebMvcConfigurer {
    //打开静态资源的方法3
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //这种配置方法:相当于所有找不到url pattern,都会从webapp/static/中寻找, 有一定的风险
        registry.addResourceHandler("/**")
                .addResourceLocations("/static/")
                .setCacheControl(CacheControl.maxAge(1,TimeUnit.SECONDS));
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一. Java基础部分.................................................
    wy_sure阅读 9,298评论 0 11
  • IOC 控制反转容器控制程序对象之间的关系,而不是传统实现中,有程序代码之间控制,又名依赖注入。All 类的创建,...
    irckwk1阅读 4,628评论 0 0
  • JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...
    JA尐白阅读 4,890评论 1 0
  • JSP总结(经典) day1 JSP 定义: 1)Java Server Page, Java EE 组件,本...
    91数据阅读 8,892评论 0 13
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 10,236评论 1 114

友情链接更多精彩内容