[刘阳Java]_SpringMVC方法静态资源_第9讲

有些时候我们在使用SpringMVC的时候造成无法访问静态资源文件(如:html,js,css,image等等)。其主要的原因出在web.xml文件我们设置SpringMVC前端控制器的映射路径

    <servlet>
        <servlet-name>spmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-web.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

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

上面代码中的<url-pattern>/</url-pattern>相当于拦截项目中所有请求,这样就造成无法访问静态资源文件

解决方法一:在springmvc-web.xml中添加资源映射

<mvc:resources mapping="/resources/**" location="/resources/" />
<mvc:resources mapping="/images/**" location="/images/" />
<mvc:resources mapping="/js/**" location="/js/" />
  • mapping:映射,两个*,它表示映射resources/下所有的URL,包括子路径(即接多个/)
  • location:本地资源路径,注意必须是webapp根目录下的路径

这样我们就可以直接访问该文件夹下的静态内容了,如下路径:
http://localhost:8090/firstapp/images/cookie.png
http://localhost:8090/firstapp/js/jquery-1.11.2.js

WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。

当然,你非要放在WEB-INF中,则必须修改resources映射,配置文件中代码如下

<resources mapping="/js/**" location="/WEB-INF/js/" />

解决办法二:使用默认的静态资源处理Servlet处理静态资源(涉及spring-mvc.xml, web.xml)

  • 在spring-mvc.xml中启用默认Servlet
