今天使用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/javascript"></script>
<script src="assets/js/json.js" type="text/javascript"></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/javascript"></script>
果然行了,但是 使用A又报错了
这真是首尾不得兼顾 spring怎么把我的webapp路径改掉了
最好比较伤心 无助 算了使用jsp标签吧
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<head>
<base href="<%=basePath%>">
<meta charset="utf-8" />
<script src="assets/js/card.js" type="text/javascript"></script>
<script src="assets/js/json.js" type="text/javascript"></script>
行 行了 然后都试试A B方式请求 都没问题了 ,这种方法 我不喜欢使用,因为要执行计算basePath 代码 每个页面都要 但是也没好办法解决
希望springMVC能早点解决这个蛋疼的问题
下面把核心的代码粘贴出来 免得大家跟我一样
web.xml
<!-- 配置前端 控制器 -->
<servlet>
<servlet-name>SpringDispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/spring/spring-framework.xml
classpath:/spring/spring-base.xml
classpath:/spring/spring-web.xml
</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringDispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/assets/*</url-pattern>
</servlet-mapping>
jsp页面 就不粘贴了 见上面解析
2
希望自动跳转首页
localhost:8080 redirect to localhost:8080/index do it like this:
web.xml
<welcome-file-list>
<welcome-file>index</welcome-file>
</welcome-file-list>
<servlet-mapping>
<servlet-name>SpringDispatcher</servlet-name>
<url-pattern>/index</url-pattern>
</servlet-mapping>
Controller
@RequestMapping(value = "/index", method = RequestMethod.GET)
public String index(ModelMap model) {
dealListReQuest("tw","all","all","paragon_level","damage", model);//给个默认值
return "online/webrank/index";
}