Java JSP没有';我看不到CSS

Java JSP没有';我看不到CSS,java,css,jsp,servlets,Java,Css,Jsp,Servlets,我正在尝试创建一个简单的servlet+JSP项目。其结构如下所示: index.jsp: <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>App</title> <link rel="stylesheet" type="text/css" href="../css/style.css"/>

我正在尝试创建一个简单的servlet+JSP项目。其结构如下所示:

index.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>App</title>
  <link rel="stylesheet" type="text/css" href="../css/style.css"/>
</head>
<body>
<h1>Header</h1>
</body>
</html>
web.xml:

<web-app>
    <display-name>App</display-name>

    <servlet>
        <servlet-name>IndexServlet</servlet-name>
        <servlet-class>com.example.web.IndexServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>IndexServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

应用程序
IndexServlet
com.example.web.IndexServlet
IndexServlet
/
当我启动应用程序并在浏览器中打开它时,我会看到index.jsp页面,但它的背景是白色的,因此css在那里不起作用。
可能是什么问题?

您的应用程序中有两个问题:

  • 在JSP中,应该使用
    ${pageContext.request.contextPath}
    为URL追加基本路径。有了这一点,您可以确定您将使用绝对路径而不是相对路径作为URL。那么这个,

    
    
    将是

    
    
    这也可以通过使用JSTL的
    来实现:

    
    
  • 您的servlet正在映射到应用程序中的每个请求。请注意,这包括对CSS文件等资源的简单请求。如果您没有成功地处理这些请求,可能会得到错误响应或空响应,这取决于您如何处理servlet中CSS文件的请求。我建议您将servlet的URL模式改为映射到特定路径

    
    IndexServlet
    /索引
    

  • 您的应用程序中存在两个问题:

  • 在JSP中,应该使用
    ${pageContext.request.contextPath}
    为URL追加基本路径。有了这一点,您可以确定您将使用绝对路径而不是相对路径作为URL。那么这个,

    
    
    将是

    
    
    这也可以通过使用JSTL的
    来实现:

    
    
  • 您的servlet正在映射到应用程序中的每个请求。请注意,这包括对CSS文件等资源的简单请求。如果您没有成功地处理这些请求,可能会得到错误响应或空响应,这取决于您如何处理servlet中CSS文件的请求。我建议您将servlet的URL模式改为映射到特定路径

    
    IndexServlet
    /索引
    

  • 您的规范在web.xml中的什么位置?因为默认根目录在webapp/index.jsp中,而不是webapp/pages/index.jsp中,所以没有任何更改。此页面本身在浏览器中打开,唯一的问题是css不起作用。删除“.”in../css”,这样您就告诉服务器css文件夹在根目录中(在您的情况下是这样的)@Sai您不需要web.xml中的
    来让应用程序工作。@LuiggiMendoza-我知道css文件没有加载,可能是因为css文件的路径与OP设置应用程序的方式弄乱了。我只是想知道他的应用程序是如何设置来处理主页的。如果OP打开了浏览器,他/她可能会在“网络”选项卡控制台中注意到css文件请求没有通过web.xml中的规范在哪里?因为默认根目录在webapp/index.jsp中,而不是webapp/pages/index.jsp中,所以没有任何更改。此页面本身在浏览器中打开,唯一的问题是css不起作用。删除“.”in../css”,这样您就告诉服务器css文件夹在根目录中(在您的情况下是这样的)@Sai您不需要web.xml中的
    来让应用程序工作。@LuiggiMendoza-我知道css文件没有加载,可能是因为css文件的路径与OP设置应用程序的方式弄乱了。我只是想知道他的应用程序是如何设置来处理主页的。如果OP打开了浏览器,他/她可能会在“网络”选项卡控制台中注意到css文件请求没有通过
    <web-app>
        <display-name>App</display-name>
    
        <servlet>
            <servlet-name>IndexServlet</servlet-name>
            <servlet-class>com.example.web.IndexServlet</servlet-class>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>IndexServlet</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    
    </web-app>