无法访问WEB-INF文件夹之外的资源

时间:2013-04-30 09:25:50

标签: java jsp servlets resources web-inf

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

2 个答案:

答案 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>