最近在搭建服务器时遇到了一些问题。前端同学给我的css文件无法在jsp中调用。由于我遇到的问题比较特殊,所以本文先总结一些常用的解决方法,再说我自己的问题的解决方法。
一,注解驱动法
将css等文件放在webroot下(与web-inf同级)
在对应的servlet.xml文件中添加如下代码:
<mvc:annotation-driven />
<mvc:default-servlet-handler />
<mvc:resources mapping="/image/**" location="/image/"/>
<mvc:resources mapping="/css/**" location="/css/"/>
即可。
二,查找绝对路径法
css等文件存放路径同上。
在要调用静态资源的jsp中添加如下代码:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<base herf="<%=basePath%>">
<link type="text/css" rel="stylesheet" href="css/style.css">
即可。
三,实际遇到的问题
由于我所用的工程来源于网络,在controller前有如下注解
/*@RequestMapping("/user")*/
public class UserController {
此注解会导致该类下,任何情况下使用的任何片段url会加上/user。(有待研究)
浏览器f12跟踪如下
可见herf实际对应的url中插入了/user。
解决方法:将注解去掉即可。不过要注意该类下其他方法的url问题。