Spring boot MVC - HTML 文件可以工作,但 JSP 不能?

问题描述 投票:0回答:1

我一直在尝试使用 JSP 作为我正在处理的事情的视图,但由于某种原因,我在使用 jsp 文件时不断收到白标错误。我正在使用带有一些文本的纯 jsp 文件来查看它是否有效,没有特定的映射或任何东西

如果我使用 html 文件和属性文件中的“spring.mvc.view.suffix=.html”,那么它就可以工作。但由于某种原因 jsp 文件无法工作。

我想使用jsp,这样我就可以利用jstl标签来用于表单,我不知道如何使用html文件来做到这一点。

我的视图文件位于静态文件夹下。

我的属性文件中唯一的东西是数据库源

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.springboot.application</groupId>
    <artifactId>safespot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>safespot</name>
    <description>Chat application</description>
    <properties>
        <java.version>11</java.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>



        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        
        <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>7.0.0.Final</version>
        </dependency>
        
        
           <!-- JSTL -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <!-- To compile JSP files -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

控制器

@Controller
public class DemoController {

    @GetMapping("/")
    public String welcome() {
        return "index";
    }
}

index.jsp

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>


</head>
<body>
    Hello World
</body>
</html>

Folder Structure

java spring spring-boot model-view-controller
1个回答
0
投票
  1. 如果您将 Spring Boot 应用程序作为独立应用程序启动,但不在现有的 tomcat 中部署 war,则

    tomcat-embed-jasper
    依赖项必须 NOT 具有范围
    provided
    compile
    (或者可能是
    runtime
    ),与
    jstl
    相同(顺便说一句,范围
    compile
    是默认值,因此可以省略)
    .

  2. 设置

    prefix
    postfix

spring.mvc.view.prefix: /WEB-INF/classes/static/
spring.mvc.view.suffix: .jsp
© www.soinside.com 2019 - 2024. All rights reserved.