我用springboot创建了一个war项目并添加了webapp和WEB-INF和web.xml但是请求并不能跳转到jsp页面(404报错),为什么啊?
pom文件
<?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.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.test</groupId>
<artifactId>spring-web-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>spring-web-demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
启动类
贴一下你的
pom
和启动类更新
@weisir
springboot
默认以jar
包和main
方式启动(在web
包下含tomcat
内嵌容器);另外一种是war
包启动(需要手动排除内嵌容器)并且将main
方法启动改成servlet
方式启动,这一点和以前的spring
启动没区别,都需要web.xml
文件等,但servlet3.0
后可以用实现类方式启动,springboot
将需要实现的类包装了下,即SpringBootServletInitializer
实现configure
方法即可。你的项目是自动生成的没错,但默认内嵌服务器不支持
JSP
模板(别的模板可以)最起码不友好,你只把maven
的打包方式改成了war
是不够的,解决方案代码层面如下另外需要在IDE
里配置web
服务器: