SpringBoot应用程序在从JAR提供JSP时显示白标签错误页面
我正在探索如何从JAR文件提供JSP。我使用的是SpringBoot 1.5.10.RELEASE 我参考了一些示例,并能够创建SpringBoot应用程序SpringBoot应用程序在从JAR提供JSP时显示白标签错误页面,spring,maven,jsp,tomcat,spring-boot,Spring,Maven,Jsp,Tomcat,Spring Boot,我正在探索如何从JAR文件提供JSP。我使用的是SpringBoot 1.5.10.RELEASE 我参考了一些示例,并能够创建SpringBoot应用程序 在位置src/main/resources/META-INF/resources/WEB-INF/jsp/ 视图解析器的前缀为/WEB-INF/jsp/,后缀为.jsp 奇怪的是,当我以springboot应用程序或Java应用程序的形式运行项目时,我能够点击控制器并得到所需的JSP文件作为响应。之后,我考虑打包应用程序,然后从JAR运
- 在位置src/main/resources/META-INF/resources/WEB-INF/jsp/
- 视图解析器的前缀为/WEB-INF/jsp/,后缀为.jsp
$ mvn package
$ java -jar target/springboot-web-jar-demo-0.0.1-SNAPSHOT.jar
SpringBoot应用程序出现了,当我点击相同的URL模式时,控件出现在映射方法中,但之后
白标错误页
此应用程序没有/error的显式映射,因此您将其视为回退
2018年2月28日星期三21:01:09国际标准时间出现意外错误(类型=未找到,状态=404)。
/WEB-INF/jsp/index.jsp 我的问题
- 在IDE中运行的springboot应用程序和作为JAR运行的springboot应用程序之间有什么主要区别吗?这甚至会导致404
- SpringBoot1.5.10.RELEASE是否支持从JAR提供JSP服务?(如果是,那么我在这里缺少什么,如果不是,那么在哪里提到它)——
- 请不要提供战争包装的解决方案
- 我知道JSP现在不是最好的选择,我只是在学习
- 我知道我可以寻找其他选择,比如百里眼、freemarker和velocity
- 我不想降级SpringBoot版本
- 我还尝试将jasper&JSTL的
指定为提供的
和
编译
,但没有成功
4.0.0
com.atuldwivedi.learn.springboot
SpringBootWebJAR演示
0.0.1-快照
罐子
SpringBootWebJAR演示
了解如何从JAR提供JSP服务
org.springframework.boot
spring启动程序父级
1.5.10.1发布
UTF-8
UTF-8
1.8
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧起动试验
测试
org.apache.tomcat.embed
汤姆卡特·贾斯珀
javax.servlet
jstl
org.springframework.boot
springbootmaven插件
为了让spring boot识别他们的JSP,您需要在src.main中创建一个webapp目录,如下所示:
src/main/webapp/WEB-INF/jsp
而不是像:
src/main/resources/META-INF/resources/WEB-INF/jsp对于dispatcherServelet识别其jsp,您可以在src.main中创建一个webapp目录,如下所示: src/main/webapp/WEB-INF/jsp 还可以在application.properties中自动配置应用程序 spring.mvc.view.prefix:/WEB-INF/jsp
spring.mvc.view.suffix:.jsp`在使用可执行jar时不支持jsp。您的答案适用于
war
,但不适用于jar
。我已经清楚地提到,我正在进行JAR部署,所以尝试添加到pom.xml:javax.servlet api 2.5,前提是这也不起作用。理想情况下,如果使用嵌入式tomcat,我们不应该提供servlet api
依赖关系。我在年获得了一个带有jsp的maven项目spring boot,用jar部署,如果您需要,请告诉我上载到GitHub抱歉,响应延迟,我不在站点,请将您的工作项目上载到GitHub,我会把它交出来看看。谢谢欢迎批评,你可以否决这个问题,但请分享你的想法,你为什么这么做。。。谢谢你不能这么说。因为他使用的是spring框架,所以使用嵌入式tomcat是可能的。因此,你的回答没有帮助,也不正确。
<?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
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.atuldwivedi.learn.springboot</groupId>
<artifactId>springboot-web-jar-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot-web-jar-demo</name>
<description>Learn how to serve JSP from JAR</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
<relativePath />
</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.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>