与 Spring Boot 一起使用时,JSP 页面中的 contextPath 为空

Posted

技术标签:

【中文标题】与 Spring Boot 一起使用时,JSP 页面中的 contextPath 为空【英文标题】:contextPath is empty in JSP page while using it with Spring Boot 【发布时间】:2021-12-30 18:32:40 【问题描述】:

我想在 JSP 页面上加载 CSS。但是我在 JSP 页面中得到了空的 pageContext.request.contextPath。我使用这种方法是因为如果我在模板或 JSP 内的不同目录中移动页面,那么我不需要继续更改引用的 CSS 或 js 文件的路径。

Jsp页面如下

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix = "x" uri = "http://java.sun.com/jsp/jstl/xml" %>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix = "fn" uri = "http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@page isELIgnored="false"%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>Home Page</title>
    <link rel="stylesheet" href="$pageContext.request.contextPath/static/default-theme.css" />
</head>
<body>
    <div class="container">
        <H2>Reached Home.</H2>
    </div>
</body>
</html>

application.properties 文件如下

spring.mvc.view.prefix=/templates/jsp/
spring.mvc.view.suffix=.jsp

我使用的是 Spring 2.6.0 版。连同 pom.xml 中的以下依赖项- spring-boot-starter-web spring-boot-starter-tomcat(范围:提供) tomcat-embed-jasper(范围:提供) jstl

根据 Spring Boot,pageContext 是隐式的。那么这里可能出了什么问题? 任何帮助或建议都将不胜感激。

【问题讨论】:

【参考方案1】:

检查是否删除 如果不工作测试:request.getContextPath()

毕竟看到这​​个链接: pageContext.request.contextPath not working

【讨论】:

以上是关于与 Spring Boot 一起使用时,JSP 页面中的 contextPath 为空的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 项目中使用JSP

将 Spring Boot 与 JPA 一起使用时如何持久化

将 MySQL 和 Spring Boot 应用程序与 docker 一起使用时出错

无法将 Spring Data MongoDB + Spring Data JPA 与 Spring Boot 一起使用

当我在开发模式下停止应用程序并将 build.gradle.kts 与 spring boot 一起使用时出错

Spring Boot 使用JSP时,热部署配置