我在localhost:8080/Project
部署了一个webapp,其中Project是上下文名称。 webapp正确地将用户重定向到index.jsp。
但找不到此index.jsp中的css文件(错误404)。
Index.jsp包含此引用:
<html lang="en">
<head>
<link href="../css/style.css" rel="stylesheet">
</head>
</html>
我的项目在WEB-INF文件夹中具有以下结构:
WEB-INF/views/index.jsp
WEB-INF/css/style.css
我还尝试通过url localhost:8080/Project/css/style.css
直接调用css文件,但这也不行。
我按照建议将css文件夹重新定位了一级(与WEB-INF处于同一级别)。问题仍然存在。我是否必须在此/css
中排除以@Controller
开头的网址?或许我走错了路......
@Controller
@RequestMapping("/")
public class IndexController {
@RequestMapping(method = RequestMethod.GET)
public String sayHello(ModelMap model) {
return "index";
}
}
答案 0 :(得分:2)
浏览器已加载localhost:8080/Project
,然后继续相对于该网址加载../css/style.css
,因此尝试加载显然无效的localhost:8080/css/style.css
。
您不应在/WEB-INF
下放置CSS,JS和图像等网络资源,因为无法从该位置访问它们。而是使用像
WEB-INF/views/index.jsp
css/style.css
并在JSP中编写
<link href="css/style.css" rel="stylesheet">
答案 1 :(得分:1)
WEB-INF是URL无法访问的私有文件夹,但可以通过servlet Java代码访问。你应该将你的html,css,js放在与WEB-INF文件夹所在的文件夹级别相同的位置。也就是说,将它们放在WEB-INF附近,而不是在内部。
因此典型的webapp文件夹看起来像
*Name of webapp*
|-js
|-index.js
|-css
|-style.css
|-index.html
|-WEB-INF
|-private files...
然后尝试
<link href="css/style.css" rel="stylesheet">