2

我将 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文件?

4

2 回答 2

1

看起来您正在为所有传入请求映射您的 servlet“主页”。所以当浏览器对css url进行请求时,会被servlet拦截,无法找到。您可以更改主 servlet 的 servlet 映射,使其不会拦截所有请求

@WebServlet(name="Home", urlPatterns={"/home"})
于 2013-04-30T10:23:40.427 回答
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>
于 2013-04-30T10:15:13.037 回答