springMvc+jsp静态资源找不到

2014-11-24 07:14:24 · 作者: · 浏览: 0

今天使用springMvc+jsp做个项目,发现总是时不时出现静态资源文件找不到


当然google 百度后 发现大家讲的就那几种方法,让这些静态文件避过springDispatcher处理,转而使用tomcat default servlet处理的思想

照做后,发现果然可以了

A

@RequestMapping(value = "/cardtool", method = RequestMethod.GET)
public String cardTool() {
return "/cardtool";
}


顺利找到cardtool.jsp

下面是此jsp界面引用的静态资源

<script src="assets/js/card.js" type="text/java script">
<script src="assets/js/json.js" type="text/java script">

http://127.0.0.1:8010/项目名/assets/js/card.js

于是想尝试下 改变RequestMapping的value

代码摇身一变

B

@RequestMapping(value = "/cardtool/test/dev", method = RequestMethod.GET)
public String cardTool() {
return "/cardtool";
}


然后请求下 坑爹的 静态文件找不到了 奇怪啊 我这些都是相对路径引入的 怎么会呢

看了下404报错

http://127.0.0.1:8010/项目名/cardtool/assets/js/card.js

怎么会给我加了个cardtool 这怎么能找到呢

于是尝试

<script src="../assets/js/json.js" type="text/java script">

果然行了,但是 使用A又报错了

这真是首尾不得兼顾 spring怎么把我的webapp路径改掉了


最好比较伤心 无助 算了使用jsp标签吧

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>




<script src="assets/js/card.js" type="text/java script">
<script src="assets/js/json.js" type="text/java script">




行 行了 然后都试试A B方式请求 都没问题了 ,这种方法 我不喜欢使用,因为要执行计算basePath 代码 每个页面都要 但是也没好办法解决

希望springMVC能早点解决这个蛋疼的问题


下面把核心的代码粘贴出来 免得大家跟我一样

web.xml



SpringDispatcher
org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath*:/spring/spring-framework.xml
classpath:/spring/spring-base.xml
classpath:/spring/spring-web.xml


2


SpringDispatcher
/


default
/assets/*


jsp页面 就不粘贴了 见上面解析