在动态 Web 应用程序的 JSP 页面中包含 CSS

Include CSS in JSP page of Dynamic Web Application

我的动态 Web 应用程序(在 Eclipse 中)中的 JSP 页面未根据我的 CSS 代码设置样式。我在 index.jsp 中包含了一个样式表,如下所示:

index.jsp

<html>
    <head>
        <title>To Do List - Home</title>
        <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/stylesheet.css">
    </head>
    <body>
        <a href="tasks">Tasks</a>
    </body>
</html>

而我的项目结构如下:

我以为 href="${pageContext.request.contextPath}/css/stylesheet.css 会在 ToDoList/WebContent/css/ 中寻找 stylesheet.css。如果我尝试通过 http://localhost:8080/ToDoList/css/stylesheet.css 直接导航到浏览器中的样式表,它会 returns 出现 404 错误。

我知道之前有人问过这个问题,但是通过查看其他问题,我仍然无法弄清楚我的项目结构有什么问题。

更新:

所以我将 <mvc:resources mapping="/css/**" location="/css/" /> 添加到我的 servlet 配置中,但现在当我导航到 index.jsp 以外的任何页面时,我收到 404 错误。

todolist-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans     
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- Scan for JavaConfig, annotated with @Configuration -->
    <context:component-scan base-package="com.petehallw.todolist.main" />

    <context:annotation-config/>

    <mvc:resources mapping="/css/**" location="/css/" />

    <!-- Configure Spring view resolver -->
    <bean id="viewResolver"
    class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass"
        value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

</beans>

我得到的错误是:

WARNING: No mapping found for HTTP request with URI [/ToDoList/tasks] in DispatcherServlet with name 'todolist'

这是在 index.jsp 中单击 link 到 "tasks" 之后返回的 tasks.jsp 页面。

对于应用程序中的每个 URL,您可以使用 JSTL 库中的 c:url 标签。

<a href="<c:url value="/tasks"/>">Tasks</a>. 

因此,如果您有控制器方法映射@requestmapping("/tasks"),它将被调用。

或者像在 css 文件中使用的那样尝试 <a href="${pageContext.request.contextPath}/tasks">Tasks</a>

重要提示:您应该在 xml 配置中添加 <mvc:annotation-driven /> 以支持注解驱动的 MVC 控制器,例如 @RequestMapping@Controller.