SpringBoot简单(登录/显示/登出)工程下载 附带打包成ROOT.war文件并发布到tomcat里
下载地址:https://files.cnblogs.com/files/xiandedanteng/SessionShare20191226-1.zip
之前的工程仅能在Eclispe里跑起来,要把它放到Tomcat的webapp目录下发布,还要一些配置。
首先启动类需要修改如下:
package com.hy.csvdld; 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; @SpringBootApplication
public class MmSpringWebApplication extends SpringBootServletInitializer { public static void main(String[] args) {
SpringApplication.run(MmSpringWebApplication.class, args);
} @Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(MmSpringWebApplication.class);
}
}
上面红色部分是新加的,大家注意调整。
其次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">
...
<name>MMSpringWeb</name>
<description>Demo project for Spring Boot</description>
<packaging>war</packaging> ... <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<finalName>ROOT</finalName>
</build> </project>
上面蓝色部分,第一个war表示打包成war文件,第二个ROOT表示打包后的文件名。这样设置后,打包后的文件是ROOT.war
接下来就是打包,右键点击工程->Run->Maven install就行,在控制台里能看到进度。
打包完毕后,到工程所在目录下会出现一个target目录,里面的ROOT.war就是打好包的war文件。
接下来,到tomcat目录下的webapps目录,删除或者移走原来的ROOT目录,把打包出来的ROOT.war放入,然后打开控制台,进入tomcat\bin目录,执行startu.bat,这时会弹出一个新的控制台窗口,里面能看到springboot启动的banner,这个新窗口是带Java图标的,和启动它的窗口容易区别开来。
接下来,在浏览器直接输入localhost:8080/就能访问这个app了。
之所以要打包成ROOT.war,并删除tomcat\webapps下原有的ROOT目录,是因为不这样做,就只能用localhost:8080/appname的方式访问应用,再之后的跳转,很容易出现404或者500错误,要把Controller中的@RequestMapping中的path和html的path都修改得正确是一件吃力不讨好的事情,不容易改,或者说我目前还未掌握修改正确的方法。
如果不想把工程打包成ROOT.war,还有另一种方法,能就是修改tomcat/conf/server.xml文件,将原有的:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
修改成:
<Host name="localhost" appBase=""
unpackWARs="true" autoDeploy="true">
<Context docBase="webapps/sessionshare" path="" reloadable="true" source="org.eclipse.jst.jee.server:sessionshare"/>
其中,appBase中值被置空了,并增加了一行,sessionshare是工程名。这样,我把finalName改成sessionshare,然后把打包完成的sessionshare.war放到tomcat/webapps下也行,只是这种方法也需要删除tomcat/webapps下原有的ROOT目录。
当然这两种方法都不完美,如果要发布多个app该怎么办呢?但目前一时也没辙,之后留待日后处理。
参考资料:https://www.cnblogs.com/huaixiaonian/p/10521460.html 在此感谢作者的无私分享
--END-- 2019-12-26 18:23
SpringBoot简单(登录/显示/登出)工程下载 附带打包成ROOT.war文件并发布到tomcat里的更多相关文章
- SpringBoot简单(登录/显示/登出)工程下载 使用Thymeleaf输出页面文字
下载地址:https://files.cnblogs.com/files/xiandedanteng/SessionShare20191226.zip 测试用,画面如下: SpringMVC入门弟子也 ...
- IdentityServer4之SSO(基于OAuth2.0、OIDC)单点登录、登出
IdentityServer4之SSO(基于OAuth2.0.OIDC)单点登录.登出 准备 五个Web站点: 1.localhost:5000 : 认证服务器.2 ...
- cas sso单点登录系列6_cas单点登录防止登出退出后刷新后退ticket失效报500错
转(http://blog.csdn.net/ae6623/article/details/9494601) 问题: 我登录了client2,又登录了client3,现在我把client2退出了,在c ...
- [置顶] SSO单点登录系列6:cas单点登录防止登出退出后刷新后退ticket失效报500错
这个问题之前就发现过,最近有几个哥们一直在问我这个怎么搞,我手上在做另一个项目,cas就暂时搁浅了几周.现在我们来一起改一下你的应用(client2/3)的web.xml来解决这个2b问题,首先看下错 ...
- django-auth组件的注册,登录,登出,及验证是否已经登入。使用login的属性
1.注册: 1.创建User(django自带的用户model)的form对象 定义form验证返回的错误提示信息 error_msg = { 'username': {'required': '用户 ...
- SSO单点登录系列6:cas单点登录防止登出退出后刷新后退ticket失效报500错
这个问题之前就发现过,最近有几个哥们一直在问我这个怎么搞,我手上在做另一个项目,cas就暂时搁浅了几周.现在我们来一起改一下你的应用(client2/3)的web.xml来解决这个2b问题,首先看下错 ...
- Flask session到期时间设置 用户登录与登出
flask版本 1.1.1 最近学习Flask开发,看官方文档产生疑问,就是session有效期的问题,默认貌似是没有有效期的,只有关闭浏览器session才会失效,其实控制session的有效期非常 ...
- SSO单点登录一:cas单点登录防止登出退出后刷新后退ticket失效报500错,也有退出后直接重新登录报票根验证错误
问题1: 我登录了client2,又登录了client3,现在我把client2退出了,在client3里面我F5刷新了一下,结果页面报错: 未能够识别出目标 'ST-41-2VcnVMguCDWJX ...
- Django 是如何实现用户登录和登出机制的(默认版本-数据库版本)
Django session 字典,保存到数据库的时候是要先序列化的(session.encode方法), 读取的时候反序列化(session.decode),这样比较安全. 一 settings.p ...
随机推荐
- IndexFlatL2、IndexIVFFlat、IndexIVFPQ三种索引方式示例
上文针对Faiss安装和一些原理做了简单说明,本文针对标题所列三种索引方式进行编码验证. 首先生成数据集,这里采用100万条数据,每条50维,生成数据做本地化保存,代码如下: import numpy ...
- 算法面试题:一个List<Student>,要求删除里面的男生,不用Linq和Lamda,求各种解,并说明优缺点!
算法面试题:一个List,要求删除里面的男生,不用Linq和Lamda,求各种解,并说明优缺点! 解题思路 这是群里某位小伙伴去面试碰到的面试题,从题目本身来看,面试官应该是要考察面试者对泛型 Lis ...
- 将Asp.Net Core3.1项目,使用Docker 部署到Centos 8
一.准备工具 Win 10 Centos 8 Visual Studio 2019 Docker Desktop 下载地址:https://download.docker.com/win/stabl ...
- C#LeetCode刷题之#342-4的幂(Power of Four)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4058 访问. 给定一个整数 (32 位有符号整数),请编写一个函 ...
- C#算法设计排序篇之01-冒泡排序(附带动画演示程序)
冒泡排序(Bubble Sort) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/672 访问. 它重复地访问要排序的元 ...
- 最后之作-Last Order(bushi
最近化学学有机选修,讲羧酸的时候我想到一个问题:不考虑空间异构.能否稳定存在等问题,某高级饱和脂肪酸有多少种同分异构体?做为一名退役的OIer,我将它抽象为了另一个问题:含\(n\)个\(C\)的饱和 ...
- myBatis源码解析-类型转换篇(5)
前言 开始分析Type包前,说明下使用场景.数据构建语句使用PreparedStatement,需要输入的是jdbc类型,但我们一般写的是java类型.同理,数据库结果集返回的是jdbc类型,而我们需 ...
- 手动SQL注入总结
1.基于报错与union的注入 注意:union联合查询注入一般要配合其他注入使用 A.判断是否存在注入,注入是字符型还是数字型,有没过滤了关键字,可否绕过 a.如何判断是否存在注入 一般有一下几种 ...
- 虚拟化技术之kvm虚拟机创建工具virt-install
在前边的博客中,我们创建KVM虚拟机用到了virt-manager,这个工具是一个图形化工具,创建虚拟机很方便:除此我们还是用virsh define/create +虚拟机配置文件来创建虚拟机,这种 ...
- PAT 2-10. 海盗分赃(25)
题目链接:http://www.patest.cn/contests/ds/2-10 解题思路:参考:http://blog.csdn.net/linsheng9731/article/details ...