外部tomcat资源整合

news2024/11/17 3:29:03
Spring Boot应用默认是以jar包方式运行的,Springboot默认有内置的tomcat,在启动的时候会自动的将项目发布,这样各有利弊。
优点:简单,便携
缺点:不支持jsp, 定制优化比较麻烦,需要自己编写servlet的容器工厂
Springboot支持通过简单的配置,可以将Spring Boot应用打成war包布署到外部Tomcat环境下;
  1. 通过idea工具创建springboot应用,注意将打包方式修改为war
    发现创建好的项目中多了一个类:ServletInitializer extends SpringBootServletInitializer,  必须要继承SpringBootServletInitializer
  1. 打开pom文件查看打包方式是否为war以及tomcat的scope是否是provided;
  Pom文件的打包方式必须是war, 如果创建的时候没有注意打成jar 也没有关系,在这里修改就可以了
 Tomcat的<scope>provided</scope> 是固定的,加上它,打包时不会把内置的tomcat打进去
 注意:spring-boot项目使用的jdk版本要和tomcat的jdk版本一致(都是1.8)

 

  1. 在main下创建缺少的webapp, WEB-INF, web.xml文件
  使用工具创建的目录结构不包含传统web的结构,此时需要我们手动的添加进去,在main下新建webapp目录--
  也可以使用工具中的项目结构的快捷方式创建,如下图:

将项目发布到服务器上

 之前我们的idea工具已经整合了tomcat,此时我们只需要将springboot的项目发布上去即可,
 使用的具体步骤和之前发布web项目的步骤是一致的,

 

在webapp下创建index.jsp和后台程序进行测试

 注意:
1、使用了jsp我们一般是放在webapp或者WEB-INF下,可以通过配置进行自定义:
spring.mvc.view.prefix=/WEB-INF/

   spring.mvc.view.suffix=.jsp
  1. 配置了试图解析器之后,只要返回字符串就会寻找视图对象,可以使用久违的EL了。
  2. 在启动的时候就不能使用springboot的启动器启动了,这样会报错,配置了外部的tomcat只能启动外部的了。
             Jar包:执行springboot的主程序,启动IOC 容器,创建嵌入式的tomcat
             War包:启动服务器,使用服务器来加载springboot应用,启动IOC容器
 

2:整合持久层

Mybatis是一个优秀的持久层框架,在现在的开发中有着广泛的运用,实际开发中springboot常常和mybatis一起配合完成一些高级的操作;
下面为大家准备了2个版本整合,注解版简单,配置文件明确,做到了SQL与代码的分离,更方便;
准备环境:
1:使用向导新建一个springboot的项目,选择web, mysql,jdbc, mybtais;
2:配置数据源spring.datasource.---; 根据自己的实际情况进行配置;
3:编写数据库和表,新建javabean; --- 以员工和部门为例
环境准备好之后就开始准备写代码进行测试。注解版操作部门相关的功能,配置文件操作员工相关的操作;

1:注解版

使用注解版操作部门相关的功能
1:新建一个部门的controller 和一个部门的Mapper接口;
2:在部门接口添加CRUD得方法,并且在方法上使用注解完成sql语句的编写,注意接口上的注解不要忘记;
3:编写部门的controller,注入mapper , 并且调用其中的方法;
4:发布项目,发起请求进行测试;
注意:
1:数据库驱动的版本;mysql5和以下使用原始版本,mysql6以上的版本是不一致的。
2:数据库和系统时差的问题,出现乱码;如果使用高版本的一定要在url后面添加serverTimezone=UTC,也可以在添加一些编码相关内容。
3:因为java代码和sql语句在一起,可维护性差,对于复杂类型的sql支持不好,在开发的时候使用的并不多。

2:配置文件版

1:新建员工的controller和接口Mapper;
2: 在接口中定义关于员工的CRUD的方法;
3:在resources文件夹中新建一个mybatis-config.xml文件和 mapper的文件夹,
mybatis-config.xml是mybatis的配置文件,mapper文件夹专门存放mapper.xml,在内部新建一个EmpMapper.xml ; 
4: 在mapper.xml文件中完成CRUD的sql编写,并且指定namespace ;
5:在核心配置文件中使用mybatis.config-location和mapper-locations指定具体文件的位置,这样文件才能生效;

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/73126.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何开发一个婚恋交友系统?开发功能特点有什么?

