springboot.14.springboot使用jsp模板打包成jar(代码片段)

潮汐先生 潮汐先生     2022-11-24     725

关键词:

SpringBoot.14.SpringBoot使用jsp模板打包成jar

前言

关于SpringBoot使用jsp模板打包成jar的方式运行在文章SpringBoot.08.SpringBoot文件上传与下载中我们简单的提到过一次,这里我们来详细记录一下过程和注意事项

实现步骤

这里我们就以文章SpringBoot.12.SpringBoot中的拦截器中的Module为例进行打包测试

1.pom.xml

<?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.5.0</version>
        <relativePath/>
    </parent>

    <groupId>com.christy</groupId>
    <artifactId>springboot-08-interceptor</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-08-interceptor</name>
    <description>Demo project for Spring Boot</description>
    <!-- 指定打包方式为jar(默认) -->
    <packaging>jar</packaging>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!-- spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- spring-boot-starter-test -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.6</version>
        </dependency>

        <!-- mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>

        <!-- mybatis-spring-boot-starter
          由于springboot整合mybatis版本中默认依赖mybatis 因此不需要额外引入mybati版本,否则会出现冲突
         -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>

        <!-- 每次新建的项目如果需要开启热部署都需要引入该依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!-- c标签库 -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <!-- 让内嵌tomcat具有解析jsp功能 -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>

        <!-- 文件上传相关 -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.8.0</version>
        </dependency>

        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.4</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-io</groupId>
                    <artifactId>commons-io</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!-- 一定要注意mvn的插件一定是1.4.2.RELEASE,否则jsp访问不到 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.4.2.RELEASE</version>
            </plugin>
        </plugins>

        <resources>
            <!-- 打包时将jsp文件拷贝到META-INF目录下-->
            <resource>
                <!-- 指定resources插件处理哪个目录下的资源文件 -->
                <directory>src/main/webapp</directory>
                <!-- 注意必须要放在此目录下才能被访问到 -->
                <targetPath>META-INF/resources</targetPath>
                <includes>
                    <include>**/**</include>
                </includes>
            </resource>

            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/**</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>
</project>
<build>
 <plugins>
   <!-- 一定要注意mvn的插件一定是1.4.2.RELEASE,否则jsp访问不到,如下图所示 -->
   <plugin>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-maven-plugin</artifactId>
     <version>1.4.2.RELEASE</version>
   </plugin>
 </plugins>

 <resources>
   <!-- 打包时将jsp文件拷贝到META-INF目录下-->
   <resource>
     <!-- 指定resources插件处理哪个目录下的资源文件 -->
     <directory>src/main/webapp</directory>
     <!-- 注意必须要放在此目录下才能被访问到 -->
     <targetPath>META-INF/resources</targetPath>
     <includes>
       <include>**/**</include>
     </includes>
   </resource>

   <resource>
     <directory>src/main/resources</directory>
     <includes>
       <include>**/**</include>
     </includes>
     <filtering>false</filtering>
   </resource>
 </resources>
</build>

2.打包

我们点击IDEA的右侧边栏的Maven标签,依次点击springboot-08-interceptor下面的Lifecycle下的clearpackage命令。如下图所示:


package命令执行完毕后,我们能够在项目下面的target包下面看到我们生成的jar包。如下图所示:

3.上传至服务器

打开我们Linux服务器Christy(BaseOS),ip地址为192.168.8.100。如下图所示:

执行cd命令进入到/usr/apps目录下,执行rz命令,选择刚才生成的jar进行上传。如下图所示:

4.运行

执行命令java -jar springboot-08-interceptor-0.0.1-SNAPSHOT.jar nohup &可以后台运行该程序,如下图所示:

此时我们执行命令Ctrl+C,该程序会切换到后台运行,我们执行jps命令会发现该进程依然存在,如下图所示:

5.测试

我们浏览器访问http://192.168.8.100:8808/interceptor.jsp页面可以正常访问。如下图所示:

当我们浏览器访问http://192.168.8.100:8808/interceptor/sayHello时控制台会输出以下内容:

当有请求访问该程序时程序自动转换到前台运行,非常方便。

springboot.14.springboot使用jsp模板打包成jar(代码片段)

SpringBoot.14.SpringBoot使用jsp模板打包成jar前言实现步骤1.pom.xml2.打包3.上传至服务器4.运行5.测试前言关于SpringBoot使用jsp模板打包成jar的方式运行在文章SpringBoot.08.SpringBoot文件上传与下载中我们简单的提到过一次,这里我们来详... 查看详情

springboot.14.springboot使用jsp模板打包成jar(代码片段)

SpringBoot.14.SpringBoot使用jsp模板打包成jar前言实现步骤1.pom.xml2.打包3.上传至服务器4.运行5.测试前言关于SpringBoot使用jsp模板打包成jar的方式运行在文章SpringBoot.08.SpringBoot文件上传与下载中我们简单的提到过一次,这里我们来详... 查看详情

springboot.14.springboot使用jsp模板打包成jar(代码片段)

SpringBoot.14.SpringBoot使用jsp模板打包成jar前言实现步骤1.pom.xml2.打包3.上传至服务器4.运行5.测试前言关于SpringBoot使用jsp模板打包成jar的方式运行在文章SpringBoot.08.SpringBoot文件上传与下载中我们简单的提到过一次,这里我们来详... 查看详情

springboot3.0.0m32.7.0发布,2.5.x将停止维护

昨晚(5月19日),SpringBoot官方发布了一系列SpringBoot的版本更新,其中包括:SpringBoot3.0.0-M3SpringBoot2.7.0SpringBoot2.6.8SpringBoot2.5.14SpringBoot3.0.0-M3此版本包括74个bug修复、文档改进和依赖项升级,其中 查看详情

springboot3.0.0m32.7.0发布,2.5.x将停止维护(代码片段)

昨晚(5月19日),SpringBoot官方发布了一系列SpringBoot的版本更新,其中包括:SpringBoot3.0.0-M3SpringBoot2.7.0SpringBoot2.6.8SpringBoot2.5.14SpringBoot3.0.0-M3此版本包括74个bug修复、文档改进和依赖项升级,其中 查看详情

springboot3.0.0m32.7.0发布,2.5.x将停止维护(代码片段)

昨晚(5月19日),SpringBoot官方发布了一系列SpringBoot的版本更新,其中包括:SpringBoot3.0.0-M3SpringBoot2.7.0SpringBoot2.6.8SpringBoot2.5.14SpringBoot3.0.0-M3此版本包括74个bug修复、文档改进和依赖项升级,其中 查看详情

springboot3.0.0m32.7.0发布,2.5.x将停止维护(代码片段)

昨晚(5月19日),SpringBoot官方发布了一系列SpringBoot的版本更新,其中包括:SpringBoot3.0.0-M3SpringBoot2.7.0SpringBoot2.6.8SpringBoot2.5.14SpringBoot3.0.0-M3此版本包括74个bug修复、文档改进和依赖项升级,其中值得注意的... 查看详情

使引导容器大小变大会使页面无响应

】使引导容器大小变大会使页面无响应【英文标题】:makingthebootstrapcontainersizebiggermakesthepageunresponsive【发布时间】:2021-11-1021:23:20【问题描述】:我需要使引导程序的容器大小更大。我放这个样式表是为了让容器变大:@media(min-... 查看详情

如何使 RelativeLayout 半透明但不使活动

】如何使RelativeLayout半透明但不使活动【英文标题】:HowtomakeaRelativeLayoutsemi-transparentbutnottheactivity【发布时间】:2014-09-0205:55:40【问题描述】:我想在一个RelativeLayout半透明的一侧制作一个RelativeLayout。它是页脚的项目。它总是可... 查看详情

使 malloc() 返回 NULL 而不是使程序崩溃?

】使malloc()返回NULL而不是使程序崩溃?【英文标题】:Makemalloc()returnNULLinsteadofcrashingtheprogram?【发布时间】:2011-03-3121:40:51【问题描述】:我正在使用malloc在C程序中分配内存。我的程序分配的内存可能超出系统的空间,此时程序... 查看详情

java示例代码_使向量同步,使两个线程中只有一个线程可以访问它

java示例代码_使向量同步,使两个线程中只有一个线程可以访问它 查看详情

使子目录失败使不停止构建

】使子目录失败使不停止构建【英文标题】:Makefailureinsubdirectorymakenotstoppingbuild【发布时间】:2010-03-1715:07:27【问题描述】:我有一个设置,其中make会遍历一堆子目录并在这些目录中进行制作。我希望它立即停止构建失败。下... 查看详情

如何使图像自动调整大小,使宽度为 100% 并相应调整高度?

】如何使图像自动调整大小,使宽度为100%并相应调整高度?【英文标题】:HowcanImakeanimageauto-resizesothewidthis100%andtheheightadjustedaccordingly?【发布时间】:2017-07-1820:26:14【问题描述】:我有以下简单的XAML页面:<?xmlversion="1.0"encoding... 查看详情

如何使背景图像更暗,而不会使同一 div 中的其他图像“变暗”? [复制]

】如何使背景图像更暗,而不会使同一div中的其他图像“变暗”?[复制]【英文标题】:Howtomakethebackground-imagedarker,without"Darking"otherimagesinthesamediv?[duplicate]【发布时间】:2019-09-1320:48:55【问题描述】:我正在创建一个标题... 查看详情

Matlab - 如何使图形成为当前的?如何使轴电流?

】Matlab-如何使图形成为当前的?如何使轴电流?【英文标题】:Matlab-Howtomakeafigurecurrent?Howtomakeanaxescurrent?【发布时间】:2012-09-2808:00:13【问题描述】:如果f是图形句柄,我想在其上使用plot3(..),就像我使用plot(..)一样,但这不... 查看详情

swift 使 UIImageView 和 UIView 像一层一样使它们一起动画

】swift使UIImageView和UIView像一层一样使它们一起动画【英文标题】:swiftMakeUIImageViewandUIViewlikeonelayertomakethemanimatetogether【发布时间】:2019-11-1909:38:53【问题描述】:我有一个包含许多层的集合视图单元,希望它们像一层一样相互... 查看详情

使占位符加载响应

】使占位符加载响应【英文标题】:Makeplaceholderloadingresponsive【发布时间】:2020-07-0802:51:03【问题描述】:我正在使用create-content-loader包来创建占位符加载,但无法使其响应。如何使svg填充父内容。我不想设置宽度硬编码1060px。... 查看详情

是啥使某物成为“特征对象”?

】是啥使某物成为“特征对象”?【英文标题】:Whatmakessomethinga"traitobject"?是什么使某物成为“特征对象”?【发布时间】:2015-02-1811:53:58【问题描述】:最近的Rust更改使“特征对象”对我来说更加突出,但我对究竟是... 查看详情