springBoot开发的web项目打war包部署到已有的tomcat容器中

网上的博客好多坑,还是要自己尝试解决下才可以呀!!!

这个文章很多,其中介绍了很多修改方式,我这里只写我遇到的坑。

一、修改pom文件

1、修改打包方式

2、设置打包文件名

3、修改依赖:

  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

4、添加依赖:

 <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

这里有人说可以用

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

替换,我试了,不行,我这里启动会找不到启动类,我猜是因为没有找到SpringBootServletInitializer实现类

二、修改启动类

extends SpringBootServletInitializer,重写configure方法
package com.thc.myBlog;


import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.cache.annotation.EnableCaching;
@MapperScan("com.thc.myBlog.dao")
@EnableCaching
@SpringBootApplication
public class MyBlogApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(MyBlogApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application){
        return application.sources(MyBlogApplication.class);
    }

}

三、打包,部署

1、使用maven命令打包 maven clean -U package (为了方便,也可以直接使用idea中的maven组件打包,双击就可以,超方便)

2、找到target文件夹下打包成功的blog.war包,复制到tomcat的webapp即可。

四、启动tomcat

 看到spring启动标识才是真的应用部署成功。

================我遇到的问题:

开始我没有引入javax.servlet-api包,而是信了一篇博文,用引入pring-boot-starter-tomcat包代替,结果tomcat启动成功了,我的应用也部署成功了,但是却不能访问

我尝试了通过配置tomcat的conf/tomcat-users.xml文件登录应用管理界面查看应用,确认部署成功

<role rolename="manager-gui"/>
<user username="admin" password="admin" roles="manager-gui"/>

但是tomcat启动的时候并没有报错,我想到了之前看到有人引入了servlet-api的包,尝试下,确实是这样的。

引入javax.servlet-api包确实成功了,但是却不能访问login.html页面,view层我使用的是thymeleaf,报错是我用了他的内置对象的位置

<p class="mt-10 mb-3 font-weight-normal" >服务器端口号:
<font color="red" th:text="${#request.localPort}"></font></br>
sessionid:<font color="red" th:text="${session.id}"></font></p>

很奇怪,request前面要求必须添加#,session对象前面一定不能使用#。但其实我使用内置tomcat的时候两个对象前面我都加了#,可以正常读取。

具体原因我没有查文档,有时间可以看看官方文档怎么说的。

 截图可以看到,sessionid根本就没有读到,

 今天不想弄了,改天再看吧,搜了几篇很好的文章,可以看下

https://blog.csdn.net/liubin5620/article/details/80481848
https://my.oschina.net/GinkGo/blog/1501622

https://blog.csdn.net/ljf12138/article/details/103737535

猜你喜欢

转载自www.cnblogs.com/tianhaichao/p/12795361.html
今日推荐