web.xml中的dispatchservlet后,js,css,甚至gif都不能正常显示

这个可以说是很多初学Springmvc的人都会碰到一个令人头痛的问题

那就是为什么我配置好web.xml中的dispatchservlet后,js,css,甚至gif都不能正常显示了

我们来看看我们配置的web.xml

[html] view plain copy

print?

  1. <!-- 核心控制器 -->
  2. <servlet>
  3. <servlet-name>springmvc</servlet-name>
  4. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  5. <init-param>
  6. <param-name>contextConfigLocation</param-name>
  7. <param-value>/WEB-INF/applicationContext.xml</param-value>
  8. </init-param>
  9. <load-on-startup>1</load-on-startup>
  10. </servlet>
  11. <servlet-mapping>
  12. <servlet-name>springmvc</servlet-name>
  13. <url-pattern>/</url-pattern>
  14. </servlet-mapping>

之前我是这样的,那么这个是什么意思呢?

这个就涉及到一个知识点了,就是url-pattern的/于*的区别了

这里我来引用一段别人的原话

[plain] view plain copy

print?

  1. url-pattern有5种配置模式:
  2. (1)/xxx:完全匹配/xxx的路径
  3. (2)/xxx/*:匹配以/xxx开头的路径,请求中必须包含xxx。
  4. (3)/*:匹配/下的所有路径,请求可以进入到action或controller,但是转发jsp时再次被拦截,不能访问jsp界面。
  5. (4).xx:匹配以xx结尾的路径,所有请求必须以.xx结尾,但不会影响访问静态文件。
  6. (5)/:默认模式,未被匹配的路径都将映射到刺servlet,对jpg,js,css等静态文件也将被拦截,不能访问。

因此,如果我们一开始就采用了/的方式,那么就需要补上如下的web.xml配置来让静态文件可访问了

[html] view plain copy

print?

  1. <!-- static resources -->
  2. <servlet-mapping>
  3. <servlet-name>default</servlet-name>
  4. <url-pattern>*.css</url-pattern>
  5. </servlet-mapping>
  6. <servlet-mapping>
  7. <servlet-name>default</servlet-name>
  8. <url-pattern>*.gif</url-pattern>
  9. </servlet-mapping>
  10. <servlet-mapping>
  11. <servlet-name>default</servlet-name>
  12. <url-pattern>*.jpg</url-pattern>
  13. </servlet-mapping>
  14. <servlet-mapping>
  15. <servlet-name>default</servlet-name>
  16. <url-pattern>*.js</url-pattern>
  17. </servlet-mapping>

但是其实简单的做法就是,我们并不需要这么复杂,其实就是把所有需要springmvc dispatchservlet的地方,设置成.do就可以了,这样静态文件还是可以继续访问的。

否则我们要设置需要servlet-mapping的defaultServlet了。

最后再介绍一种方法,这个是网上看来的,我没有尝试过,先贴出来

[html] view plain copy

print?

    1. <!-- 静态资源访问
    2. <mvc:resources location="/img/" mapping="/img/**"/>
    3. <mvc:resources location="/js/" mapping="/js/**"/>
    4. <mvc:resources location="/css/" mapping="/css/**"/>
    5. -->
时间: 2024-11-08 22:46:23

web.xml中的dispatchservlet后,js,css,甚至gif都不能正常显示的相关文章

7、jsp在xml中设置映射后,css失效以及跳转网页404问题

错误现象: 在xml中设置管理界面得映射后,管理界面css样式不显示,以及原来可以跳转到的页面404. 问题所在: jsp未放在虚拟路径得根目录下,就是没放在webcontent下,像我的ActIns.jsp未放在webcontent下一样. 无论你的jsp在哪里,只要在xml设置了映射,那么他所在得相对路径就是虚拟路径的根目录下,找css和跳转相对路径都应该注意这一点. 解决办法: 此时,像我在去找css,或者跳转地址时,应该从虚拟路径得根目录下开始. 跳转页面得话,因为我需要来回进行跳转,所

使用框架时,在web.xml中配置servlet时,拦截请求/和/*的区别。

关于servlet的拦截设置,之前看了好多,说的都不太清除,明白. 最近明白了一些,总的来说就是保证拦截所有用户请求的同时,放行静态资源. 现整理如下: 一.我们都知道在基于Spring的Application中,需要在web.xml中增加下面类似的配置信息: 1 <listener> 2 <listener-class> 3 org.springframework.web.context.ContextLoaderListener 4 </listener-class>

springmvc在web.xml中的配置详解

                          <servlet> <servlet-name>springMvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-

web.xml中常用元素的解读

前言 针对一个项目而言,通常会有几类XML文件需要书写. web.xml spring-context.xml spring-mvc.xml other.xml ... 不管有多少配置文件,可以肯定的一点,这些配置文件,都是在web.xml中被指定的. 后续慢慢阐述. web.xml web.xml可以理解为一个Java Web项目入口.在web.xml中通常会有如下几种类型的节点存在,按照加载顺序排列. Listener 此为监听器,在上面3个中是后弦加载的,表示监听某个动作是否发生,发生后要

web.xml中的url-pattern映射规则

Servlet和filter是J2EE开发中常用的技术,使用方便,配置简单.servlet和filter中的url-pattern有一些文章在里面的,总结了一些东西,以免遇到问题又要浪费时间. 一,servlet容器对url的匹配过程: 当 一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访问的是 http://localhost/test/aaa.html,我的应用上下文是test,容器会将http://localho

web.xml中Filter,Listener,Servlet的区别

一.Servlet Servlet是基本的服务端程序,他来自接口Servlet,接口中有方法service.而Servlet的一个重要实现类,则是tomcat服务器的核心,那就是HttpServlet HttpServlet有方法: public abstract class HttpServlet extends GenericServlet { private static final String METHOD_DELETE = "DELETE"; private static

SpringMVC: web.xml中声明DispatcherServlet时一定要添加load-on-startup标签

游历SpringMVC源码后发现,在web.xml中注册的ContextLoaderListener监听器只是初始化了一个根上下文,仅仅完成了组件扫描和与容器初始化相关的一些工作,并没有探测到具体每个URL应当map到哪个Controller, 哪个方法上.而剩一下的这些复杂工作都是由DispatcherServet来完成的,即应用服务器加载DispatcherServlet调用init()方法时才能触发这项工作.所以,如果在web.xml中配置DispatcherServlet时不设置 <lo

服务器启动时Webapp的web.xml中配置的加载顺序

一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文. 3.容器将<context-param>转换为键值对,并交给servletContext. 4.容器创建<listener>中的类实例,创建监听器. 二  Load-on-startup Lo

web.xml中load-on-startup的作用

如下一段配置,熟悉DWR的再熟悉不过了:<servlet>   <servlet-name>dwr-invoker</servlet-name>   <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>   <init-param>    <param-name>debug</param-name>    <para