zoukankan      html  css  js  c++  java
  • Spring MVC 过滤静态资源访问

    Markdown

    过滤的必要性

    一般来说,HTTP 请求都会被映射到 DispatcherServlet,进而由具体的类来承接处理,但对于类似 js 或者 css 这样的静态资源则没必要这样,因为对资源的获取只需返回资源本身即可,无需做其他处理,那么这时就需要对一系列的资源文件做过滤处理。

    首先来看 web.xml 中针对 Spring MVC 的一个必要配置,即让 HTTP 请求映射到 DispatcherServlet:

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

    配置策略

    过滤配置要在 springmvc-config.xml 中进行,为了让资源文件不经过 DispatcherServlet,参见如下配置:

    <mvc:annotation-driven />
    <mvc:resources mapping="/resources/css/**" location="/resources/css/project1/" />
    <mvc:resources mapping="/resources/js/**"  location="/resources/js/project1/" />
    <mvc:resources mapping="/*.html" location="/" />
    

    以上代码针对 css 和 js 分别做了配置,且看如下四点说明:

    1. 静态资源文件实际所在物理路径为:“/resources/css/project1/”。
    2. 在 jsp 页面中的超链接路径(href、src)对应着配置节里的 mapping。实际的路径定义在配置节的 location 中,它可能很长,也许由于历史原因其命名也不优雅,这时通过 mapping 就可以很优雅的重新表达,让 jsp 页面的代码更简洁明快。
    <link href="<c:url value="/resources/css/input.css" />" rel="stylesheet" />
    <script src="<c:url value="/resources/js/input.js" />" ></script>
    
    1. location 属性的末尾必须带上“/”,否则报错。
    2. 只要有任何一项针对资源的映射配置(<mvc:resources />),就必须要带上 annotation-driven,反之,则不需要它。
    <mvc:annotation-driven />
    
  • 相关阅读:
    Python学习2——使用字符串(完整版)
    Python补充4——替换与修改
    Python学习3——列表和元组
    数据结构链表——双向链表
    数据结构链表—— 循环链表
    数据结构链表——静态链表
    LeetCode 61——旋转链表(JAVA)
    LeetCode 2——两数相加(JAVA)
    LeetCode 328——奇偶链表(JAVA)
    HillCrest Sensor HAL
  • 原文地址:https://www.cnblogs.com/ramantic/p/7582397.html
Copyright © 2011-2022 走看看