barriers / 阅读 / 详情

分享:详细讲解Tomcat之系统架构

2023-06-28 06:28:07
共1条回复
clou

Tomcat 或者 Jetty 就是一个“HTTP 服务器 + Servlet 容器”,我们也叫它们 Web 容器。

Spring 框架就是对 Servlet 的封装,Spring 应用本身就是一个 Servlet,而 Servlet 容器是管理和运行 Servlet 的。

Servlet 接口和 Servlet 容器这一整套规范叫作 Servlet 规范。Tomcat 和 Jetty 都按照 Servlet 规范的要求实现了 Servlet 容器。

Servlet 容器工作流程:

当客户请求某个资源时,HTTP 服务器会用一个 ServletRequest 对象把客户的请求信息封装起来,然后调用 Servlet 容器的 service 方法,Servlet 容器拿到请求后,根据请求的 URL 和 Servlet 的映射关系,找到相应的 Servlet,如果 Servlet 还没有被加载,就用反射机制创建这个 Servlet,并调用 Servlet 的 init 方法来完成初始化,接着调用 Servlet 的 service 方法来处理请求,把 ServletResponse 对象返回给 HTTP 服务器,HTTP 服务器会把响应发送给客户端。

Servlet 规范提供了两种扩展机制:Filter和Listener。

Tomcat 要实现 2 个核心功能:

因此 Tomcat 设计了两个核心组件连接器(Connector)和容器(Container)来分别做这两件事情。连接器负责对外交流,容器负责内部处理。

1,连接器

连接器需要完成 3 个高内聚的功能:

因此 Tomcat 的设计者设计了 3 个组件来实现这 3 个功能,分别是 EndPoint、Processor 和 Adapter。

Endpoint 和 Processor 放在一起抽象成了 ProtocolHandler 组件,连接器用 ProtocolHandler 来处理网络连接和应用层协议。

EndPoint 是一个接口,它的抽象实现类 AbstractEndpoint 里面定义了两个内部类:Acceptor 和 SocketProcessor。其中 Acceptor 用于监听 Socket 连接请求。SocketProcessor 用于处理接收到的 Socket 请求。

EndPoint 接收到 Socket 连接后,生成一个 SocketProcessor 任务提交到线程池去处理,SocketProcessor 的 Run 方法会调用 Processor 组件去解析应用层协议,Processor 通过解析生成 Request 对象后,会调用 Adapter 的 Service 方法。

2,容器

Tomcat 设计了 4 种容器,分别是 Engine、Host、Context 和 Wrapper。这 4 种容器不是平行关系,而是父子关系。

Context 表示一个 Web 应用程序;Wrapper 表示一个 Servlet,一个 Web 应用程序中可能会有多个 Servlet;Host 代表的是一个虚拟主机,或者说一个站点,可以给 Tomcat 配置多个虚拟主机地址,而一个虚拟主机下可以部署多个 Web 应用程序;Engine 表示引擎,用来管理多个虚拟站点,一个 Service 最多只能有一个 Engine。

请求定位 Servlet 的过程:Tomcat 会创建一个 Service 组件和一个 Engine 容器组件,在 Engine 容器下创建两个 Host 子容器,在每个 Host 容器下创建两个 Context 子容器。由于一个 Web 应用通常有多个 Servlet,Tomcat 还会在每个 Context 容器里创建多个 Wrapper 子容器。

每一个容器都有一个 Pipeline 对象。

3,一个请求在 Tomcat 中流转的过程

4,startup.sh 启动 tomcat 的过程:

粉丝福利,需获取Tomcat、spring等架构资料

相关推荐

什么意思

