zoukankan      html  css  js  c++  java
  • Java -- SpringMVC学习笔记5、静态资源访问

    1、静态资源访问

    在springmvc框架中、web.xml文件中<url-pattern/>的值如果从*.xxx改为为/后,静态资源就无法访问了。因为 DispatcherServlet会将向静态资源的获取请求,例如.css、.js、.jpg等资源的获取请求,当作是一个普通的 Controller请求。中央调度器会调用处理器映射器为其查找相应的处理器。当然也是找不到的。所以、如果使用斜杠的方式、就需要经过一些配置、才可以正常的访问静态资源。

    2、使用<mvc:resources/>

    在Spring3.0 版本后,Spring定义了专门用于处理静态资源访问请求的处理器ResourceHttpRequestHandler。并且添加了<mvc:resources/>标签,专门用于解决静态资源无法访问问题。

    2.1、需要在springmvc配置文件中添加如下形式的配置:

    <mvc:resources mapping="/images/**" location="/images/"/>
    
    • location:静态资源所在位置
    • mapping:如果访问路径和mapping里指定的访问形式匹配、就映射到localtion指定的位置访问对应的静态文件。后边的**代表任何文件和子目录。

    注意、mapping=/images/**、并不是说在前端访问静态资源路径里就一定要这样写、这里mapping的值和前台如何写访问路径没有关系、前端访问路径该怎么写还怎么写、是否需要加要根据情况,mapping的值是为了解析浏览器整个访问路径中某一部分、然后对应到localtion指定的位置。比如:

    <img src="images/img1.jpg">
    

    那么启动服务器然后打开浏览器访问图片的路径是:

     http://localhost:8080/springmvc/images/img1.jpg
    

    *路径里边有/images/img1.jpgmapping里指定的格式匹配、这样、就会到location指定的位置去找资源。而如果这样写:

    <img src="/images/img1.jpg">
    

    因为前边加斜杠、就会从根路径开始找、这样就会是这样:

    http://localhost:8080/images/img1.jpg
    

    结果就会是404、这样是错误的。

    2.2、声明注解驱动

    解决动态资源和静态资源冲突的问题,在 springmvc 配置文件加入:

    <!--声明注解驱动-->
    <mvc:annotation-driven/>
    

    2.3、访问测试

    从当前目录开始找images目录下的img1.jpg

    <body>
        <img src="images/img1.jpg">
    </body>
    

    这样、打开浏览器访问即可正常显示图片。

  • 相关阅读:
    Springboot~多个数据源时自定义datasource的bean
    springboot~aspose操作word模板实现导出功能
    spring-security-jwt的总结与实现
    mybatis+maven自动生成代码框架
    chrome 插件 vimium 像操作vim一样的操作浏览器
    递归计算过程和迭代计算过程
    找工作--Java相关
    《Linux程序设计》--读书笔记---第十三章进程间通信:管道
    poj 1474 Video Surveillance
    动态包含与静态包含的区别
  • 原文地址:https://www.cnblogs.com/dcy521/p/14794916.html
Copyright © 2011-2022 走看看