那便是为什么我配置好web.xml中的dispatchservlet后,js,css,乃至gif都不能正常显示了
我们来看看我们配置的web.xml
<!-- 核心掌握器 --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/applicationContext.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
之前我是这样的,那么这个是什么意思呢?
这个就涉及到一个知识点了,便是url-pattern的/于*的差异了
这里我来引用一段别人的原话
url-pattern有5种配置模式: (1)/xxx:完备匹配/xxx的路径 (2)/xxx/:匹配以/xxx开头的路径,要求中必须包含xxx。 (3)/:匹配/下的所有路径,要求可以进入到action或controller,但是转发jsp时再次被拦截,不能访问jsp界面。 (4).xx:匹配以xx结尾的路径,所有要求必须以.xx结尾,但不会影响访问静态文件。 (5)/:默认模式,未被匹配的路径都将映射到刺servlet,对jpg,js,css等静态文件也将被拦截,不能访问。
因此,如果我们一开始就采取了/的办法,那么就须要补上如下的web.xml配置来让静态文件可访问了
<!-- static resources --><servlet-mapping><servlet-name>default</servlet-name><url-pattern>.css</url-pattern></servlet-mapping> <servlet-mapping><servlet-name>default</servlet-name><url-pattern>.gif</url-pattern> </servlet-mapping> <servlet-mapping><servlet-name>default</servlet-name><url-pattern>.jpg</url-pattern></servlet-mapping> <servlet-mapping><servlet-name>default</servlet-name><url-pattern>.js</url-pattern></servlet-mapping>
但是实在大略的做法便是,我们并不须要这么繁芜,实在便是把所有须要springmvc dispatchservlet的地方,设置成.do就可以了,这样静态文件还是可以连续访问的。
否则我们要设置须要servlet-mapping的defaultServlet了。
末了再先容一种方法,这个是网上看来的,我没有考试测验过,先贴出来
<!-- 静态资源访问 <mvc:resources location=\"大众/img/\"大众 mapping=\"大众/img/\公众/> <mvc:resources location=\"大众/js/\"大众 mapping=\"大众/js/\"大众/> <mvc:resources location=\"大众/css/\"大众 mapping=\"大众/css/\"大众/> -->
给大家推举一个java版问答社区开源项目FlyCms:
https://gitee.com/could/FlyCms