【发布时间】:2018-08-06 20:33:18
【问题描述】:
我想使用可执行 jar (Spring boot) 部署使用 jsp 文件的 Web 应用程序 项目结构:
1) 在src\main\resources\META-INF\resources\WEB-INF\jsp 文件夹中我放置了我的jsp 文件
2)app.prop 文件
spring.mvc.view.prefix : /WEB-INF/jsp/
spring.mvc.view.suffix : .jsp
3)控制器:
@Controller
@RequestMapping("test")
public class TestController {
@RequestMapping(method = RequestMethod.GET)
public String test(){
// System.out.println("Inside controller");
return "test";
}
}
当我使用 mvn package 构建它时,它会创建 jar 文件,要运行 jar 文件,我有两个选择:
1)java -jar MyJar
2)mvn spring-boot:run
当我使用 mvn spring-boot:run 并转到 localhost:8080/test 时,我的浏览器会显示测试 jsp 文件的内容
当我使用java -jar Myjar.jar 并转到相同的网址时,我会遇到 404 错误
There was an unexpected error (type=Not Found, status=404).
/WEB-INF/jsp/test.jsp
我不能总是使用mvn spring-boot:run,因为我会将jar 部署到远程服务器。如何解决这个问题?
顺便说一句,这是我的 pom
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
</project>
【问题讨论】:
-
对于 JSP,您需要一个 WAR。见docs.spring.io/spring-boot/docs/current/reference/htmlsingle/…
-
但是为什么使用 mvn spring-bot run 它可以正常工作?
-
我认为这与 java -jar target/....jar 也可以工作的原因相同 - 它是从根文件夹运行的,所以它可能发现 jsp 不是来自 .jar,但是从 src 文件夹。但是, cd target & java -jar ...jar 不起作用
标签: java maven jsp spring-boot