【Tomcat与Servlet篇1】认识Tomcat与Maven
目录
一、什么是Tomcat
二、Tomcat的几个重要目录
conf文件编辑
Server.xml
logs文件
Webapps目录
三、如何使用Tomcat
但是,如果出现了点击之后进行闪退的情况,那又是怎么回事呢?
原因1:环境变量没有配置
原因2:Tomcat服务器默认的端口被占用
如何查看Tomcat的运行效果
四、认识maven
五、idea搭配maven的使用
第一步:新建一个maven项目
pom.xml
第二步:使用maven
maven管理依赖
一、什么是Tomcat
Tomcat其实就是一个HTTP服务器。
在这一篇文章当中,我们提到了:HTTP协议的传输层大部分是基于TCP协议来实现的
【网络原理7】认识HTTP_革凡成圣211的博客-CSDN博客https://blog.csdn.net/weixin_56738054/article/details/129148515?spm=1001.2014.3001.5502因此,HTTP服务器,其实就是在TCP服务器的基础上面,新增了一些额外的功能:例如
解析请求当中的HTTP报文
也就是把用户(前端)提交的数据转化为对象;
或者把服务器的响应转化为对象返回。
二、Tomcat的几个重要目录
首先去Tomcat官网下载一个Tomcat服务器。
Apache Tomcat® - Welcome!https://tomcat.apache.org/
可以自行选择下载8版本或者9版本。 当下载到本地磁盘当中之后,首先找到bin目录,然后找到这个文件(startup):
conf文件
conf文件大部分都是tomcat的配置文件,很多都是.xml文件。
Server.xml
这一个文件就位于conf目录当中。通过这个文件可以修改tomcat的端口号信息。
点击,使用记事本打开,就可以看到Connector port的信息了。
Tomcat默认绑定的端口为8080端口,也就是tomcat服务器启动时候绑定的端口。
logs文件
这一个文件,就是tomcat上面的一些日志。
这一个日志记录了Tomcat运行过程当中的一些细节,有可能是服务器启动启动时候的信息,也有可能是Tomcat运行当中出现的一些异常等。
它默认都是按照最后记录的时间进行排序的。
Webapps目录
这一个目录当中存放的就是一些具体的JavaWeb项目。这里存放的都是需要部署的servlet程序,每一个servlet程序都是一个war后缀的文件。
如果把其中一个war部署到云服务器上面,那么每一个war相当于是一个webapp,也就是相当于一个网站。
在上图当中,一个webapps下面有多个项目,那么说明一个tomcat支持同时部署多个项目。
三、如何使用Tomcat
找到bin目录,然后找到start-up.bat。
双击,就可以运行了。
但是,如果出现了点击之后进行闪退的情况,那又是怎么回事呢?
原因1:环境变量没有配置
Tomcat如果想要运行,首先需要寻找到JDK,因为Tomcat服务器是基于Java语言开发的。
那怎样才能让Tomcat寻找到JDK的安装路径呢?
这就需要配置环境变量了。
右键:我的电脑,选择属性->高级系统设置。
进入之后,点击环境变量。
在下面的系统变量当中,配置一下JDK的安装目录,并且命名:JAVA_HOME
一般情况下,Tomcat都会自动配置环境变量。
原因2:Tomcat服务器默认的端口被占用
如果此时tomcat启动想要占用的端口:8080已经被本电脑上面的其他应用程序给占用了,那么也不可以正常启动。
可以在cmd当中输入:netstat-ano来查看端口占用情况。
如何查看Tomcat的运行效果
打开任意一个浏览器,在URL地址栏当中输入:
http://localhost:8080/
如果查看到Tomcat的欢迎页面,说明此时Tomcat已经可以正常运行了。
后续,在webapps下面部署的项目,都可以直接在本地访问了。
但是,如何让webapps下面的项目被所有的人都可以访问到呢?后面的文章会提到,如何在云服务器上面部署Java项目。
四、认识maven
maven主要负责下面的几个工作:
1:管理依赖:此处的依赖指的是一般是第三方的jar包。例如spring框架/jdbc的驱动jar包
2:构建/编译:也是调用jdk来进行编译的。
3:打包:指的是把项目打包成jar包。一般打包成jar包之后需要发送到云服务器上面进行部署。
关于第1点:如果像之前一样手动导入依赖的jar包,例如前面学习jdbc的时候,是通过从网上下载的jar包,然后复制、黏贴到项目文件夹当中的方式的。那么也就意味着:
问题1:不同的jar包版本之间需要兼容;
问题2:你必须反复从网上下载jar包,操作十分冗余。
引入了maven之后,就可以很有效地解决上述的两个问题。
五、idea搭配maven的使用
第一步:新建一个maven项目
在左上角的文件当中选择新建一个项目,然后找到Maven。
创建好之后,可以看到,这是刚刚创建好这个项目的一组项目结构目录:
还有一个最最核心的文件:
pom.xml
类似于一个maven项目的司令部。一切和这个项目有关的依赖jar包,都在这个pom.xml文件当中可以找到。下面我们点开看一下:
这个说明,此处使用的jdk版本是8版本。
第二步:使用maven
点击项目右边的"maven“。
右侧罗列的内容,都是可以通过maven来进行管理操作的。
其中有一项就是package,这个就是把项目进行打包的按钮。一般都是打包成一个jar包或者war包。
maven管理依赖
首先,需要在idea当中创建<dependencies> </dependencies>的标签
然后,在上述标签当中,就可以定义多个<dependency> </dependency>
以mysql的驱动jar包为例子:
首先,需要寻找到maven的中央仓库:
https://mvnrepository.com/
点开这个网页之后,在搜索框内输入:mysql
然后,点进去,找到版本:
再点开需要的版本:
然后把红色方框的内容,复制到依赖当中:
此时还没有导入,然后点击右上角的按钮:
就可以把jar包导入进来了。
相关文章:

【Tomcat与Servlet篇1】认识Tomcat与Maven
目录 一、什么是Tomcat 二、Tomcat的几个重要目录 conf文件编辑 Server.xml logs文件 Webapps目录 三、如何使用Tomcat 但是,如果出现了点击之后进行闪退的情况,那又是怎么回事呢? 原因1:环境变量没有配置 原因2&#…...

C++类和对象:拷贝构造函数和运算符重载
目录 一. 拷贝构造函数 1.1 什么是拷贝构造函数 1.2 编译器默认生成的拷贝构造函数 1.3 拷贝构造函数特性总结 二. 运算符重载 2.1 运算符重载概述 2.2 比较运算符重载(> > < <) 2.2.1 >运算符的重载 2.2.2 运算符的重载 2.…...

【IntelliJ IDEA】idea plugins搜索不出来,如何找到插件的解决方案
一、背景描述安装好IDEA后,想下载一些插件来使用,因为IDEA非常方便的一点就是插件使用非常的方便,但是经常会发现进入到插件市场无法搜索到插件的情况,这个时候就有点烦人了。那么怎么解决这个问题呢?以下会把我能想到…...

移动端自动化测试(一)appium环境搭建
自动化测试有主要有两个分类,接口自动化和ui自动化,ui自动化呢又分移动端的和web端的,当然还有c/s架构的,这种桌面程序应用的自动化,使用QTP,只不过现在没人做了。 web自动化呢,现在基本上都是…...

5 逻辑回归及Python实现
1 主要思想 分类就是分割数据: 两个条件属性:直线;三个条件属性:平面;更多条件属性:超平面。 使用数据: 5.1,3.5,0 4.9,3,0 4.7,3.2,0 4.6,3.1,0 5,3.6,0 5.4,3.9,0 . . . 6.2,2.9,1 5.1,2.5…...

技术干货 | Modelica建模秘籍之状态变量
在很多领域都有“系统”这个概念,它描述的往往是一些复杂关系的总和。假如我们将系统看做一个黑箱,那么,在系统的作用下,外界的输入有时会产生令人意想不到的输出,“蝴蝶效应”就是其中的典型案例。图1 一只南美洲亚马…...
LeetCode 2574. 左右元素和的差值
给你一个下标从 0 开始的整数数组 nums ,请你找出一个下标从 0 开始的整数数组 answer ,其中: answer.length nums.length answer[i] |leftSum[i] - rightSum[i]| 其中: leftSum[i] 是数组 nums 中下标 i 左侧元素之和。如果不…...

rollup环境配置
VUE2.x源码学习笔记 1. rollup环境配置 首先在VScode中新建文件夹vue_sc,然后终端打开定位到打开的文件夹,输入“npm init -y”初始化配置项,运行成功之后文件夹新增package.json文件 继续在终端运行"npm install babel/preset-env ba…...