<mvc:default-servlet-handler/>
  • 修改web.xml文件,且下面的代码必须在DispatcherServlet的前面
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
    <url-pattern>*.css</url-pattern>
    <url-pattern>/assets/*"</url-pattern>
    <url-pattern>/images/*</url-pattern>
</servlet-mapping>

解决办法三:将DispatcherServlet的URL映射改成*.do的形式,这样在访问静态资源文件就不会被拦截到

<servlet>
    <servlet-name>spmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>classpath:springmvc-web.xml</param-value>
     </init-param>
     <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
     <servlet-name>spmvc</servlet-name>
     <url-pattern>*.do</url-pattern>
</servlet-mapping>
时间: 2024-12-17 04:23:38

[刘阳Java]_SpringMVC方法静态资源_第9讲的相关文章

[刘阳Java]_Spring常用注解介绍_第6讲

Spring的注解是在Spring2.5的版本中引入的,目的简化XML配置.在企业开发过程中使用注解的频率非常高,但是学习注解的前提是大家一定要对Spring基于XML配置要熟悉,这是我个人建议,因为在Spring2.0的版本时候是没有出现注解的使用 1. Spring常用注解如下 @Component @Autowired @Qualifier @Scope @Controller @Service @Repository 2. 使用Spring注解的时候一定关注Spring框架需要加入的包[

[刘阳Java]_Spring相关配置介绍_第5讲

这一节我们介绍一下Spring框架的相关常用配置 Spring依赖注入的两种方式(构造方法注入和setter方式注入) p-namespace方式配置 properties属性文件配置方式 集合对象配置方式 Bean scopes作用域(单例作用域和原生作用域) 1. Spring依赖注入方式 构造方法注入,它相当于在Spring初始化对象的时候调用构造方法将其对象之间的依赖关系给注入到对象中 先在类中定义好依赖对象 再去定义构造方法,通过在构造方法的参数中设置对象的依赖关系 最后在Spring

[刘阳Java]_InternalResourceViewResolver视图解析器_第6讲

SpringMVC在处理器方法中通常返回的是逻辑视图,如何定位到真正的页面,就需要通过视图解析器 InternalResourceViewResolver是SpringMVC中比较常用视图解析器. 网上有一篇文章写得不错,我们也推荐大家去看看,当然要谢谢这篇博客提供的内容,转发地址:http://www.cnblogs.com/liruiloveparents/p/5054605.html 1. InternalResourceViewResolver的配置文件代码如下 <?xml versio

[刘阳Java]_SpringMVC与Struts2的对比_第12讲

今日来具体给讲讲SpringMVC与Struts2的对比,这样方便朋友们在工作中或者是面试学习中对这两者的区别有个更好的了解 把这张图放在这里,我是想说SpringMVC和Struts2真的是不一样的,虽然在都有着核心分发器等相同的功能组件(这些由MVC模式本身决定的) 为什么SpringMVC会赢得最后的胜利呢?谈几点我自己的看法: 第一.MVC框架的出现是为了将URL从HTTP的世界中映射到Java世界中,这是MVC框架的核心功能.而在URL这一点SpringMVC无疑更加优雅. 第二.从设

[刘阳Java]_Spring对Dao的支持_第10讲

Spring框架优秀就是在于MVC开发的时候一旦需要对底层的数据库操作,它可以很好的支持JDBC技术,还有现在主流的ORM框架(Hibernate, MyBatis)技术. 重点先介绍Spring对JDBC支持.在Spring对JDBC支持中提供了一个模板JdbcTemplate,此模板封装了对JDBC操作的许多方法,且消除了忽视资源释放而引起的漏洞 1. Spring对JDBC操作需要导入的jar(开发环境配置) common-dbcp.jar:提供数据源的第三方包 common-pool.j

[刘阳Java]_精选20道Java多线程面试题

1. 多线程使用的优缺点? 优点: (1)多线程技术使程序的响应速度更快 (2)当前没有进行处理的任务可以将处理器时间让给其它任务 (3)占用大量处理时间的任务可以定期将处理器时间让给其它任务 (4)可以随时停止任务 (5)可以分别设置各个任务的优先级以及优化性能 缺点: (1)等候使用共享资源时造成程序的运行速度变慢 (2)对线程进行管理要求额外的cpu开销 (3)可能出现线程死锁情况.即较长时间的等待或资源竞争以及死锁等症状 2. start()方法和run()方法简介和区别? start(

[刘阳Java]_Spring整合Servlet【补充】_第14讲

这篇内容我们给大家介绍一下Spring框架如何整合Servlet.光看表面现象这个问题感觉没有什么太大难度,但是实际在整合过程中不是那么轻松 既然是以补充的方式来介绍,那么我们就直接上一个案例来说明整合实现的步骤 1. 案例要求 通过Spring框架注解方式来打通控制层,业务逻辑层,数据访问层之间的依赖关系 控制层采用Servlet来完成对用户请求与相应的处理 然后在Servlet中通过@Autowired方式来依赖注入业务逻辑层 业务逻辑层也是通过@Autowired方式来依赖注入数据访问层

[刘阳Java]_美团点评2018届校招面试总结_Java后台开发【转载】

美团喜欢一口气把三轮技术面和HR面一起面完,虽然身心比较累(每一面差不多一个小时),不过也算是一个好事,不像某些公司一天就一面然后让回去等消息,等面试通知也等得让人很焦虑,而且还容易出现面试时间冲突. 一面 1.比较LinkedList.ArrayList的区别,分别适用于什么场景 2.Synchronized关键字和ReentrantLock的区别 3.用过哪些线程池,ThreadPoolExecutor的参数含义 4.什么是悲观锁和乐观锁,乐观锁的实现原理 5.计算机网络中OSI七层模型每一

[刘阳Java]_Spring AOP基于XML配置介绍_第9讲

基于注解配置的Spring AOP固然简单,但是这节我们会给大家介绍基于XML配置的AOP是如何应用的.为什么这么说了,因为后面我们还会介绍到Spring对Dao操作的事务管理(基于AOP的XML文件方式来配置事务) 1. 基于XML文件方式来配置Spring的AOP,则我们需要的一些基本元素如下 <aop:config.../>,此标签很重要.它是在XML里配置AOP功能的核心标签 all aspect and advisor elements must be placed within a