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

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

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

  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的/于*的区别了

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

  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配置来让静态文件可访问了

  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了。

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

    1. <!-- 静态资源访问
    2. <mvc:resources location="/img/" mapping="/img/**"/>
    3. <mvc:resources location="/js/" mapping="/js/**"/>
    4. <mvc:resources location="/css/" mapping="/css/**"/>
    5. -->

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

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

    关于servlet的拦截设置,之前看了好多,说的都不太清除,明白. 最近明白了一些,总的来说就是保证拦截所有用户请求的同时,放行静态资源. 现整理如下: 一.我们都知道在基于Spring的Applic ...

  2. Tomcat web.xml中定义了文件扩展名到MIME类型的对应关系

    Tomcat在返回静态资源时,会根据资源文件的扩展名产生对应的content-type头(也即MIME类型)添加到response header中. 在Tomcat的web.xml规定了扩展名及相应M ...

  3. 使用Spring时web.xml中的配置

    使用Spring时web.xml中的配置: <?xml version="1.0" encoding="UTF-8"?> <web-app x ...

  4. 绝对路径${pageContext.request.contextPath}用法及其与web.xml中Servlet的url-pattern匹配过程

    以系统的一个“添加商品”的功能为例加以说明,系统页面为add.jsp,如图一所示: 图一  添加商品界面 系统的代码目录结构及add.jsp代码如图二所示: 图二   系统的代码目录结构及add.js ...

  5. SpringMVC(十六):如何使用编程方式替代/WEB-INF/web.xml中的配置信息

    在构建springmvc+mybatis项目时,更常用的方式是采用web.xml来配置,而且一般情况下会在web.xml中使用ContextLoaderListener加载applicationCon ...

  6. (转)绝对路径${pageContext.request.contextPath}用法及其与web.xml中Servlet的url-pattern匹配过程

    以系统的一个“添加商品”的功能为例加以说明,系统页面为add.jsp,如图一所示: 图一  添加商品界面 系统的代码目录结构及add.jsp代码如图二所示: 图二   系统的代码目录结构及add.js ...

  7. web.xml中welcome-file-list的作用

    今天尝试使用struts2+ urlrewrite+sitemesh部署项目,结果发现welcome-file-list中定义的欢迎页不起作用: <welcome-file-list> & ...

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

    如下一段配置,熟悉DWR的再熟悉不过了:<servlet>   <servlet-name>dwr-invoker</servlet-name>   <ser ...

  9. 详解web.xml中元素的加载顺序

    一.背景 最近在项目中遇到了启动时出现加载service注解注入失败的问题,后来经过不懈努力发现了是因为web.xml配置文件中的元素加载顺序导致的,那么就抽空研究了以下tomcat在启动时web.x ...

随机推荐

  1. Eclipse开发Java代码,如何添加智能提示

    选择:Window->Preferences->JAVA->Editor->Context Assist 在Auto activation triggers for Java处 ...

  2. 【BZOJ3052】【UOJ#58】【WC2013】糖果公园(树上莫队)

    [BZOJ3052][UOJ#58][WC2013]糖果公园(树上莫队) 题面 UOJ 洛谷 Candyland 有一座糖果公园,公园里不仅有美丽的风景.好玩的游乐项目,还有许多免费糖果的发放点,这引 ...

  3. xpose修改手机imei码,注入广告

      何为hook Hook英文翻译过来就是“钩子”的意思,那我们在什么时候使用这个“钩子”呢? 我们知道,在Android操作系统中系统维护着自己的一套事件分发机制.应用程序,包括应用触发事件和后台逻 ...

  4. SQL注入漏洞知识总结

    目录: 一.SQL注入漏洞介绍 二.修复建议 三.通用姿势 四.具体实例 五.各种绕过 一.SQL注入漏洞介绍: SQL注入攻击包括通过输入数据从客户端插入或“注入”SQL查询到应用程序.一个成功的S ...

  5. SQL注入(SQL Injection)案例和防御方案

    sql注入(SQL Injection):就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. SQL注入攻击的主要危害包括:非法读取.篡 ...

  6. BZOJ 3709&&AGC 018 C——多段排序的微扰法

    BZOJ 3709• 有n只怪物,你的初始生命值为z.• 为了打败第i只怪物,你需要消耗cost[i]点生命值,但怪物死后会使你恢复val[i]点生命值.• 任何时候你的生命值都不能小于等于0.• 问 ...

  7. 【字符串】KMP字符串匹配

    百度百科 Definition \(KMP\)算法是一个字符串匹配算法.他接收两个字符串\(A,B\),返回\(B\)在\(A\)中出现的所有位置. 以下称需要被匹配的串\(A\)为主串,可能在主串中 ...

  8. python--文件操作删除某行

    使用continue跳过本次写循环就可以了 #文本内容 Yesterday when I was young 昨日当我年少轻狂 The tasting of life was sweet 生命的滋味是 ...

  9. re正则模块

    1.正则表达式的常用符号 '.' 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 '^' 匹配字符开头,若指定flags MULTILINE,这种也可以匹配上 ...

  10. JS数字计算精度问题解决

    add(a, b) {//相加 var c, d, e; try { c = a.toString().split(".")[1].length; } catch (f) { c ...