Web 服务器 -【Tomcat】的简单学习
- Tomcat
- 1 简介
- 1.1 什么是Web服务器
- 2 基本使用
- 2.1 下载
- 2.2 安装
- 2.3 卸载
- 2.4 启动
- 2.5 关闭
- 2.6 配置
- 2.7 部署
- 3 Maven创建Web项目
- 3.1 Web项目结构
- 3.2 创建Maven Web项目
- 4 IDEA使用Tomcat
- 4.1 集成本地Tomcat
- 4.2 Tomcat Maven插件
Tomcat
1 简介
1.1 什么是Web服务器
Web服务器是一个应用程序(软件),对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。主要功能是"提供网上信息浏览服务"。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-abKtSM7l-1691801125756)(assets/1627058356051.png)]](https://img-blog.csdnimg.cn/2b14e49d6e074bcf80073fa7b3fd9ce4.png)
Web服务器是安装在服务器端的一款软件,将来我们把自己写的Web项目部署到Web Tomcat服务器软件中,当Web服务器软件启动后,部署在Web服务器软件中的页面就可以直接通过浏览器来访问了。
Web服务器软件使用步骤
- 准备静态资源
- 下载安装Web服务器软件
- 将静态资源部署到Web服务器上
- 启动Web服务器使用浏览器访问对应的资源
上述内容在演示的时候,使用的是Apache下的Tomcat软件,至于Tomcat软件如何使用,后面会详细的讲到。而对于Web服务器来说,实现的方案有很多,Tomcat只是其中的一种,而除了Tomcat以外,还有很多优秀的Web服务器,比如:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yv6WyzcN-1691801125757)(assets/1627060368806.png)]](https://img-blog.csdnimg.cn/c19bfff3335948c7a0d1e7eaeddba044.png)
Tomcat就是一款软件,我们主要是以学习如何去使用为主。具体我们会从以下这些方向去学习:
-
简介: 初步认识下Tomcat
-
基本使用: 安装、卸载、启动、关闭、配置和项目部署,这些都是对Tomcat的基本操作
-
IDEA中如何创建Maven Web项目
-
IDEA中如何使用Tomcat,后面这两个都是我们以后开发经常会用到的方式
首选我们来认识下Tomcat。
Tomcat
Tomcat的相关概念:
-
Tomcat是Apache软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范。
-
概念中提到了JavaEE规范,那什么又是JavaEE规范呢?
JavaEE: Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF。
-
因为Tomcat支持Servlet/JSP规范,所以Tomcat也被称为Web容器、Servlet容器。Servlet需要依赖Tomcat才能运行。
-
Tomcat的官网: https://tomcat.apache.org/ 从官网上可以下载对应的版本进行使用。
Tomcat的LOGO
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A3O9Qcq5-1691801125757)(assets/1627176045795.png)]](https://img-blog.csdnimg.cn/96d08199fe5f48538c98cddb794735fa.png)
小结
通过这一节的学习,我们需要掌握以下内容:
- Web服务器的作用
封装HTTP协议操作,简化开发
可以将Web项目部署到服务器中,对外提供网上浏览服务
- Tomcat是一个轻量级的Web服务器,支持Servlet/JSP少量JavaEE规范,也称为Web容器,Servlet容器。
2 基本使用
Tomcat总共分两部分学习,先来学习Tomcat的基本使用,包括Tomcat的下载、安装、卸载、启动和关闭。
2.1 下载
直接从官网下载
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qx0IwhFR-1691801125757)(assets/1627178001030.png)]](https://img-blog.csdnimg.cn/a10afb71530241759aeaca2922351447.png)
2.2 安装
Tomcat是绿色版,直接解压即可
-
在D盘的software目录下,将
apache-tomcat-8.5.68-windows-x64.zip进行解压缩,会得到一个apache-tomcat-8.5.68的目录,Tomcat就已经安装成功。注意,Tomcat在解压缩的时候,解压所在的目录可以任意,但最好解压到一个不包含中文和空格的目录,因为后期在部署项目的时候,如果路径有中文或者空格可能会导致程序部署失败。
-
打开
apache-tomcat-8.5.68目录就能看到如下目录结构,每个目录中包含的内容需要认识下,![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AulIIwE6-1691801125758)(assets/1627178815892.png)]](https://img-blog.csdnimg.cn/faa2603fe34a4749a70ba6fbbf849335.png)
bin:目录下有两类文件,一种是以
.bat结尾的,是Windows系统的可执行文件,一种是以.sh结尾的,是Linux系统的可执行文件。webapps:就是以后项目部署的目录
到此,Tomcat的安装就已经完成。
2.3 卸载
卸载比较简单,可以直接删除目录即可
2.4 启动
双击: bin\startup.bat
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y1Ah3WLE-1691801125758)(assets/1627179006011.png)]](https://img-blog.csdnimg.cn/4a38a1b308aa45f39e0d07c2105ad8ff.png)
启动后,通过浏览器访问 http://localhost:8080能看到Apache Tomcat的内容就说明Tomcat已经启动成功。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zCAou0Gp-1691801125758)(assets/1627199957728.png)]](https://img-blog.csdnimg.cn/160b2ca9dc7241b899ac0b5e279da9db.png)
注意: 启动的过程中,控制台有中文乱码,需要修改conf/logging.prooperties
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7QFTa7Ab-1691801125759)(assets/1627199827589.png)]](https://img-blog.csdnimg.cn/d611a2f700954630b815bb65c69a5eb5.png)
2.5 关闭
关闭有三种方式
- 直接x掉运行窗口:强制关闭[不建议]
- bin\shutdown.bat:正常关闭
- ctrl+c: 正常关闭
2.6 配置
修改端口
- Tomcat默认的端口是8080,要想修改Tomcat启动的端口号,需要修改 conf/server.xml
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pMINVw2k-1691801125759)(assets/1627200509883.png)]](https://img-blog.csdnimg.cn/715e23cc9bdd4874b593bf7fcb041075.png)
注: HTTP协议默认端口号为80,如果将Tomcat端口号改为80,则将来访问Tomcat时,将不用输入端口号。
启动时可能出现的错误
-
Tomcat的端口号取值范围是0-65535之间任意未被占用的端口,如果设置的端口号被占用,启动的时候就会包如下的错误
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8ynx0ot6-1691801125759)(assets/1627200780590.png)]](https://img-blog.csdnimg.cn/e2fd64bef9ff444ab3d73a878d2c2885.png)
-
Tomcat启动的时候,启动窗口一闪而过: 需要检查JAVA_HOME环境变量是否正确配置
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pAyhjfVS-1691801125759)(assets/1627201248802.png)]](https://img-blog.csdnimg.cn/e5fdfbeea5dc4596ac4500d842464c05.png)
2.7 部署
-
Tomcat部署项目: 将项目放置到webapps目录下,即部署完成。
-
将
资料/2. Tomcat/hello目录拷贝到Tomcat的webapps目录下 -
通过浏览器访问
http://localhost/hello/a.html,能看到下面的内容就说明项目已经部署成功。![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4ZNTMw0Z-1691801125760)(assets/1627201572748.png)]](https://img-blog.csdnimg.cn/ae1ce73eabe54082a0319941fa4bedd9.png)
但是呢随着项目的增大,项目中的资源也会越来越多,项目在拷贝的过程中也会越来越费时间,该如何解决呢?
-
-
一般JavaWeb项目会被打包称war包,然后将war包放到Webapps目录下,Tomcat会自动解压缩war文件
-
将
资料/2. Tomcat/haha.war目录拷贝到Tomcat的webapps目录下 -
Tomcat检测到war包后会自动完成解压缩,在webapps目录下就会多一个haha目录
-
通过浏览器访问
http://localhost/haha/a.html,能看到下面的内容就说明项目已经部署成功。
-
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4nxGXdKW-1691801125760)(assets/1627201868752.png)]](https://img-blog.csdnimg.cn/d968b36714024f7dadb573b4ebf902ee.png)
至此,Tomcat的部署就已经完成了,至于如何获得项目对应的war包,后期我们会借助于IDEA工具来生成。
3 Maven创建Web项目
介绍完Tomcat的基本使用后,我们来学习在IDEA中如何创建Maven Web项目,学习这种方式的原因是以后Tomcat中运行的绝大多数都是Web项目,而使用Maven工具能更加简单快捷的把Web项目给创建出来,所以Maven的Web项目具体如何来构建呢?
在真正创建Maven Web项目之前,我们先要知道Web项目长什么样子,具体的结构是什么?
3.1 Web项目结构
Web项目的结构分为:开发中的项目和开发完可以部署的Web项目,这两种项目的结构是不一样的,我们一个个来介绍下:
-
Maven Web项目结构: 开发中的项目
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xCpTO8gC-1691801125760)(assets/1627202865978.png)]](https://img-blog.csdnimg.cn/1a06d76646204ddd8fa6095355ac59eb.png)
-
开发完成部署的Web项目
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SkevkjrM-1691801125760)(assets/1627202903750.png)]](https://img-blog.csdnimg.cn/54440327083f405cba5fe49c50ccf6ff.png)
- 开发项目通过执行Maven打包命令package,可以获取到部署的Web项目目录
- 编译后的Java字节码文件和resources的资源文件,会被放到WEB-INF下的classes目录下
- pom.xml中依赖坐标对应的jar包,会被放入WEB-INF下的lib目录下
3.2 创建Maven Web项目
介绍完Maven Web的项目结构后,接下来使用Maven来创建Web项目,创建方式有两种:使用骨架和不使用骨架
使用骨架
具体的步骤包含:
1.创建Maven项目
2.选择使用Web项目骨架
3.输入Maven项目坐标创建项目
4.确认Maven相关的配置信息后,完成项目创建
5.删除pom.xml中多余内容
6.补齐Maven Web项目缺失的目录结构
-
创建Maven项目
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0x2BPHA3-1691801125761)(assets/1627227574092.png)]](https://img-blog.csdnimg.cn/26b5667818a046c5a5e72edf4f9c3f16.png)
-
选择使用Web项目骨架
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EYQcp1v9-1691801125761)(assets/1627227650406.png)]](https://img-blog.csdnimg.cn/4796651cdba0493982e4f59cb3f72122.png)
-
输入Maven项目坐标创建项目
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Lq2ZNfn-1691801125761)(assets/1627228065007.png)]](https://img-blog.csdnimg.cn/05ad9c6547b040408da9719d9cdaca76.png)
-
确认Maven相关的配置信息后,完成项目创建
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XnfFNCn8-1691801125761)(assets/1627228413280.png)]](https://img-blog.csdnimg.cn/3558afcc84e54de48fef71ec62a07a7f.png)
-
删除pom.xml中多余内容,只留下面的这些内容,注意打包方式 jar和war的区别
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZsryneQ0-1691801125762)(assets/1627228584625.png)]](https://img-blog.csdnimg.cn/04c9653e6cb54d36be6d003b7df0faea.png)
-
补齐Maven Web项目缺失的目录结构,默认没有java和resources目录,需要手动完成创建补齐,最终的目录结果如下
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hovgd3oq-1691801125762)(assets/1627228673162.png)]](https://img-blog.csdnimg.cn/4757546fd20a4a7da477d8ba2c945a73.png)
不使用骨架
具体的步骤包含:
1.创建Maven项目
2.选择不使用Web项目骨架
3.输入Maven项目坐标创建项目
4.在pom.xml设置打包方式为war
5.补齐Maven Web项目缺失webapp的目录结构
6.补齐Maven Web项目缺失WEB-INF/web.xml的目录结构
-
创建Maven项目
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i394UL1D-1691801125762)(assets/1627229111549.png)]](https://img-blog.csdnimg.cn/7f63efd425b8458287ba55bcfc00eeca.png)
-
选择不使用Web项目骨架
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MhBvEMR0-1691801125762)(assets/1627229137316.png)]](https://img-blog.csdnimg.cn/548f7a1640454fcdb8a58a5118f1abbb.png)
-
输入Maven项目坐标创建项目
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c91XzC8a-1691801125763)(assets/1627229371251.png)]](https://img-blog.csdnimg.cn/565945f481db40368b924f215862c22d.png)
-
在pom.xml设置打包方式为war,默认是不写代表打包方式为jar
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T52o1yQD-1691801125763)(assets/1627229428161.png)]](https://img-blog.csdnimg.cn/5b4b18de195c4201a085ce4e66e32056.png)
-
补齐Maven Web项目缺失webapp的目录结构
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tKlkiQNX-1691801125763)(assets/1627229584134.png)]](https://img-blog.csdnimg.cn/cb8574955d3f45dea17350303e67790c.png)
-
补齐Maven Web项目缺失WEB-INF/web.xml的目录结构
6800 -
补充完后,最终的项目结构如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NoNRM0fP-1691801125764)(assets/1627229478030.png)]](https://img-blog.csdnimg.cn/9c264683fb424ccebc5b010c48240330.png)
上述两种方式,创建的web项目,都不是很全,需要手动补充内容,至于最终采用哪种方式来创建Maven Web项目,都是可以的,根据各自的喜好来选择使用即可。
小结
1.掌握Maven Web项目的目录结构
2.掌握使用骨架的方式创建Maven Web项目
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eLq8QSbJ-1691801125764)(assets/1627204022604.png)]](https://img-blog.csdnimg.cn/36f3fff4e36545c9b7babb0805d9e18e.png)
3.掌握不使用骨架的方式创建Maven Web项目
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ohtdqvDa-1691801125764)(assets/1627204076090.png)]](https://img-blog.csdnimg.cn/c3f974cd69c74cc082a9b69b17ca9387.png)
4 IDEA使用Tomcat
- Maven Web项目创建成功后,通过Maven的package命令可以将项目打包成war包,将war文件拷贝到Tomcat的webapps目录下,启动Tomcat就可以将项目部署成功,然后通过浏览器进行访问即可。
- 然而我们在开发的过程中,项目中的内容会经常发生变化,如果按照上面这种方式来部署测试,是非常不方便的
- 如何在IDEA中能快速使用Tomcat呢?
在IDEA中集成使用Tomcat有两种方式,分别是集成本地Tomcat和Tomcat Maven插件
4.1 集成本地Tomcat
目标: 将刚才本地安装好的Tomcat8集成到IDEA中,完成项目部署,具体的实现步骤
-
打开添加本地Tomcat的面板
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TgOmGjSf-1691801125765)(assets/1627229992900.png)]](https://img-blog.csdnimg.cn/804f2ecbd82e44dcbb3c637a14591b8f.png)
-
指定本地Tomcat的具体路径
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C8B9ejke-1691801125765)(assets/1627230313062.png)]](https://img-blog.csdnimg.cn/66618d68ab7b40b6b1fe555d655392b8.png)
-
修改Tomcat的名称,此步骤可以不改,只是让名字看起来更有意义,HTTP port中的端口也可以进行修改,比如把8080改成80
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VsYabGTx-1691801125765)(assets/1627230366658.png)]](https://img-blog.csdnimg.cn/2aef95d3dbd14cf69efba6224cbfe381.png)
-
将开发项目部署项目到Tomcat中
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G9B2WVWm-1691801125766)(assets/1627230913259.png)]](https://img-blog.csdnimg.cn/3b68da5757a047ecac32c47567a3b41d.png)
扩展内容: xxx.war和 xxx.war exploded这两种部署项目模式的区别?
-
war模式是将WEB工程打成war包,把war包发布到Tomcat服务器上
-
war exploded模式是将WEB工程以当前文件夹的位置关系发布到Tomcat服务器上
-
war模式部署成功后,Tomcat的webapps目录下会有部署的项目内容
-
war exploded模式部署成功后,Tomcat的webapps目录下没有,而使用的是项目的target目录下的内容进行部署
-
建议大家都选war模式进行部署,更符合项目部署的实际情况
-
-
部署成功后,就可以启动项目,为了能更好的看到启动的效果,可以在webapp目录下添加a.html页面
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YbVYZygU-1691801125766)(assets/1627233265351.png)]](https://img-blog.csdnimg.cn/d7f4b351c16440f1a3defcd7a2e580f8.png)
-
启动成功后,可以通过浏览器进行访问测试
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tbJnFCCS-1691801125766)(assets/1627232743706.png)]](https://img-blog.csdnimg.cn/01bc25c42e4e4940a9cb503acfce1314.png)
-
最终的注意事项
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Gwe7dP5-1691801125766)(assets/1627232916624.png)]](https://img-blog.csdnimg.cn/534702f4685542f98bdd25aa2a7b68cc.png)
至此,IDEA中集成本地Tomcat进行项目部署的内容我们就介绍完了,整体步骤如下,大家需要按照流程进行部署操作练习。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NuchlFE5-1691801125767)(assets/1627205657117.png)]](https://img-blog.csdnimg.cn/f45643b6c38349dba231be9d90899f8b.png)
4.2 Tomcat Maven插件
在IDEA中使用本地Tomcat进行项目部署,相对来说步骤比较繁琐,所以我们需要一种更简便的方式来替换它,那就是直接使用Maven中的Tomcat插件来部署项目,具体的实现步骤,只需要两步,分别是:
-
在pom.xml中添加Tomcat插件
<build><plugins><!--Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version></plugin></plugins> </build> -
使用Maven Helper插件快速启动项目,选中项目,右键–>Run Maven --> tomcat7:run
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RR9rpmNh-1691801125767)(assets/1627233963315.png)]](https://img-blog.csdnimg.cn/03e5b165ff104eb0a50c3eee82909c17.png)
注意:
- 如果选中项目并右键点击后,看不到Run Maven和Debug Maven,这个时候就需要在IDEA中下载Maven Helper插件,具体的操作方式为: File --> Settings --> Plugins --> Maven Helper —> Install,安装完后按照提示重启IDEA,就可以看到了。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sih830zy-1691801125767)(assets/1627234184076.png)]](https://img-blog.csdnimg.cn/2831fb42993049b2baa2fad74d88d5ab.png)
- Maven Tomcat插件目前只有Tomcat7版本,没有更高的版本可以使用
- 使用Maven Tomcat插件,要想修改Tomcat的端口和访问路径,可以直接修改pom.xml
<build><plugins><!--Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>80</port><!--访问端口号 --><!--项目访问路径未配置访问路径: http://localhost:80/tomcat-demo2/a.html配置/后访问路径: http://localhost:80/a.html如果配置成 /hello,访问路径会变成什么?答案: http://localhost:80/hello/a.html--><path>/</path></configuration></plugin></plugins>
</build>
小结
通过这一节的学习,大家要掌握在IDEA中使用Tomcat的两种方式,集成本地Tomcat和使用Maven的Tomcat插件。后者更简单,推荐大家使用,但是如果对于Tomcat的版本有比较高的要求,要在Tomcat7以上,这个时候就只能用前者了。
相关文章:
Web 服务器 -【Tomcat】的简单学习
Tomcat1 简介1.1 什么是Web服务器 2 基本使用2.1 下载2.2 安装2.3 卸载2.4 启动2.5 关闭2.6 配置2.7 部署 3 Maven创建Web项目3.1 Web项目结构3.2 创建Maven Web项目 4 IDEA使用Tomcat4.1 集成本地Tomcat4.2 Tomcat Maven插件 Tomcat 1 简介 1.1 什么是Web服务器 Web服务器是…...
armbian使用1panel快速部署部署springBoot项目后端
文章目录 前言环境准备实现步骤第一步:Armbian安装1panel第二步:安装数据库第三步:查看数据库容器重要信息【重要】查看容器所在的网络查看容器连接地址 第四步:项目配置和打包第五步:构建项目镜像 前言 这里只是简单记录部署spr…...
Streamlit 讲解专栏(八):图像、音频与视频魔法
文章目录 1 前言2 st.image:嵌入图像内容2.1 图像展示与描述2.2 调整图像尺寸2.3 使用本地文件或URL 3 st.audio:嵌入音频内容3.1 播放音频文件3.2 生成音频数据播放 4 st.video:嵌入视频内容4.1 播放视频文件4.2 嵌入在线视频 5 结语&#x…...
python使用装饰器记录方法耗时
思路 python使用修饰器记录方法耗时,目的是每当方法执行完后,可以记录该方法耗时,而不需要在每个方法的执行前后,去创建一个临时变量,来记录耗时。 方式一(不推荐): 在每个方法的…...
JavaWeb课程学习--Day01
HTML 建立css文件: css使用方式: <span>...</span>无语意包裹标签 css中的三种选择器: 注意:播放视音频时要留出播放空间 盒子模型: 表格标签: 以上表格: 表单标签: 表…...
Spring Boot单元测试使用MockBean注解向Service注入Mock对象
1. 背景介绍 我们在测试时有一个Service,我们需要测试Service,但Service内部依赖ServiceA、ServiceB,此时我们希望Mock ServiceA,ServiceB 注入真实对象。 class Service {private ServiceA A;private ServiceB B;public int me…...
Java中使用instanceof判断对象类型
记录:470 场景:Java中使用instanceof判断对象类型。例如在解析JSON字符串转换为指定类型时,先判断类型,再定向转换。在List<Object>中遍历Object时,先判断类型,再定向转换。 版本:JDK 1…...
postman测试后端增删改查
目录 一、本文介绍 二、准备工作 (一)新建测试 (二)默认url路径查看方法 三、增删改查 (一)查询全部 (二)增加数据 (三)删除数据 (四&…...
根据源码,模拟实现 RabbitMQ - 通过 SQLite + MyBatis 设计数据库(2)
目录 一、数据库设计 1.1、数据库选择 1.2、环境配置 1.3、建库建表接口实现 1.4、封装数据库操作 1.5、针对 DataBaseManager 进行单元测试 一、数据库设计 1.1、数据库选择 MySQL 是我们最熟悉的数据库,但是这里我们选择使用 SQLite,原因如下&am…...
1、基于 CentOS 7 构建 LVS-DR 群集。 2、配置nginx负载均衡
一、基于CentOS7和、构建LVS-DR群集 准备四台虚拟机 ip作用192.168.27.150客户端192.168.27.151LVS192.168.27.152RS192.168.27.152RS 关闭防火墙 [rootlocalhost ~]# systemctl stop firewalld安装ifconfig yum install net-tools.x86_64 -y1、DS上 1.1 配置LVS虚拟IP …...
android 如何分析应用的内存(十七)——使用MAT查看Android堆
android 如何分析应用的内存(十七)——使用MAT查看Android堆 前一篇文章,介绍了使用Android profiler中的memory profiler来查看Android的堆情况。 如Android 堆中有哪些对象,这些对象的引用情况是什么样子的。 可是我们依然面临…...
Spring 使用注解储存对象
文章目录 前言存储 Bean 对象五大注解五大注解示例配置包扫描路径读取bean的示例 方法注解 Bean Bean 命名规则重命名 Bean 前言 通过在 spring-config 中添加bean的注册内容,我们已经可以实现基本的Spring读取和存储对象的操作了,但在操作中我们发现读…...
一、初始 Spring MVC
文章目录 一、回顾 MVC 模式二、初始 Spring MVC2.1 Spring MVC 核心组件2.1.1 前端控制器(DispatcherServlet)2.1.2 处理器映射器(HandlerMapping)2.1.3 处理器适配器(HandlerAdapter)2.1.3 后端控制器&am…...
《爬虫》爬取页面图片并保存
爬虫 前言代码效果 简单的爬取图片 前言 这几天打算整理与迁移一下博客。因为 CSDN 的 Markdown 编辑器很好用 ,所以全部文章与相关图片都保存在 CSDN。而且 CSDN 支持一键导出自己的文章为 markdown 文件。但导出的文件中图片的连接依旧是 url 连接。为了方便将图…...
【项目部署】JavaScript解析JSON解析报错Unexpected token xxx is not valid JSON
问题背景 这个报错发生在之前部署的一个前后端分离的项目中。后端使用的Spring Boot,前端使用的JavaScript,前后端交互使用Thymeleaf框架。 现象 项目组的另一个小伙伴说,突然有个页面打不开了,整个页面全空白。我F12打开浏览器…...
做接口测试如何上次文件
在日常工作中,经常有上传文件功能的测试场景,因此,本文介绍两种主流编写上传文件接口测试脚本的方法。 首先,要知道文件上传的一般原理:客户端根据文件路径读取文件内容,将文件内容转换成二进制文件流的格式…...
Java SPI机制详解-01
1. 概述 SPI(Service Provider Interface),是 Java 6 引入了一个内置功能,实现服务提供发现和加载机制,使之与特定接口的匹配。 SPI 机制的核心思想就是 解耦 ,将装配的控制权移到程序之外,这…...
由浅入深C系列六:C中实现字符串trim的功能
C中实现字符串trim的功能 简介设计思路代码实现运行效果 简介 一个项目中,需要用c语言实现对字符串中的字定字符进行过滤并从字符串的删除,查询了C语言的基本库,没有发现有这样的函数,于是发挥程序员的主观能力性,自力…...
博客网站添加复制转载提醒弹窗Html代码
网站如果是完全禁止右键(复制、另存为等)操作,对用户来说体验感会降低,但是又不希望自己的原创内容直接被copy,今天飞飞和你们分享几行复制转载提醒弹窗Html代码。 效果展示: 复制以下代码,将其…...
ubuntu下nfs服务安装
操作系统:ubuntu22.04.2 一、服务端安装与配置 1、在服务端安装nfs服务端组件 sudo apt install nfs-kernel-server 2、创建共享目录share并且授权所有人可以访问 sudo mkdir /shared sudo chmod -R 777 /shared 3、配置nfs sudo vim /etc/exports 这将允许…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
