使用Spring Boot的JAR打包能否提供JSP服务?

6 浏览
0 Comments

使用Spring Boot的JAR打包能否提供JSP服务?

我熟悉Spring Boot的JSP示例应用程序,但是该示例使用的是WAR打包方式。是否可以使用JAR实现相同的效果呢?

我的目标是将JSP文件放置在src/main/resources/jsp目录下,以简化我的应用程序结构。

0
0 Comments

Spring Boot是一个用于快速构建Java应用程序的框架。它提供了许多开箱即用的功能,使开发人员能够快速搭建应用程序。然而,Spring Boot默认情况下不支持使用JAR打包方式来提供JSP页面。

这个问题的出现是因为Spring Boot默认使用的是嵌入式的Tomcat服务器,而Tomcat默认情况下不支持运行JSP页面。因此,当使用JAR打包方式运行Spring Boot应用程序时,如果应用程序中包含JSP页面,就会出现404错误。

为了解决这个问题,我们需要做一些配置。首先,我们需要在pom.xml文件中添加以下依赖项:


    org.springframework.boot
    spring-boot-starter-tomcat
    provided


    org.apache.tomcat.embed
    tomcat-embed-jasper
    provided

然后,我们需要在application.properties文件中配置JSP的视图前缀和后缀:

spring.mvc.view.prefix: /WEB-INF/jsp/

spring.mvc.view.suffix: .jsp

接下来,我们需要将JSP文件放置在src/main/webapp/WEB-INF/jsp/目录下。然后,我们可以使用以下命令构建和打包项目:

mvn clean package

在target目录中,我们会得到一个可运行的xxxx.jar文件。现在,我们将xxxx.jar文件与src/main/webapp/WEB-INF/jsp/目录下的*.jsp文件放置在同一层级,然后使用以下命令运行项目:

java -jar xxxx.jar

这样,我们的项目就可以正常运行了,可以成功访问JSP页面,不再出现404错误。

总结起来,要在Spring Boot中使用JSP页面并使用JAR打包方式运行,我们需要进行一些配置,包括添加相关依赖项、配置视图前缀和后缀,并将JSP文件放置在正确的目录下。这样,我们就可以顺利运行Spring Boot应用程序,并成功访问JSP页面了。

0
0 Comments

在Spring Boot中,通过JAR打包来提供JSP文件的服务是可能的。然而,需要注意有一些限制和特殊配置。

根据Wilkinson的说法,与JSP相关的限制是存在的。为了能够服务JSP文件,你需要将应用程序以war包的形式打包,并以jar的方式执行。这在Spring官方网站上有详细的文档。

使用Tomcat时,如果你使用war打包,即可正常工作。但是如果使用jar打包的话,由于Tomcat中的硬编码文件模式,将无法正常工作。

以下是相关链接:

- 27.3.5 JSP限制:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-jsp-limitations

- JSP示例:http://github.com/spring-projects/spring-boot/tree/v1.3.5.RELEASE/spring-boot-samples/spring-boot-sample-web-jsp

除此之外,还有一种方法可以实现在Spring Boot中提供JSP文件的服务。你可以参考这个例子:https://github.com/mariuszs/spring-boot-web-jsp-example。使用spring-boot-maven-plugin插件或者gradle等价物来完成。使用这个插件,你可以将jar文件作为可执行文件,并且能够服务JSP文件。

可以使用以下命令来构建和执行可执行的war文件:

$ mvn package
$ java -jar target/mymodule-0.0.1-SNAPSHOT.war

或者直接使用以下命令运行:

$ mvn spring-boot:run

需要注意的是,当应用程序被打包为可执行的JAR文件时,有一些关于JSP的限制需要注意。你可以在这个链接中找到更多信息:https://github.com/spring-projects/spring-boot/tree/master/spring-boot#jsp-limitations

如果以上链接已经失效,你可以参考这个链接:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-jsp-limitations

需要注意的是,有些用户可能会遇到直接从IntelliJ的Spring Boot运行配置中无法正常运行的问题。这可能是因为运行配置的问题,可以尝试从命令行运行来解决。

总结一下,要在Spring Boot中提供JSP文件的服务,可以将应用程序打包为war,并以jar的方式执行。同时,需要注意一些限制和特殊配置。

0
0 Comments

问题的原因是Spring Boot默认使用JAR打包方式,而JAR打包方式不支持直接提供JSP页面。解决方法是将项目的打包方式改为WAR,并且不需要做其他改动。具体参考上述评论中的链接,其中有关于使用JSP的限制。虽然使用WAR打包方式可以解决问题,但是如果非要使用JAR打包方式,可以通过执行java -jar my-project.war命令来启动项目,只是需要注意项目的扩展名仍然是.jar。

0