婚恋平台为年轻人开启了一个交流恋爱的方式&#xff0c;一方面为的是适龄的年轻单身人士&#xff0c;另一方面为一部分大龄单身人士&#xff0c;解决单很多身人 士的需求&#xff0c;婚恋平台的开发&#xff0c;跟随着互联网的发展&#xff0c;抢占了小程序的热门市场&#xf…

Java线程实现

内容引用自《深入理解Java虚拟机&#xff1a;JVM高级特性与最佳实践&#xff08;第3版&#xff09;周志明》 线程的实现 我们知道&#xff0c;线程是比进程更轻量级的调度执行单位&#xff0c;线程的引入&#xff0c;可以把一个进程的资源分配和 执行调度分开&#xff0c;各个…

React框架入门

React是用于构建用户界面的JavaScript库&#xff0c; 起源于Facebook的内部项目&#xff0c;该公司对市场上所有 JavaScript MVC框架都不满意&#xff0c;决定自行开发一套&#xff0c;用于架设Instagram的网站。于2013年5月开源 一、React简介 React以声明式编写 UI&a…

0119 动态规划 Day8

剑指 Offer 10- I. 斐波那契数列 写一个函数&#xff0c;输入 n &#xff0c;求斐波那契&#xff08;Fibonacci&#xff09;数列的第 n 项&#xff08;即 F(N)&#xff09;。斐波那契数列的定义如下&#xff1a; F(0) 0, F(1) 1 F(N) F(N - 1) F(N - 2), 其中 N > 1…

计算机的硬件系统和软件系统的关系

计算机的硬件系统和软件系统的关系是缺一不可。 硬件它是所有软件运行的物质基础。 与硬件直接接触的是操作系统&#xff0c;它处在硬件和其他软件之间&#xff0c;表示它向下控制硬件&#xff0c;向上支持其他软件。 在操作系统之外的各层分别是各种语言处理程序、数据库管理…

CleanMyMacX4.12.1Crack版本频繁弹密码 菜单浮窗无法显示显示空白解决办法

你们有没有出现过在使用 CleanMyMac 清理系统垃圾文件的时候会频繁弹出输入开机密码&#xff1f;那么该如何解决这个问题呢&#xff1f;跟着小编来看看解决方法吧&#xff01; 频繁输入密码 更新CleanMyMacX到4.12.1的Crack版本之后&#xff0c;发现做一些操作要一直输入密码&…

科技云报道:PingCAP黄东旭:Serverless是数据库的未来形态

科技云报道原创。 30年前&#xff0c;程序员要想写代码&#xff0c;必须使用复杂的汇编语言。 但在今天&#xff0c;几乎没有程序员知道如何使用汇编语言&#xff0c;更加简易的高级语言如C&#xff0c;C#&#xff0c;JAVA&#xff0c;Rust&#xff0c;Go已成为开发主流。 随…

分布式文件存储系统FastDFS[3]-通过Docker安装并且从客户端进行上传下载测试

一、FastDFS安装 FastDFS的安装我们还是通过Docker来安装实现吧&#xff0c;直接在Linux上还装还是比较繁琐的&#xff0c;但就学习而言Docker安装还是非常高效的。Docker环境请自行安装哦&#xff0c;不清楚的可以看看我的Docker专题的内容。https://blog.csdn.net/qq_3852657…

【jenkins】1. 安装jenkins (docker-compose)

环境 ubuntu 20docker服务器 ip:xxx.xxx.xxx.xxx 步骤 1. 【编写安装文件】windows下 - 编写 docker-compose.yaml version: "3.1" services:jenkins:image: jenkins/jenkinsrestart: alwayscontainer_name: jenkinsports:- 58080:8080- 50000:50000volumes:- ./…

5.31 综合案例2.0 - 在线MP3音乐播放器

综合案例2.0 - 在线MP3音乐播放器一、案例说明二、准备器件三、案例连线四、代码代码说明复制五、测试一、案例说明 本案例制作一个联网下载声音文件的MP3播放器。 案例功能说明&#xff1a; 案例使用一块IC035串口屏和两个按键通过按键可以切换音乐&#xff0c;下载播放或删除…

