springMvc+jsp静态资源找不到

今天使用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页面 就不粘贴了 见上面解析


希望自动跳转首页

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";
    }

你可能感兴趣的:(jsp,springMVC,静态文件访问)