Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SpringBoot应用程序在从JAR提供JSP时显示白标签错误页面_Spring_Maven_Jsp_Tomcat_Spring Boot - Fatal编程技术网

SpringBoot应用程序在从JAR提供JSP时显示白标签错误页面

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运

我正在探索如何从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运行它

$ 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的
    指定为
    提供的
    编译
    ,但没有成功
pom.xml

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>