spring - 带有 Spring Boot 的 JSP

标签 spring spring-boot jsp

我想在我的项目中使用jsp,但是很难。
我把这两个依赖放在 pom.xml

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>

<!-- If you want to use JSTL -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>
然后我把这两行放在 aplication.properties 中
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
我创建了一个名为“index.jsp”的页面并将其放入
<h1>
   INDEX
</h1>

<p>
   Lorem, ipsum dolor sit amet consectetur adipisicing elit. Aspernatur nam, nisi, repudiandae illum 
   ab a aut maxime deleniti voluptas praesentium dicta delectus. Voluptatibus consequuntur 
   necessitatibus hic eum suscipit, sequi autem.
</p>
还有我的 Controller :
package com.example.curso.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class IndexController {

    @GetMapping("/")
    public String index() {
        return "index";
    }
}
当我尝试访问路线时出现错误
enter image description here

最佳答案

根据您的堆栈跟踪,看起来 Thymeleaf 被配置为渲染引擎/ View 解析器。可能是因为你有 spring-boot-starter-thymeleaf在您的类路径和 spring boot 中自动配置它。
在较新版本的 Spring Boot 中,JSP 支持已被删除。因此,您需要手动配置一些东西才能使其工作。
如果您想使用 jsp 而不是 thymeleaf 作为主要渲染引擎,请删除 spring-boot-starter-thymeleaf从您的依赖项中复制您的 .jsp 文件到 webapp 文件夹下,如下所示:
应用程序属性:

spring.mvc.view.prefix:/jsp/
spring.mvc.view.suffix:.jsp
文件夹结构:
├── pom.xml
├── src
│   └── main
│       ├── java
│       │   └── gt
│       │       └── SpringBootWebApplication.java
│       ├── resources
│       │   └── application.properties
│       └── webapp
│           ├── css
│           │   └── main.css
│           └── jsp
│               └── welcome.jsp
所需的依赖项:
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
欢迎.jsp
<!DOCTYPE html>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html lang="en">
<head>
    <c:url value="/css/main.css" var="jstlCss"/>
    <link href="${jstlCss}" rel="stylesheet"/>
</head>
<body>
    <h2>Message: ${msg}</h2>
</body>

</html>
@ Controller :
    @RequestMapping("/")
    String welcome(Model m) {
        m.addAttribute("msg", "Hello");
        return "welcome";
    }
使用 mvn spring-boot:run 运行
运行@SpringBootApplication 的 main 方法可能不起作用

关于spring - 带有 Spring Boot 的 JSP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64177451/

相关文章:

java - 在不同服务器上运行的两个 Java Web 应用程序之间传输数据的最佳方式

java - 如何从文件系统调用图像?

java - JSP Hello 页面错误

java - 如何将变量放入存储库的 Neo4j 密码查询中

java - Spring Data REST - 对数据库的前 10 次调用非常慢

java - @onetoone 找到了不止一行具有给定标识符的行

java - .classpath 中排除了 Spring Boot + Eclipse : why application. 属性?

java - 没有主类的spring boot

java - Spring Security 拦截器 URL 不起作用

java mongodb 驱动程序在重复键上不会引发异常