给div指定了个id 一般用于引用样式表` 样式表中这样写#wrapper{}
2023-06-28 04:38:364

wrapper.dll丢失怎么办?

"提示无法找到libeay32.dll文件" 这是因为被病毒感染相关文件导致,一旦杀毒软件删除被感染的文件,就会导致相关文件缺失,导致运行游戏时提示缺少libeay32.dll等.libeay32.dll丢失游戏常用软件运行不起来运行不起来,或者报错修复方法: 方法一: 也是最简单的一种方法,手工替换相关文件可以解决问题。在正常工作的相关软件安装目录中,找到这个libeay32.dll文件,复制到出现问题的软件目录下,即可解决问题。 也可以安装腾讯电脑管家,点击工具箱-电脑诊所-直接搜索丢失eay32.dll,会有一键修复办法,非常方便的。
2023-06-28 04:38:451

使用wrapper封装一个JAVA服务,启动时报wrapper已经停止工作

这句话的意思是说,Java把一切都当成对象了,可是那八种基本数据类型也就是int double 什么的不是对象,这就和Java的思想相矛盾了,为了能够把数据类型当成对象,就出现了包装类,也就是说 Integer 类,可以直接使用,明白了吗?他的一切方法的返回值和直接定义int类型的数据是一样的....这样就可以把它当成一个对象来看待了..这就是Java的思想---一切皆是对象 所以我们都知道Java是面向对象的语言,但是也不完全,不能说是100%面向对象的,其中一个原因就是因为它有8个基本数据类型,而这些东西是不能当成对象来看待的...只有它们的封装类,那才是对象....所以我说数据类型是数据类型,类是类这下你明白了吧?还有think in Java 那本书对于初学者来说,有一定的难度,建议读者买本国内比较权威的教程看看...
2023-06-28 04:38:511

我开完机时电脑就跳出一个小框wrapper.exe 错误。每次都有。这问题怎么解决?

重新编程就行了
2023-06-28 04:38:593

wrapper 的颜色无法改变

可以通过chrome或者firebug查看一下元素的id或者class,之后在style.css文件里定义就可以了。
2023-06-28 04:39:051

WordPress 为什么总有个 #wrapper(#header、#container、#footer)

要是你一点不懂代码,建议你还是别自己折腾了!
2023-06-28 04:39:163

如何运用Java Service Wrapper将java程序包装成服务?提供最简单的java程序源代码

官方有例子。这个的关键点,不是创建.java源文件,而是配置
2023-06-28 04:39:242

Maybatis-Plus 的条件构造器Query Wrapper基础方法解释

官网解释: https://mp.baomidou.com/guide/wrapper.html#abstractwrapper 一、条件构造器关系介绍介绍 : 上图绿色框为抽象类abstract 蓝色框为正常class类,可new对象 黄色箭头指向为父子类关系,箭头指向为父类 wapper介绍 : Wrapper : 条件构造抽象类,最顶端父类,抽象类中提供4个方法西面贴源码展示 AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件 AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。 LambdaQueryWrapper :看名称也能明白就是用于Lambda语法使用的查询Wrapper LambdaUpdateWrapper : Lambda 更新封装Wrapper QueryWrapper : Entity 对象封装操作类,不是用lambda语法 UpdateWrapper : Update 条件封装,用于Entity对象更新操作解释
2023-06-28 04:39:311

wrapper.exe 遇到了一个问题,需要关闭。我一开机就弹这个出来.请问是什么,怎么解决呢?

可能中毒了。 1、开始 运行 REGEDIT 编辑 查找 wrapper.exe ,找到就砍了,再按F3,再找到再杀。赶尽杀绝!!!2、下载个 瑞星卡卡 ,里面有启动项目管理、进程管理、 恶意和流氓软件、插件查杀,IE修复。 以后一定会帮上你的忙的。 祝成功!
2023-06-28 04:39:391

linux中wrapper.h找不到

找不到wrapper,应该有个变量设置路径 你的服务出来016都是启用 说明你的服务添加成功了 06显示关闭的原因-》总不可能在关机 重启的时候开启你的服务器吧
2023-06-28 04:39:451

阿里云centos安装virtualenvwrapper出现下面报错?

你的系统上安装的是Python2.7,提示很清楚了,说该版本要终止服务(end of service)了。升级下Python版本。
2023-06-28 04:40:041

开机时出现 没有找到Wrapper.dll 怎么回事?

重新安装下安装360杀毒软件和360安全卫士Wrapper.dll是360的组建
2023-06-28 04:40:112

您好,请问我一打开游戏的时候会弹出 OpenAutomate wrapper已停止工作是怎么回事?

我的电脑也是出现了相同的问题,出现的原因不是很清楚。解决方式:卸载NVDIA GeForce Experience
2023-06-28 04:40:182

vraymtlwrapper是什么意思

是啊
2023-06-28 04:40:264

求网页设计大神,第十行,wrapper为什么有双引号代码一个颜色,去个引号代码颜色就正常了?

这个应该是格式问题,当你有双引号时,格式正确,编译器可以识别内容,当你没有双引号时,那么它就不是一个参数了
2023-06-28 04:40:331

Wrapper.dll是神马?

系统文件!
2023-06-28 04:40:411

weblogic.application.WrappedDeploymentException: weblogic.utils.wrapper.Wrapper 这到底是什么原因啊

应该是你的程序部分还没有部署或者没有部署成功,可以把WEBLOGIC中的Deployment先删掉,重新部署之后重启exlipse.
2023-06-28 04:40:491

java中wrapper.where是什么意思

"Java Service Wrapper"顾名思义,将我们的Java程序包装成系统服务,这样就可以随着系统的运行而自动运行,当然Java Service Wrapper(下面简称Wrapper)的功能绝不仅于此。
2023-06-28 04:40:582

如何删除python的虚拟环境

删除虚拟环境的目录
2023-06-28 04:41:072

嵌入式vivado设计中HDL Wrapper有什么作用

产生VERILOG文件用
2023-06-28 04:41:272

电脑英伟达openAutomate wrapper在后台内存爆满,会不定时自动打开?

可以打开360安全卫士,选择优化加速,选择启动项,在里面进行设置
2023-06-28 04:41:361

installCmdWrapper是什么意思 网卡驱动下载

服务运行异常。installCmdWrapper是服务运行异常的意思,需要尝试重新注册WindowsInstaller服务,并下载网卡驱动。
2023-06-28 04:41:441

如何把一个Java程序做成Windows服务

刷机在店里
2023-06-28 04:41:5312

C++中说一个函数是另一个函数的wrapper function是什么意思?

可以认为是对函数的重载
2023-06-28 04:42:292

wrappersimpleapp是什么进程

基本的计算进程。WrapperSimpleApp是基本的计算进程、WebServer是sonarweb服务,CeServer:一台或多台SonarQube扫描仪在您的生成/连续集成服务器上运行以分析项目这个进程负责和扫描插件msbuild,maven-scanner,ant-scanner,gradle-scanner等进行数据扫描的交互,其中设计规则数据的交互,然后生成统计数据文件。进程的查看的命令是ps和top,进程调度的命令有at、crontab、batch以及kill。进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源,一般来说,Linux系统会在进程之间共享程序代码和系统函数库。
2023-06-28 04:42:361

dubbo之ProtocolFilterWrapper

ProtocolFilterWrapper是dubbo-rpc模块中,dubbo-rpc-api的一个核心类,其中核心方法buildInvokerChain,顾名思义构建invoker链。dubbo源码看到这块时,理解起来有点费劲儿,特意做记录,方便日后查看。 1、首先,我们先看一下方法中的3个核心变量,invoker、filter、next 2、可以清晰看到源码中,invoker采用了匿名类 ProtocolFilterWrapper$1 实现,我们来看一下生成的匿名内部类结构 重点关注红框内的构造方法,以及invoke方法的实现。 OK,下面我们对buildInvokerChain的具体逻辑做分析;我们先对方法逻辑做一个抽象,首先是原始方法 借助前面我们提到的匿名类,我们做一下抽象,下面是抽象后的方法: 这样看起来就简单多了,实际上这块逻辑就是把url里拿到的filter包装成Invoker,串起来;下面我们了解一下dubbo是如何把Invoker 串起来的,为了方便理解,这里做图解。 假设现在有A、B、C、D、E 5个filter,初始Invoker顺序如下: 最后 return last 5,这样就把所有filter串起来了,最终的Invoker chain顺序是 last 5 -> last 4 -> last 3 -> last 2 -> last 1(即 invoker 本身)。
2023-06-28 04:42:431

wrapper可以加多个条件吗

在设计javascript的继承体系时,有一个重要需求,方法链。通俗地说,说是在方法中调用父类的同名方法。类似java的this.super().method()。如何把父类的同名方法包装到子类中呢?这就要用到wrapper函数。 var wrapper= function(fn){//这里改一下名。 var temp = function(){ return fn.apply(this,arguments); }; return temp;
2023-06-28 04:43:231

linux怎么把wrapper设置服务开机自启动

1、下载Java Service Wrapper(目前版本wrapper-linux-x86-32-3.3.2), 解压。 http://wrapper.tanukisoftware.org/ 复制src/bin/sh.script.in到/opt/tianlong/bin目录,重命名为QueueTest复制wrapper/bin目录下的wrapper文件到/opt/tianlong/bin目录 复制src/conf/wrapper.conf.in到/opt/tianlong/conf目录,重命名为wrapper.conf 复制src/lib/lib目录下3个文件到/opt/tianlong/lib目录 wrapper.so wrapper.jar wrappertest.jar
2023-06-28 04:43:301

windows wrapper是做什么用的啊

把java程序转化成windows的系统服务,开发者用的。wrap,捆绑、打包也~~~
2023-06-28 04:43:371

如何在wrapper里面写动态sql

ava.sql 接口 Wrapper所有已知子接口: CachedRowSet, CallableStatement, Connection, DatabaseMetaData, DataSource, FilteredRowSet, JdbcRowSet, JoinRowSet, ParameterMetaData, PreparedStatement, ResultSet, ResultSetMetaData, RowSet, RowSetMetaData, Statement, SyncResolver, WebRowSet 所有已知实现类: RowSetMetaDataImpl
2023-06-28 04:43:441

wrapper.exe的介绍

wrapper.exe是Maya相关程序。用于帮助解决问题。
2023-06-28 04:43:511

JDBC里面的接口java.sql.Wrapper是干啥的,能举个实际的例子吗

ava.sql 接口 Wrapper所有已知子接口: CachedRowSet, CallableStatement, Connection, DatabaseMetaData, DataSource, FilteredRowSet, JdbcRowSet, JoinRowSet, ParameterMetaData, PreparedStatement, ResultSet, ResultSetMetaData, RowSet, RowSetMetaData, Statement, SyncResolver, WebRowSet 所有已知实现类: RowSetMetaDataImpl
2023-06-28 04:44:071

软件缺git-wrapper.dll怎么办

"提示无法找到libeay32.dll文件" 这是因为被病毒感染相关文件导致,一旦杀毒软件删除被感染的文件,就会导致相关文件缺失,导致运行游戏时提示缺少libeay32.dll等.libeay32.dll丢失游戏常用软件运行不起来运行不起来,或者报错修复方法: 方法一: 也是最简单的一种方法,手工替换相关文件可以解决问题。在正常工作的相关软件安装目录中,找到这个libeay32.dll文件,复制到出现问题的软件目录下,即可解决问题。 也可以安装腾讯电脑管家,点击工具箱-电脑诊所-直接搜索丢失eay32.dll,会有一键修复办法,非常方便的。方法二: 重新安装系统(不推荐) 方法三: 从朋友电脑上拷贝或者到网上下载文件,放到C:WINDOWSSYSTEM32文件夹下。
2023-06-28 04:44:161

.bat文件如何生成windows服务

1.bat文件中写netstart“服务名”例如启动打印机服务netstartspooler2每次启动服务器执行,一种办法是将此BAT文件放在启动文件夹中开始-程序-启动,另外一种办法就是新建一个计划任务,设置开机时运行这个BAT
2023-06-28 04:44:372

找不到wrapper.dll

启动电脑,F8进入安全模式,彻底删除Program Files的360文件夹中的360sd文件夹,然后,正常启动电脑,重新安装360杀毒双引擎版即可。
2023-06-28 04:44:441

9、Python虚拟环境

(1)安装虚拟环境 1.安装virtualenv, 控制台使用命令:pip install virtualenv 2.创建一个以后存放虚拟环境的目录如d:envs, 可在控制台使用命令d: 回车,mkdir envs 3.创建虚拟环境,控制台输入命令 :virtualenv 文件夹名 4.进入虚拟环境cd 虚拟环境的Scripts, 然后使用命令activate,虚拟环境的名称被小括号括起来,并且出现在最前面说明成功进入虚拟环境 5.进入虚拟环境以后可以安装第三方包(库),使用命令 pip install ..., 出现successfully则表示安装成功 6.如何验证安装的程序是否成功: -》python 命令进入python shell环境检测 -》import 包(架)名 没有报错,导入包成功,则表明安装成功 7.退出虚拟环境 deactivate.bat, 最前面有小括号的虚拟环境就没有了 如果当时在python shell环境,则需要现在用quit()/exit()退出 (2)虚拟环境切换 Virtualenvwrapper 1.安装virtualenvwrapper,使用命令 pip install virtualenvwrapper-win 2.配置管理虚拟环境的位置,系统环境变量 变量名: WORKON_HOME 变量值:虚拟环境路径 3.虚拟环境自由切换:workon vname 注:3.7以上python目前不兼容。 (3)pychaml中导入虚拟环境 1.打开Pycharm,然后依次点击左上方的file->Settings 2.之后依次Project->Project Interpreter 3.点击右上方的设置按钮,然后点击Add 4.在弹出的Add Python Interpreter页面中,依次选择Virtualenv Environment(虚拟环境)->Existing environment 5.之后在弹出的界面中加载本地的虚拟环境,点击右侧的三个点号的按钮 6.根据目录,依次找到自己创建的虚拟环境路径,我的路径是I:->Virtual_environment_list->Scripts->python.exe,点击OK按钮 可以用于解决需要使用不同版本python的开发问题。 3.创建python(必须是本机已安装版本) : 4.进入虚拟环境: 5.在虚拟环境中安装模块: 6.退出pipenv的虚拟环境: 7.查看我所在的位置: 8.显示所在的位置: 9.查看一个目录依赖于哪些目录: 10.查看可用的程序: 11.删除虚拟环境中所有已安装模块,且不编辑Pipfile.lock,删除完用pipenv install能重新安装: 12.删除一个已安装模块,且从Pipfile.lock中删除: 13.删除虚拟环境:
2023-06-28 04:44:511

什么是oawrapper.exeNVIDIA Corporation的

英伟达(NVIDIA)公司的程序,一般属于显示卡驱动,至于OAWARPPER.exe在文件搜索引擎查得到,但是不多==================================产品:NVIDIA GeForce Experience Application Ontology公司:NVIDIA Corporation描述:OpenAutomate wrapper版本:16.0.0.0MD5:02b993da1086fdbe27813b37f5e4b7c0SHA1:f67a01b67663c1ac3ed820a098f681632613a465SHA256:6d6eb39dd1d6d1054e51e1d1ab30a34358871264f964de403bb675a982188af4大小:173136目录:%USERPROFILE%LocalNVIDIANvBackendApplicationOntology操作系统:Windows 7发现:May 31, 2014发生:低 数字签名:NVIDIA Corporation------>我们的最终评级,该文件是 未知.==================================
2023-06-28 04:45:001

linux环境下虚拟环境virtualenv的使用

注:Linux下默认未安装pip,需要手动安装pip命令。 安装完成后,可以使用 virtualenv 命令创建放置虚拟环境的目录: -p PYTHON_EXE, --python=PYTHON_EXE 指定生成的虚拟环境使用的Python解释器: ENV/lib 和 ENV/include 目录中包含了虚拟环境ENV使用的库文件。在虚拟环境中安装的第三方包会安装在 ENV/lib/python3.4/site-packages 目录下。 ENV/bin 目录里面放置了可执行文件,在里面有新安装的Python 包中的可执行程序,包括pip等相关工具。 默认情况下,虚拟环境会依赖系统环境中的 sit package,就是说系统中已经安装好的第三方 package 也会安装在虚拟环境中,如果不想依赖这些 package,那么可以加上 --no-site-packages 参数建立虚拟环境。 新创建的虚拟环境目录中有一个启动脚本 ENV/bin/activate ,直接使用 source 命令来启动虚拟环境。 退出当前虚拟环境使用 deactivate 命令。 此时还不能使用virtualenvwrapper,默认virtualenvwrapper安装在/usr/local/bin下面,实际上你需要运行virtualenvwrapper.sh文件才行,里面有安装步骤,我们照着操作把环境设置好。 设置环境变量 lsvirtualenv : 列出虚拟环境列表(个人喜欢用第二个) workon+Enter: 列出虚拟环境列表 mkvirtualenv [虚拟环境名称]: 新建虚拟环境 workon [虚拟环境名称]: 切换虚拟环境 rmvirtualenv [虚拟环境名称]: 删除虚拟环境 deactivate: 离开虚拟环境
2023-06-28 04:45:071

包装纸英文

包装纸英文:wrapper包装纸类型(1)纸袋纸纸袋纸又称水泥袋纸,是一种工业包装纸。纸袋要求物理强度大,强韧,具有良好的防水性能,具有一定的透气度,以免装袋时破损。纸袋纸分为一号、二号、三号、四号四种,用于制作纸袋,供水泥、化肥、农药等包装之用。要求有高的强度,保证装袋和运输过程中不破损,撕裂度、抗折强度、透气度适中,韧性大。(2)牛皮纸牛皮纸是高级包装纸,因其质量坚韧结实得似牛皮而得名。牛皮纸从外观上分单面光、双面光、有条纹和无条纹等品种。牛皮纸一般为黄褐色,也有彩色牛皮纸。牛皮纸有较高的耐破度和良好的耐水性,没有透气度要求,这点是与纸袋纸不同的。牛皮纸用途十分广泛,大多供包装工业品,如作棉毛丝绸织品、绒线、五金交电及仪器仪表等包装用,也可加工制作砂纸、档案袋、卷宗、纸袋、信封等。
2023-06-28 04:45:151

css代码中.img-wrapper img{}是什么意思呢??为什么加img

img是html的图片标签,.img-wrapper img指的是类名为img-wrapper这个盒子里面的所有图片,它(或者它们)的样式。
2023-06-28 04:45:422

苹果businessextensionswrapper要不要联网

不要。蜂窝数据最好关闭,因为现在的数据流量都是国内流量了,打开和关闭效果一样,打开还可能误操作什么而被扣费,所以苹果businessextensionswrapper不要联网。
2023-06-28 04:45:491

安装JAVA JDK的时候出现installer:wrapper.createfile failed with error 3,怎么解决?

原因:之前的JDK没有卸载干净。1、首先按下“win+R”打开运行窗口,点击输入“regedit”,回车确定。2、然后在弹出来的窗口中找到HKEY_LOCAL_MACHINE/software项中的javasoft项。3、然后鼠标右键单击javasoft项,在弹出来的窗口中选择“删除”。4、然后重启电脑,就可以解决问题,正常安装了。
2023-06-28 04:45:561

2018-06-26 IDEA 如何升级gradle wrapper

初学springBoot 遇到Gradlew版本的问题, 一般IDEAJ会推荐使用默认的gradle wrapper, 那么问题是 setting->搜索Gradle 你的project下->gradle->wrapper->gradle-wrapper.properties->distributionUrl 修改上面的distributionUrl 到你想要的版本,然后在命令行执行 可以到这里查看所有可用的版本: https://services.gradle.org/distributions/ 引用官网的指导文档:
2023-06-28 04:46:371

安装程序时出现:windows installer installation wrapper

这个问题通常表明Windows Installer服务运行异常,一般可能是因为Windows Installer文件损坏或服务运行不正常。解决办法: 尝试重新注册Windows Installer服务:用系统管理员权限登录Windows,然后点击【开始】->【运行】在输入框中输入“cmd”进入命令行模式输入 msiexec /unregserver 停止Windows Installer服务输入 misexec /regserver 重新注册Windows Installer服务进入“控制面板->管理工具->服务”中启动Windows Installer服务
2023-06-28 04:46:511

为什么要学习它呢? 答:MyBatisPlus可以节省我们大量工作时间,所有的CRUD代码它都可以自动化完成! 优点: 1. 易于上手和掌握。 2. sql写在xml里,便于统一管理和优化。 3. 解除sql与程序代码的耦合。 4. 提供映射标签,支持对象与数据库的orm字段关系映射 5. 提供对象关系映射标签,支持对象关系组建维护 6. 提供xml标签,支持编写动态sql。 MyBatis Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。 特性: 无侵入 :只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。 损耗小 :启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大的 CRUD 操作 :内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求 支持 Lambda 形式调用 :通过 Lambda 表达式,方便地编写各类查询条件,无需再担心字段写错。 支持组件自动生成 :支持多达 4 种主键策略(内含分布式唯一 ID 生成器 Sequence),可自由配置,完美解决主键问题。 支持 ActiveRecord 模式 :支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作。 支持自定义全局通用操作 :支持全局通用方法注入( Write once, use anywhere )。 内置代码生成器 :采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用 内置分页插件 :基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List查询。 分页插件支持多种数据库 :支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库。 内置性能分析插件 :可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询。 内置全局拦截插件 :提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作。 1.1 、引入mybatis-plus相关maven依赖 引入mybatis-plus在spring boot中的场景启动器 ps:切记不可再在pom.xml文件中引入mybatis与mybatis-spring的maven依赖,这一点,mybatis-plus的官方文档中已经说明的很清楚了. 1.2、创建数据表 (1)SQL语句 (2) 数据表结构 1.3、 创建java bean 根据数据表新建相关实体类 1 package com.example.demo.pojo 1.4、 配置application.proprties 数据源使用druid ps:在进行crud实验之前,简单对mybatis与mybatis-plus做一个简单的对比 2.1、mybatis与mybatis-plus实现方式对比 (1)提出问题: 假设我们已存在一张 tbl_employee 表,且已有对应的实体类 Employee,实现 tbl_employee 表的 CRUD操作我们需要做什么呢? (2)实现方式: 基于 Mybatis 需要编写 EmployeeMapper 接口,并手动编写 CRUD 方法 提供 EmployeeMapper.xml 映射文件,并手动编写每个方法对应的 SQL 语句. 基于 Mybatis-plus 只需要创建 EmployeeMapper 接口, 并继承BaseMapper 接口.这就是使用 mybatis-plus 需要完成的所有操作,甚至不需要创建 SQL 映射文件。 2.2、BaseMapper接口介绍 (1)如何理解核心接口BaseMapper? 在使用Mybatis-Plus时,核心操作类是BaseMapper接口,其最终也是利用的Mybatis接口编程的实现机制,其默认提供了一系列的增删改查的基础方法,并且开发人员对于这些基础操作不需要写SQL进行处理操作(Mybatis提供的机制就是需要开发人员在mapper.xml中提供sql语句),那样我们可以猜测肯定是Mybatis-Plus完成了BaseMapper接口提供的方法的SQL语句的生成操作。 (2)BaseMapper接口为我们定义了哪些方法? BaseMapper接口源码: (3) mybatis-plus中常用的注解 1 由于我们的数据表名于实体类的类名不一致,并且实体类于数据表还存在字段名不对应的情况,因此我们需要引入mybatis-plus的注解. 编写EmployeeMapper接口继承BaseMapper接口 准备考试环境: (1)插入 (2)修改 控制台打印出的sql语句 如果我们不设置实体类的email与gender属性,结果是怎样的呢? 控制台sql语句: 显然,mybatis-plus为我们做了非空判断,空值的话,默认不更新对应的字段.想一想,这是不是类似于mybatis中的动态sql呢? 这种处理效果又会带来什么好处呢? (3)查询 selectById方法 selectBatchIds方法 ps:发现该方法底层使用的竟然是sql的in关键字 selectByMap方法 (4)删除 3、不得不提的条件构造器---Wrapper 3.1.wrapper及其子类介绍 (1)Wrapper :条件构造抽象类,最顶端父类,抽象类中提供3个方法以及其他方法.
2023-06-28 04:46:581

安装JDK显示,Installer:Wrapper.CreateFile failed with error 32:另一个程序正在使用此文件,进程无法访

你 是安装的时候,在 没有安装完全就给取消了吧。呵呵,你可以这样弄,打开360安全卫士,找到软件管家,在软件 卸载中找到java的东西,好像有三个,除了数据那个不删了之外,其余都给卸载了。接着重启 电脑,就可以重新安装JDK了。
2023-06-28 04:47:071

gradle-wrapper.jar文件是干什么用的

gradle默认会把包缓存到用户目录的.gradle目录下,如果你打开.gradlecachesmodules-2files-2.1,你会发现很多的jar包。你可以把caches文件夹删除。
2023-06-28 04:47:361

html中的这个表示什么意思呢

类名为login_wrapper的div盒子! <div class="login_wrapper"></div> 这个为完整的一个盒子。
2023-06-28 04:47:441

应用程序hwinfowrapper.exe出现严重错误怎么解决

应用程序发生异常 未知的软件异常1.病毒木马造成的,在当今互联网时代,病毒坐着为了获得更多的牟利,常用病毒绑架应用程序和系统文件,然后某些安全杀毒软件把被病毒木马感染的应用程序和系统文件当病毒杀了导致的。2.应用程序组件丢失,应用程序完整的运行需要一些系统文件或者某些ll文件支持的,如果应用程序组件不完整也会导致的。3.系统文件损坏或丢失,盗版系统或Ghost版本系统,很容易出现该问题。4.操作系统自身的问题,操作系统本身也会有bug 。5.硬件问题,例如内存条坏了或者存在质量问题,或者内存条的金手指的灰尘特别多。应用程序发生异常怎么办1.检查电脑是否存在病毒,请使用百度卫士进行木马查杀。2.系统文件损坏或丢失,盗版系统或Ghost版本系统,很容易出现该问题。建议:使用完整版或正版系统。3.安装的软件与系统或其它软件发生冲突,找到发生冲突的软件,卸载它。如果更新下载补丁不是该软件的错误补丁,也会引起软件异常,解决办法:卸载该软件,重新下载重新安装试试。顺便检查开机启动项,把没必要启动的启动项禁止开机启动。4.如果检查上面的都没问题,可以试试下面的方法。打开开始菜单→运行→输入cmd→回车,在命令提示符下输入下面命令 for %1 in (%windir%system32*.dll) do regsvr32.exe /s %1回车。完成后,在输入下面for %i in (%windir%system32*.ocx) do regsvr32.exe /s %i 回车。如果怕输入错误,可以复制这两条指令,然后在命令提示符后击鼠标右键,打“粘贴”,回车,耐心等待,直到屏幕滚动停止为止。(重启电脑)。
2023-06-28 04:47:511

为什么我看见有的HTML5的页面为什么把所有的内容都放到一个div,例如页面内容

是结构分块的,只是包在一个DIV容器里,有用wrapper的,有用container的,有自定义的,都可以。包起来的优点是整体页面的样式啊,或者脚本啥的好处理
2023-06-28 04:47:581