一、安装JAVA JDK
1、下载安装
- 打开链接 www.oracle.com/java/techno…
- 找到要下载的JAVA版本, 我使用的是MAC, 所以下载了MAC的
JAVA 17
- 下载后安装即可
2、配置环境
- 安装
Java
后, 位置如下
- 路径如下
/Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk
- 打开终端, 打开
~/
目录下的.zshrc
vim .zshrc
- 然后配置Java路径
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home
- 这句话等价于
export PATH="$PATH:$JAVA_HOME/bin"
二、安装Tomcat
1、下载
- 打开链接 tomcat.apache.org/
- 在左侧选择要下载的版本
- 我选择下载
Tomcat 10
2、配置
- 解压后, 我放到了
~\
目录下
- 打开
~/
目录下的.zshrc
文件,.zshrc
是隐藏文件, 可以使用快捷键command + shift + .
显示隐藏文件 - 打开终端, 命令行输入
vim .zshrc
- 打开
.zshrc
文件后, 导入Tomcat
的bin
文件夹所在目录
export CATALINA_HOMR=/Users/bowen4/apache-tomcat-10.0.12
- 这一句的意思是将CATALINA_HOMR加入到环境变量中, 相当于下面这句
export PATH="$PATH:$CATALINA_HOMR/bin"
3、启动和关闭
- 配置好环境之后, 再次使用终端, 进入
Tomcat
的bin
目录
cd /Users/bowen4/apache-tomcat-10.0.12/bin
- 获取执行文件的权限, 输入一下命令可以获取执行 .sh文件的权限
chmod +x *.sh
- 然后启动
Tomcat
./startup.sh
- 看到
Tomcat started.
就算启动成功了
- 打开浏览器, 输入
http://localhost:8080/
, 可以看到下面的界面
- 可以在终端中关闭
Tomcat
./shutdown.sh
- 再次刷新浏览器, 可以看到无法链接到Tomcat
三、安装 IntelliJ IDEA
1、下载安装
- 打开链接 www.jetbrains.com/idea/downlo…
- 根据自己的电脑, 选择对应的下载, 我的电脑室
Mac M1
, 所以下载.dmg (Apple Silicon)
2、创建项目
- 打开
IDEA
, 创建一个项目
- 选择创建一个空的项目
- 选择项目创建位置, 输入项目名
- 创建好
Network
后, 会自动弹出一个窗口, 每个项目都要有模块, 我们添加一个新的模块
- 如果不小心关闭了这个弹窗, 可以点击
File->Project Structure...
打开
- 点击
Net Module
后, 弹出下面的窗口, 选择JAVA
和使用的JDK
版本
- 输入模块名, 点击
Finish
- 点击OK
- 这时, 就可以看到
01_HelloWorld
模块,src
文件中就存放我们开发的源代码
3、简单开发
- 右键点击
src
, 创建一个Java Class
文件
- 我这里取名为
Main
- 在
Main
文件中编写代码
- 右键点击, 选择
Run 'Main.main()'
- 可以看到控制台的打印信息
- 上面的代码属于
自娱自乐
, 并不能和服务器进行交互, 所以我们还需要额外的操作
4、创建 Web Application
- 创建
Web Application
, 右键点击01_HelloWorld
, 选择Add Framework Support...
- 选择
Web Application
- 下面的图片中, 就是创建的
Web Application
- 在
Web Application
中创建一个text.html
文件, 并添加一张图片123.jpg
5、将 Web Application 配置到 Tomcat
- 客户端加载后端项目的简单流程如下
- 客户端发送请求
- 请求来到服务器端口(我这里默认端口号为8080)
- 端口将数据发送给
Tomcat
Tomcat
将数据发送给项目01_HelloWorld
- 现在我们给项目的
Web Application
配置到Tomcat
上, 可以将Tomcat
集成到IntelliJ IDEA
中
- 选择
Tomcat Server
下的Local
- 配置需要使用的
Tomcat
- 直接选择
Tomcat
的根目录即可
- 可以给
Tomcat
起一个名字
- 想要
Tomcat
在接收到请求时, 将数据发送给01_HelloWorld
项目, 就必须将01_HelloWorld
项目添加到Tomcat
中 - 点击
Deployment
, 点击+
, 点击Artifact...
, 将01_HelloWorld
项目添加到Tomcat
- 因为当前只有一个项目
01_HelloWorld
, 所以点击Artifact...
后会自动添加, 如果有多个项目, 会让你选择具体要添加的项目 - 修改
Application context
, 可以使用hello
访问01_HelloWorld
6、本地浏览器访问创建的项目
- 使用
Debug
模式运行, 以后可以通过打断点的方式调试程序
Debug
运行后, 可以看到成功启动Tomcat
的打印提示
- 同时会自动打开浏览器, 默认填充
http://localhost:8080/hello/
http://localhost
默认是本机8080
是本机Tomcat
对应的端口号hello
是01_HelloWorld
项目, 就是上面修改的Application context
- 直接访问项目, 例如这里的
hello
, 会默认加载Hello
项目的Web Application
中的index.htm
、index.html
、index.jsp
等文件, 所以才会有上面的内容显示
- 当然我们可以修改浏览器加载的
URL
, 访问Hello
中的test.html
文件
- 也可以访问
Hello
中的123.jpg
图片
- 创建
file
文件夹, 并将test.html
文件移动到file
文件夹中 - 创建
image
文件夹, 并将123.jpg
图片移动到image
文件夹中
- 重新点击Debug部署, 可以发现有一个弹窗, 系统默认选中
Restart server
Restart server
: 重启服务器, 然后部署Redeploy
: 服务器已经启动, 重新部署
- 我们可以通过修改下图位置, 修改弹窗默认的选项
- 将
Restart server
需要为Redeploy
- 再次点击
Debug
时, 弹窗默认选中Redeploy
- 重新部署后, 刷新浏览器, 发现无法加载图片
- 此时需要访问新的路径
http://localhost:8080/hello/image/123.jpg
加载图片
四、发送网络
1、编写界面, 发送网络
- 在
file
文件夹中创建login.html
文件, 并编写代码如下
- 通过浏览器打开界面
- 输入
用户名
和密码
- 点击
登录
, 可以看到将用户名
和密码
发送给了百度
2、导入Tomcat
的库
- 因为服务器就是本机, 所以
form
标签中的action
如下指定即可
- 需要引用
Tomcat
的两个库jsp-api.jar
和servlet-api.jar
- 打开下面的窗口, 选择
Dependencies
, 添加Library...
- 选择之前配置的
Tomcat
- 勾选选择的
Tomcat
, 点击OK
- 此时就可以在工程中看到引入的外部
Tomcat
库
3、发送请求到本地服务器
- 在
src
文件夹中创建Java Class
类型的LoginServlet
文件, 包名根据自己的想法随意命名
- 默认情况下, 在浏览器中输入
http://127.0.0.1:8080/hello
, 会访问项目01_HelloWorld
中web
文件夹下的index.jsp
文件
- 此时添加了
@WebServlet("/login")
后, 可以通过http://127.0.0.1:8080/hello/login
访问LoginServlet
类中的方法
- 在
LoginServlet
类中添加doGet
和doPost
方法, 并在方法实现中添加打印语句
- 将
login.html
文件中的form
标签的action
修改为/hello/login
, 就可以访问login
中的方法, 方法类型使用get
请求, 重新部署Web Application
- 在网页中输入
用户名
和密码
, 点击登录
- 可以看到网页空白, 此时就说明请求发送成功了, 参数在域名后拼接的形式传递
- 可以在
IntelliJ IDEA
中看到打印doGet
- 将方法类型修改为
post
, 重新部署
- 刷新网页, 输入
用户名
和密码
, 点击登录
- 界面变成空白, 说明请求发送成功, 并且可以看到域名后没有参数拼接
- 通过
检查
, 可以看到参数通过Data
的形式传递
- 此时, 可以看到打印
doPost
4、响应请求
- 在
LoginServlet
文件中, 添加响应代码, 重新部署
- 输入
用户名: 123
和密码: 456
- 点击
登录
, 显示Login Success!
- 回到输入界面, 输入
用户名: 123
和密码: 4567
- 点击
登录
, 显示Login Failure!
五、安装 Packet Tracer
1、注册安装
- 向下滑动, 找到
在线自定进度学习
, 点击了解详情
- 进入注册界面, 选择
国家
和出生日期
- 填写
注册的邮箱
,姓名
,州
,回答问题
,勾选必填项
- 如下图, 此时已经有邮件发送到了注册的邮箱中
- 打开收到的邮件, 点击
快速入门
- 输入密码
- 当点击
创建我的账号
之后, 来到下面这个界面, 此时账号已经注册完毕
- 滑到界面底部, 点击
PACKET TRACER
- 找到自己需要的版本下载
- 安装并登录
Cisco Packet Tracer
后, 就可以操作下面的界面了
2、计算机间通讯
- 计算机之间通讯, 需要知道
目标ip
和目标网卡地址
- 大致流程如下,
PC1
和PC2
通讯, 需要携带四个信息- PC1的ip地址
- PC2的ip地址
- PC1的网卡地址
- PC2的网卡地址
计算机的
MAC地址
就是网卡地址
3、简单使用
- 在桌面上放置两个PC计算机
- 使用交叉线连接两个计算机, 如果不知道用什么线, 就选择第一个连接, 会自动使用需要的线的类型
- 点击
计算机0
, 选择IP配置
, 给计算机0
配置IP地址
- 输入
IP地址
后, 点击tab
键, 会自动生成子网掩码
, 我设置的IP
地址是192.168.1.10
- 同样的方式, 配置
计算机1
的IP地址
和子网掩码
, 我设置的IP
地址是192.168.1.11
- 可以使用
笔记
功能, 给不同的计算机分别进行标注
- 再次点击
计算机0
, 选择命令提示符
- 输入命令
ping 192.168.1.11
- 看到下面的输入信息, 就说明
计算机0
和计算机1
之间进行了通信
4、拆解通信过程
- 点击右下角的
仿真
, 可以看到右侧出现仿真面板
- 选择
信件
, 从选择计算机0
发出, 选择计算机1
接收, 可以在右侧的仿真面板
中看到生成的一条事件
-
点击
事件
, 看到以下信息- 输入: 其它设备输入的信息
- 输出: 准备向其它设备输出的信息
- 输入信息为空, 说明没有信息输入
- 输出信息包含
- 网络层: 计算机0的IP地址、计算机1的IP地址
- 链路成: 计算机0的MAC地址(网卡地址)、计算机1的MAC地址(网卡地址)
-
点击播放按钮, 可以看到又生成两条
事件
- 点开第二条事件,
计算机0
发送到计算机1
- 输入:
- 计算机0的IP地址, 计算机1的IP地址
- 计算机0的MAC地址, 计算机1的MAC地址
- 输出
- 计算机1的IP地址, 计算机0的IP地址
- 计算机1的MAC地址, 计算机0的MAC地址
- 输入:
- 点开第二条事件,
计算机0
发送到计算机1
- 输入:
- 计算机1的IP地址, 计算机0的IP地址
- 计算机1的MAC地址, 计算机0的MAC地址
- 输入:
- 上面三条事件, 就是
计算机0
和计算机1
之间一次完整的通信
5、获取MAC地址
- IP地址是在发送通信的时候, 指定的具体地址, 那么
计算机0
是如何获取到计算机1
的MAC地址
- 实际上, 计算机之间通信, 是通过
ARP
广播协议获取目标计算机的MAC地址
的 - 在一开始的
ping 192.168.1.10
时,计算机0
就通过了ARP
协议获取到了计算机1
的MAC地址, 所以在后面的仿真
通信中才看不到ARP
协议的过程 - 删除掉这次
计算机0
和计算机1
之间的邮件链接
- 修改
计算机0
的IP地址
为192.168.2.10
- 修改
计算机1
的IP地址
为192.168.2.11
- 使用
邮件
从计算机0
发到计算机1
, 此时可以看到有两条事件生成
- 点开第一条
事件
, 看到输入信息为空, 输出信息只有源IP地址
和目的IP地址
, 并没有MAC地址
信息, 说明此时计算机0
还不知道目标计算机
的MAC地址
-
点开第二条
事件
, 看到输入信息为空, 输出信息的网络层为空, 链路层有数据- 链路层包含: 源MAC地址、目的MAC地址
FFFF.FFFF.FFFF
、源IP地址、目的IP地址
- 链路层包含: 源MAC地址、目的MAC地址
-
当MAC地址为
FFFF.FFFF.FFFF
时, 说明此条信息会发送给同一网段
内的所有计算机 -
此时同一网段内, 只有
计算机1
与计算机0
相连, 所以只会发给计算机1
-
点击
播放
按钮, 会生成新的事件
- 点开第三条
事件
, 可以看到输入和输出信息- 输入信息的MAC地址是
FFFF.FFFF.FFFF
, 于是计算机1
对比输入中目的IP地址
与自己的源IP地址
是否相同 - 对比后两个地址相同, 说明
计算机0
准备向计算机1
发送信息, 于是给输入信息中的源IP地址(计算机0的IP地址)
发送信息 - 输出信息包含了
计算机1
的MAC地址
- 输入信息的MAC地址是
- 点开第四条
事件
, 可以看到输入信息, 拿到了目的IP地址
对应的MAC地址
- 点开第五条
事件
, 可以看到计算机0
向具体的MAC地址
发送信息
- 再次点击播放按钮, 可以看到新生成两条
事件
, 这些就是计算机0
和计算机1
之间的具体通信了
- 上面整个流程就是两台计算机之间的通信过程
- 总结:
计算机0
想要向计算机1
发送信息, 但是不知道计算机1
的MAC地址
- 于是
计算机1
使用ARP
广播协议对同一网段内的所有计算机发送消息, 携带了源IP地址
、目的IP地址
、源MAC地址
、目的MAC地址FFFF.FFFF.FFFF
- 同一网段内的所有计算机收到
计算机0
发送的消息, 检查发现目的MAC地址
是FFFF.FFFF.FFFF
- 此时所有计算机会对比
计算机0
发出信息中的目的IP地址
, 与自己的源IP地址
是否一致, 不一致将不会继续处理 计算机1
发现计算机0
发送的目的IP地址
与自己的源IP地址一致
, 于是给计算机0
发送了自己的MAC地址
计算机0
获取到计算机1
发过来的消息后, 知道了计算机1
的MAC地址
, 就可以进行计算机之间的通信了