在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提供了更为便捷的方式处理静态资源。

解决方案:

直接在servlet-context.xml中添加资源映射。

我的开发环境:

1、Eclipse Luna SP1

2、Springsource-tool-suite 3.6.4

修改servlet-context.xml,添加resource映射即可。

servlet-context.xml的路径如下:

配置文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:beans="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --><!-- Enables the Spring MVC @Controller programming model --><annotation-driven /><!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory --><resources mapping="/resources/**" location="/resources/" /><resources mapping="/images/**" location="/images/" /><resources mapping="/js/**" location="/js/" /><!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --><beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><beans:property name="prefix" value="/WEB-INF/views/" /><beans:property name="suffix" value=".jsp" /></beans:bean><context:component-scan base-package="com.yank.firstapp" />        </beans:beans>

资源映射

    <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory --><resources mapping="/resources/**" location="/resources/" /><resources mapping="/images/**" location="/images/" /><resources mapping="/js/**" location="/js/" />

mapping:映射

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

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

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

如:

http://localhost:8090/firstapp/images/cookie.png

http://localhost:8090/firstapp/js/jquery-1.11.2.js

效果:

陷阱:

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

错误方式:

WEB-INF目录作用

WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。
如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。
当然,你非要放在WEB-INF中,则必须修改resources映射,如:
<resources mapping="/js/**" location="/WEB-INF/js/" />

推荐方式:本文的目录结构为如下图所示。

转载于:https://www.cnblogs.com/mrdong/p/6104900.html

【转载】SpringMVC访问静态资源相关推荐

  1. SpringMVC访问静态资源

    鸣谢:http://blog.163.com/koko_qiang/blog/static/207213184201382091154584/ ---------------------------- ...

  2. SpringMVC访问静态资源的三种方式

    如何你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题.如果你的DispatcherServlet拦截"/",拦截了所有的请求,同时对 ...

  3. 当配置 DispatcherServlet拦截“/”,SpringMVC访问静态资源的三种方式

    如何你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题.如果你的DispatcherServlet拦截"/",拦截了所有的请求,同时对 ...

  4. Spring boot访问静态资源

    访问静态资源 添加静态资源 直接访问 访问index.html @Controller public class HelloController {@RequestMapping({"/&q ...

  5. Spring中拦截/和拦截/*的区别 - 不能访问到返回的JSP - 访问静态资源(jpg,js等)

    最近碰到了一个spring的web.xml无法跳转到index.html页面的小问题,查了之后从下面这篇文章中受益,特此转发,谢谢!!! 一.我们都知道在基于Spring的Application中,需 ...

  6. Spring Boot整合Servlet,Filter,Listener,访问静态资源

    目录 Spring Boot整合Servlet(两种方式) 第一种方式(通过注解扫描方式完成Servlet组件的注册): 第二种方式(通过方法完成Servlet组件的注册) Springboot整合F ...

  7. Docker安装的Nginx无法访问静态资源|nginx 容器静态资源无法访问

    最近在docker部署Thinkphp管理后台,部署完成后发现根目录下所有静态资源无法访问.翻了很多php 配置和nginx 配置,后来发现是因为使用Docker 容器问题. 问题描述 Docker启 ...

  8. SpringMVC指定静态资源路径

    指定静态资源路径 当SpringMVC的DispatcherServlet配置的映射路径是/时,所有的请求都将被SpringMVC拦截,如果我们想访问某个路径下的静态资源其实是不能直接访问的.基于这种 ...

  9. nginx配置静态资源html,通过nginx服务器访问静态资源(示例代码)

    通过nginx服务器访问静态资源 引言 之前在做毕设的时候接触过nginx,那时候是用来做前后端分离的.一转眼都快一年了,nginx的相关内容也忘的差不多了. 有过接触前端的同学都知道,直接在标签的s ...

最新文章

  1. SAP PM入门系列32 - S_ALR_87013432 Display Confirmations
  2. ALDownloadManager 基于Alamofire封装的下载器
  3. Marcin Grzejszczak访谈:Spring Cloud Contract
  4. java 为什么有匿名类_全面了解Java中的内部类和匿名类
  5. Navicat Premium 12连接Oracle时提示oracle library is not loaded的问题解决
  6. elasticsearch index 之 put mapping
  7. Boost:boost::bimaps::multiset_of的测试程序
  8. 比较两个文档的相似程度_您的文档对读者的友好程度如何?
  9. 使用Weka进行数据挖掘
  10. python不显示warnings
  11. xtrabackup之Innobackupex全备数据库
  12. 《图解HTTP》— 安全的HTTPS
  13. 开源生产排程aps软件dream设计思路分析
  14. RainMeter学习2
  15. App性能优化:内存优化
  16. SQLAlchemy部分
  17. CSDN的个人主页如何添加微信二维码
  18. 1.两数之和(python)
  19. WebPack的安装及使用
  20. 帝国cms教程后台关键字和tag标签自动同步更新的方法

热门文章

  1. 根据需求进行批量新增
  2. python 其他语言_谈谈Python和其他语言的区别
  3. pycharm下自建python包引入失败解决方案
  4. 九大背包问题专题--分组背包问题
  5. 2013蓝桥杯C++B:高斯日记;马虎的算式(2种解法)
  6. OpenGL基础22:贴图
  7. HDU 6134 2017 多校训练:Battlestation Operational(莫比乌斯反演+积性函数)
  8. (经典实用五大排序)选择排序,计数排序,冒泡排序,快速排序,插入排序
  9. js排序算法详解-归并排序
  10. 数据库系统实现 第一章 DBMS实现概述