瑜岿科技综合能源管理系统助力企业节能降耗工作

能源是国民经济的基础&#xff0c;更是城市赖以发展的动力。优化能源结构、大力发展可再生能源、提高机房能效、实现建筑智慧节能是行业绿色发展重点。在国家碳达峰碳中和的重大战略决策背景下&#xff0c;我国能源体制改革深入推进&#xff0c;能源生产和消费发生重大变革&…

如今社交电商不可忽略的一个点——消费增值

消费增值是一个基于消费返利理论的全新商业消费生态&#xff0c;一个让用户从优惠消费—免单消费—挣钱消费&#xff0c;所突破的新消费、新业态模式—增值消费&#xff0c;一个从电商化的平台走向品牌化的平台&#xff0c;让平台脱离单打独斗的方式&#xff0c;通过商家联盟方…

编译原理 2 - 词法分析

第3章 词法分析3.1 词法分析器的功能和结构3.2 状态转换图3.3 正则文法 和 正则表达式3.4 有限自动机 DFA与NFA测试第3章 词法分析 重点&#xff1a;① 词法分析器的输入、输出&#xff1b;② 用于识别符号的状态转移图的构造&#xff1b;③ 根据状态转移图实现词法分析器 难点…

【MATLAB教程案例55】GoogleNet网络的MATLAB编程学习和实现,以步态识别为例进行仿真分析

欢迎订阅《FPGA学习入门100例教程》、《MATLAB学习入门100例教程》 目录 1.软件版本 2.GoogleNet理论概述

基于Qt的桌面客户端组件化框架DT 开源啦

这个是本人在工作中基于QT开发的组件化桌面开发框架&#xff0c;目前打算开源出来提供给大家&#xff0c;节省大家的开发时间和效率&#xff0c;希望对大家的开发有所帮助&#xff0c;也欢迎提出意见和改进建议 1. 为什么开源DT框架 DT框架&#xff0c;本身就是基于QT为基础搭…

深度学习——含并行连接的网络(GoogLeNet)笔记

GoogLeNet中基本的卷积块是Inception块。 1.Inception块&#xff1a;4个路径从不同的层面抽取信息&#xff0c;然后在输出通道合并 ①1*1的卷积层&#xff0c;减少通道数&#xff0c;降低模型的复杂度 ② 1*1的卷积层&#xff0c;减少通道数&#xff0c;降低模型复杂度。然后…

volatile关键字和synchronized关键字

参考博客&#xff1a;https://www.cnblogs.com/cg-ww/p/14540450.html 1、volatile的作用&#xff1a;关键作用是使变量在多个线程之间可见 程序并没有因为我修改之后结束运行&#xff0c;因为线程对共享变量具有不可见性&#xff0c;main线程修改布尔值之后&#xff0c;子线…

【读点论文】MicroNet: Towards Image Recognition with Extremely Low FLOPs,在极高限制下的轻量化网络

MicroNet: Towards Image Recognition with Extremely Low FLOPs Abstract 这篇论文旨在以极低的计算成本解决性能大幅下降的问题。提出了微分解卷积&#xff0c;将卷积矩阵分解为低秩矩阵&#xff0c;将稀疏连接整合到卷积中。 提出了一个新的动态激活函数-- Dynamic Shift …

精准管控 | AIRIOT数字油库智能化解决方案

在油库管理的过程中&#xff0c;储油罐区普遍存在分布空间范围广、安全防爆要求高、监控点多、布线复杂、自动化系统集成难度大等问题&#xff0c;传统的油库管理手段相对落后、管理环境复杂&#xff0c;企业在监测监控、设备设施管理、日常运行等方面存在诸多难点&#xff1a;…

Openldap2.5.13编译安装

Openldap2.5.13编译安装 本篇文章没有很全面&#xff0c;采用的是编译安装&#xff0c;yum安装参考我的另外一篇文章 一、准备 openssl-1.1.1.tar.gz 下载地址&#xff1a;https://ftp.openssl.org/source/old/1.1.1/openssl-1.1.1.tar.gz openldap-2.5.13.tgz 下载地址&#…