问题复现
代码窄化路径【@RequestMapping(value=“user”)】
静态资源在url中拼接到了【user后面】
解决方案【在页面使用绝对路径||相对路径回到上一级】
<!-- 相对路径,多了user -->
<!-- http://localhost:8080/testSpringMVC3/user/css/bootstrap.min.css -->
<!-- <link href="css/bootstrap.min.css" rel="stylesheet"> -->
<!-- ./表示当前文件夹,多了user -->
<!-- http://localhost:8080/testSpringMVC3/user/css/bootstrap.min.css -->
<!-- <link href="./css/bootstrap.min.css" rel="stylesheet"> -->
<!-- /表示绝对路径,少了项目工程名 -->
<!-- http://localhost:8080/css/bootstrap.min.css -->
<!-- <link href="./css/bootstrap.min.css" rel="stylesheet"> -->
<!-- ../表示相对路径,回到上一级,正确,但是项目变动,就需要修改-->
<!-- http://localhost:8080/testSpringMVC3/css/bootstrap.min.css -->
<link href="../css/bootstrap.min.css" rel="stylesheet">
<%-- ${pageContext.request.contextPath}获取当前项目工程名--%>
<!-- http://localhost:8080/项目工程名/css/bootstrap.min.css -->
<link href="${pageContext.request.contextPath}/css/bootstrap.min.css" rel="stylesheet">
原因
- 静态资源的路径不匹配
- 窄化路径后,在controller上指定的路径会存在,导致静态文件不能直接从项目工程名下获得
补充:【在这个方法对我来说是失效的,但可以一试】
<!-- 不拦截静态资源 -->
<!-- 配置URL中静态资源的本地映射路径 -->
<!-- location元素表示webapp目录下的js包下的所有文件;
mapping元素表示以/js开头的所有请求路径,如/js/a 或者/js/a/b;
该配置的作用是:DispatcherServlet不会拦截以/js开头的所有请求路径,并当作静态资源
交由Servlet处理 -->
<mvc:resources mapping="/user/js/**" location="/js/"/>
<mvc:resources mapping="/user/css/**" location="/css/"/>
<mvc:resources mapping="/user/fonts/**" location="/fonts/"/>
<!-- <mvc:default-servlet-handler/> -->
-
mapping:浏览器访问静态资源文件的路径
-
location:需要映射到的项目里面的真实的静态资源的路径