这个可以说是很多初学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. Measure the size of a PostgreSQL table row

    Q:   I have a PostgreSQL table. select * is very slow whereas select id is nice and quick. I think i ...

  2. Codeforces 19.E Fairy

    E. Fairy time limit per test 1.5 seconds memory limit per test 256 megabytes input standard input ou ...

  3. 使用 nginx 代理 tomcat 服务器

    server { listen 80; server_name wechat-jsp.local; root /usr/local/Cellar/tomcat/9.0.5/libexec/webapp ...

  4. linux 隐藏权限

    原文 ------通过chattr设置档案的隐藏权限------ [root@sdc ~]#chattr --helpUsage: chattr [-RV] [-+=AacDdijsSu] [-v v ...

  5. 用Tensorflow实现多层神经网络

    用Tensorflow实现多层神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 Tensorflow机器学习实战指南 源代码请点击下方链接欢迎加星 ReLU激活函数/L1范数 ...

  6. spring boot 2.0.3+spring cloud (Finchley)7、服务链路追踪Spring Cloud Sleuth

    参考:Spring Cloud(十二):分布式链路跟踪 Sleuth 与 Zipkin[Finchley 版] Spring Cloud Sleuth 是Spring Cloud的一个组件,主要功能是 ...

  7. NOIP模拟赛16

    NOIP2017金秋冲刺训练营杯联赛模拟大奖赛第一轮Day2 期望得分:100+100+ =200+ 实际得分:100+40+70=210 T1天天寄快递 直接模拟,代码丢了...... T2天天和不 ...

  8. CF540 C BFS 水

    '.'->'X' 前者走后变成后者,后者除了是终点不能再走.初始位置是X很傻的以为这样从初始点走出去后初始位置就变成不能走了,实际上是还能走一次的. 其他就是BFS,路上记得把路变成X就好了 太 ...

  9. Atcoder #017 agc017 B.Moderate Differences 思维

    LINK 题意:给出最左和最右两个数,要求往中间填n-2个数,使得相邻数间差的绝对值$∈[L,R]$ 思路:其实也是个水题,比赛中大脑宕机似的居然想要模拟构造一个数列,其实我们只要考虑作为结果的数,其 ...

  10. Python进行数据分析—可视化之seaborn

    安装seaborn,可以使用 pip: pip install seaborn 也可以使用 conda: conda install seaborn 一个简单的箱线图: import numpy as ...