这个可以说是很多初学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. -->

最新文章

  1. C语言dll文件的说明以及生成、使用方法
  2. 浅析 Linux 初始化 init 系统
  3. Mac Air maven 环境配置
  4. webrtc学习(二): audio_device之opensles
  5. Python标准库:迭代器Itertools
  6. ToolStripStatusLabel设置时间自动更新
  7. android报错及解决2--Sdcard进行文件的读写操作报的异常
  8. wamp无法登录phpmyadmin问题
  9. 快速构建Windows 8风格应用1-开发工具安装及模拟器使用
  10. Mobile页面项目总结
  11. LINUX 笔记-mv命令
  12. JS的Ajax和同源策略
  13. 【MySQL】锁——查看当前数据库锁请求的三种方法 20
  14. 最短路计数——Dijkstra
  15. Oracle Linux下载教程(以Oracle Linux 6.9为例)
  16. $(document).ready和window.onload 简单分析区别
  17. Axure RP Pro 7.0
  18. Gson、FastJson、json-lib对比与实例
  19. 给mysql数据添加一个只拥有一张表的权限
  20. Linux 监测 常用测试工具

热门文章

  1. Mysql(一) 基本操作
  2. Canny边缘检测原理及C#程序实现
  3. OpenCV(C++版)图像读取,创建,复制,保存,显示
  4. win7右键新建文件夹不见了
  5. 洛谷P2633/bzoj2588 Count on a tree (主席树)
  6. angular 有关侦测组件变化的 ChangeDetectorRef 对象
  7. shiro的原理理解
  8. SSM与SSH的对比
  9. myeclipse注册机,自己生成注册码
  10. poi对word的操作(总结)