我将index.jsp放在WEB-INF中。然后我有一个servlet,它将请求发送到该文件。
@WebServlet(name="Home", urlPatterns={"/"})
public class Home extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);
}
}
我有一个位于WEB-INF文件夹之外的css文件夹。它包含css.css文件。
这是index.jsp文件的内容:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link type="text/css" href="<c:url value="/css/css.css" />" rel="stylesheet">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
css文件的内容:
body {
color: red;
}
问题:为什么句子“Hello World”不变红?为什么index.jsp文件不能访问css文件?
答案 0 :(得分:1)
看起来您正在为所有传入请求映射您的servlet“Home”。因此,当浏览器发出对css url的请求时,它会被servlet截获并且无法找到它。 您可以更改主servlet的servlet映射,以便它不会拦截所有请求
@WebServlet(name="Home", urlPatterns={"/home"})
答案 1 :(得分:0)
在jsp中添加以下内容
<link rel="stylesheet" type="text/css" href="/project-context-root-name/css/myfile.css"/>
如果它没有进一步发挥作用,请执行以下步骤。
在您的web.xml文件中添加以下内容
<servlet-mapping>
<servlet-name>servlet-name</servlet-name>
<url-pattern>/css/*</url-pattern>
</servlet-mapping>