springmvc使用@PathVariable路径匹配问题

一、问题

今天作毕设的时候,在搭建ssm框架的使用使用springmvc的@PathVariable时出现了一个路径匹配的问题,最后花了点时间解决了。

代码结构:
springmvc使用@PathVariable路径匹配问题_第1张图片

问题内容:

springmvc使用@PathVariable路径匹配问题_第2张图片

访问url为:
这里写图片描述

按照道理说,我应该到jsp的index页面去。最后的结果确实到了index页面,可是由于该页面引用了几个css和js,报异常找不到。有使用过spring经验的童鞋应该知道使用如下代码解决静态资源的访问。

// 方法一
<mvc:default-servlet-handler/>
// 方法二
<mvc:resources location="/easyui/js/" mapping="/themes/**"/>
<mvc:resources location="/easyui/themes/" mapping="/js/**"/>

可是最后还是访问不到静态资源。

于是我就想是因为@PathVariable的原因吗?于是在下面做了一个实验

@RequestMapping("/index")
 public String index() {
     System.out.println("index execute ");
     return "index";
 }

实验的结果就是可以正确访问。看样子好像确实是这样。于是我又再一次访问上面的地址(http://localhost:8080/ksxt_v1/user/index),并且打开控制台来查看,如下:
springmvc使用@PathVariable路径匹配问题_第3张图片
从上面标识的地方可以看出问题的原因了,当请求的URL为http://localhost:8080/ksxt_v1/user/index时,它在请求静态资源的时候也会把user带上,我们的静态资源肯定不是放在这个文件夹里面的了。最后的结局当然是找不到了。

二、解决方法

上面的问题产生是因为我在引用静态文件使用的是相对路径。

springmvc使用@PathVariable路径匹配问题_第4张图片

解决方法就是将其全部修改为绝对路径。

 <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/easyui/themes/icon.css">
<script type="text/javascript" src="${pageContext.request.contextPath}/easyui/js/jquery.min.js">script>
<script type="text/javascript" src="${pageContext.request.contextPath}/easyui/js/jquery.easyui.min.js">script>

最后完美解决。当然应该也有其它方式解决,暂时未想到,欢迎留言。

你可能感兴趣的:(异常分析)