网络协议学习笔记 · 02

本文详细介绍了如何使用Idea搭建Java Web项目,包括新建项目、添加Web模块、配置Tomcat服务器、编写Servlet以及进行测试。通过一个简单的登录页面和Servlet示例展示了Servlet处理HTTP请求的基本流程。同时,文章还回顾了计算机之间通信的基础知识,如网线直连、同轴电缆、集线器、网桥、交换机和路由器的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习笔记系列文章


关于这篇笔记:
首先需要搭建Java服务器开发环境,为之后学习作基础。

使用Idea搭建环境

这里使用的Idea版本为2020版。

一、新建项目

一、选择 New Project,选择空项目,点击下一步。图01

二、给项目起个名,以及设置保存的位置。然后Finish。
图02

三、在弹出的界面中,选择Module(模块),点击“+”,选择 New Module。图03

四、选择Java模块,点击 next。
图04

五、给模块取个名称,然后 Finish。
图05

六、直接OK。
图06

七、先暂且添加一个java类以便测试(暂定为Main;一般情况下类不直接添加在src目录下,要分包管理,不过这里先不管)。
图07

二、添加web模块

八、右键点击项目,点击添加框架(Add Framework Support),勾选Web…(自己看图吧) 最后OK。
图08

九、在web目录里添加了test.html和一张jpg图片以备测试。
图09

三、Tomcat部署

十、如下图操作,可以将显示的Main变为Add Configuration(这一步不知道有什么作用,貌似只是为了好看 )。
图10

十一、点击Add Configuration,点击“+”,选择Local。
图11

十二、点击选择Tomcat根目录。图12

十三、点击Deployment,点击“+”,点击Artifact。
图13

十四、取一个简单的名字后,OK。
图14

十五、点击run或者debug,出现如下界面则成功。也可以通过网址来访问测试的网页。
图15

四、Servlet

十六、添加依赖,以使用servlet。
图16

IDE的环境搭建完成

五、测试

十七、写一个简单的登录页面和一个servlet测试一下。(登录用户名固定为123,密码456)

登录页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录test</title>
</head>
<body>

<form action="/hello/login" method="post">
    <div>用户名<input name="username"></div>
    <div>密码<input name="password"></div>
    <button type="submit">登录</button>
</form>

<a href="test.html">这是一个测试页面</a>

<img src="../img/doge.jpg">

</body>
</html>

servlet:

package com.g.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 处理登录请求
 * 1.继承HttpServlet,才能够处理HTTP请求
 * 2.使用@WebServlet,说明它要处理的请求路径
 */
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        System.out.println("Do Get------");
        doPost(request, response);
    }

    @Override
    /**
     * @param HttpServletRequest req 请求:用来获取客户端发送的数据
     * @param HttpServletResponse resp 响应:用来给客户端返回数据
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        System.out.println("Do Post------");

        // 1.获取客户端发送的数据(请求参数)
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        // 2.判断
        response.setHeader("Content-Type", "text/html; charset=UTF-8");
        if ("123".equals(username) && "456".equals(password)) {
            // 登录成功
             response.getWriter().write("<h1 style=\"color: red\">登录成功!!!</h1>");
        } else {
            // 登录失败
            response.getWriter().write("<h1 style=\"color: blue\">登录失败!!!</h1>");
        }
    }

}

测试结果:
图17

java环境的搭建今天就到这里。同学们散了吧

计算机之间的的通信基础

先不考虑无线连接的问题

  • 需要得知对方的IP地址。
  • 最终是根据MAC地址(网卡地址),输送数据到网卡,被网卡接收。
  1. 如果网卡发现数据的目标MAC地址是自己,就会将数据传递给上一层进行处理。
  2. 如果网卡发现数据的目标MAC地址不是自己,就会将数据丢弃,不会传递给上一层进行处理

图18

计算机之间的连接方式 - 网线直连

  • 需要用交叉线(不是直通线)
  • 同一网段

图19

  • ping走的是ICMP协议
  • ARP协议:已知 IP地址,不知道MAC地址时,通过广播获取 MAC地址。

右边出现的3个ARP包,实际上是一次完整的发送请求、接收响应的过程。ICMP包同理。

计算机之间的连接方式 - 同轴电缆(Coaxial)

图20
连接同一网段。

计算机之间的连接方式 - 集线器(Hub)

图21
连接同一网段。
集线器相比同轴电缆唯一的优点:连着集线器的某一个设备中间线路出问题,不会影响到连着集线器的其他设备的通信。

计算机之间的连接方式 - 网桥(Bridge)

还是,连接同一网段。
图22

计算机之间的连接方式 - 交换机(Switch)

依旧是连接同一网段。
图23
若全球所有设备都用交换机连接
1、他们必然处于同一网段,因此 IP地址可能会不够用。
2、第一次发送数据包仍然需要ARP广播,耗费大量时间。
3、形成广播风暴,只要有一个设备发送ARP广播,全球设备都能收到。

计算机之间的连接方式 - 路由器(Router)

路由器含有网关(Gateway),网关也有IP和MAC地址。

图24

主机在发数据之前,首先会判断目标主机的IP地址跟它是否在同一个网段:

  1. 在同一个网段:ARP广播、通过交换机/集线器传递数据
  2. 不在同一个网段:通过路由器转发数据
    图25

上一篇:01. 基本概念
下一篇:03. MAC地址 · IP地址 · 子网掩码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值