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

    在SpringMVC中常用的就是Controller与View。但是我们常常会需要访问静态资源,如html,js,css,image等。

    默认的访问的URL都会被DispatcherServlet所拦截,但是我们希望静态资源可以直接访问。该肿么办呢?

    在配置文件:web.xml可以看到:

    <!-- Processes application requests -->
        <servlet>
            <servlet-name>appServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
            
        <servlet-mapping>
            <servlet-name>appServlet</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>

    静态资源访问,其实方法有多种,如:通过开放tomcat的defaultServlet,修改默认的url-parttern。

    但是SpringMVC提供了更为便捷的方式处理静态资源。

    解决方案:

    直接在spring-mvc.xml中添加资源映射。

    <!-- 3.静态资源由WEB服务器默认的Servlet来处理 -->
        <mvc:default-servlet-handler/>
        
        <!-- 4.添加静态资源映射 -->
       <mvc:resources mapping="/error/**" location="/error/" />

     <mvc:default-servlet-handler/>:一定要配置,否则后面的映射会失效

    mapping:映射

    location:本地资源路径,注意必须是webapp根目录下的路径。

    两个*,它表示映射resources/下所有的URL,包括子路径(即接多个/) 

    这样我们就可以直接访问该文件夹下的静态内容了。

    陷阱:

    配置的location一定要是webapp根目录下才行,如果你将资源目录,放置到webapp/WEB-INF下面的话,则就会访问失败。这个问题常常会犯。

    WEB-INF目录作用

    WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。
    如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。
     
    当然,你非要放在WEB-INF中,则必须修改resources映射,如:
    <mvc:resources mapping="/js/**" location="/WEB-INF/js/" />
    <!-- Processes application requests -->
        <servlet>
            <servlet-name>appServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
            
        <servlet-mapping>
            <servlet-name>appServlet</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
  • 相关阅读:
    Netty入门
    hashCode方法里为什么选择数字31作为生成hashCode值的乘数
    【转】String hashCode 方法为什么选择数字31作为乘子
    NppFTP小插件的使用
    事务的基础入门
    Code Review 程序员的寄望与哀伤【转载】
    谈谈敏捷开发【转载】
    如何写代码 — 编程内功心法【转载】
    面经【转载】
    Swagger的简单入门【转载】
  • 原文地址:https://www.cnblogs.com/lukelook/p/9639459.html
Copyright © 2011-2022 走看看