二分查找与二分答案、递推与递归、双指针、并查集和单调队列
二分查找与二分答案 文章目录二分查找与二分答案应用总结例题木材加工题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示数据规模与约定思路代码递归与递推应用总结[NOIP2003 普及组] 栈题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思…...

如何进行域名购买,获取免费ssl证书,使用springboot绑定ssl证书
前言 小编我将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注一下!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!让我们在成长的道路上互相学习&#…...

LabVIEW网络服务安全2
LabVIEW网络服务安全2在客户端应用程序中创建签名对请求进行签名要求您具有能够从客户端的编程语言调用的MD5摘要算法以及SHA256加密摘要算法的实现。这两种算法通常都可用于大多数平台。还需要:1. 要使用的HTTP方法的字符串(“GET”、“POST”、“PUT”…...

java动态代理
目录儿一、代理模式的作用二、实现代理的方式三、动态代理的实现3.1 jdk动态代理3.2 cglib动态代理一、代理模式的作用 功能增强: 基于某个功能,再增加一些功能。 (比如目标类只负责核心功能,其他附属功能通过代理类完成。代理类的方法名与目…...

Python 简单可变、复杂可变、简单不可变、复杂不可变类型的copy、deepcopy的行为
copy模块:copy:浅拷贝deepcopy:深拷贝简单可变类型、复杂可变的copy()、deepcopy():简单不可变、复杂不可变类型的copy()、deepcopy():结论:对于简单类型的可变类型copy是深拷贝,改变了该拷贝变…...

QML Item
在QML中所有的可视项目都继承自Item,虽然Item本身没有可视化的外观,但它定义了可视化项目的所有属性。 Item可以作为容器使用: Item{Rectangle{id:retc}Rectangle{id:retc1}Rectangle{id:retc2}Rectangle{id:retc3}} item拥有children属性…...

使用xca工具生成自签证书
本文使用 xca 生成自签证书。 概述 之前使用 openssl 生成证书,在 golang 中测试,发现客户端连接失败,经查发现是Subject Alternative Name不支持导致的。因虚拟机 openssl 版本较低,有个功能无法实现,且升级麻烦&…...

Unity IOS 通过命令行导出IPA
新建一个文件然后输入如下内容 #!/usr/bin/env sh /Applications/Unity/Hub/Editor/2020.1.5f1c1/Unity.app/Contents/MacOS/Unity -quit -batchmode -projectPath /Users/zyt/Test -executeMethod Test.BuildEditor.BuildApp cd /Users/zyt/Test/Xcode/unity-xcode xcodebuil…...

「架构」全链路异步模式
总结自尼恩的全链路异步:网关纯异步化网关层的特点:不需要访问业务数据库只做协议转换和流量转发特点是 IO 密集型,特别适合纯异步的架构,可以极大的节省资源。如何进行网关异步化?使用高性能的通信框架Nettyÿ…...

CleanMyMac4.20最新版新增功能及电脑清理垃圾使用教程
CleanMyMac4.20作为知名的Mac清理工具,仅需一键即可快速而安全地清理系统垃圾,释放磁盘空间,因此一直深受Mac用户的喜爱。在不断更新的版本中,CleanMyMac已经不仅仅满足于只做简单的Mac清理工具,而是为Mac用户提供更多…...

Vue2的tsx开发入门完全指南
本篇文章尽量不遗漏重要环节,本着真正分享的心态,不做标题党 下面进入正题: 由于现在vue的官方脚手架已经非常完善我们就不单独配置webpack了,节省大量的时间成本。 首先使用vue/cli创建一个vue模版项目(记得是vue/…...

GLSL shader学习系列1-Hello World
这是GLSL shader系列第一篇文章,本文学习目标: 安装编辑工具编写hello world程序 安装插件 我使用VSCode编写shader代码,在VSCode上有两个好用的插件需要先装一下: Shader languages support for VS Code glsl-canvas…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...

免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...

WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...
6.计算机网络核心知识点精要手册
计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法:数据与控制信息的结构或格式,如同语言中的语法规则语义:控制信息的具体含义和响应方式,规定通信双方"说什么"同步:事件执行的顺序与时序…...