在之前的文章Servlet执行原理浅谈中对Servlet的整个原理做了大概介绍。我们知道客户端发送的请求是交给Servlet中的service方法进行处理。而在实际使用时,并没有直接重写service方法,而是继承了HttpServlet,重写了doGetdoPost等方法,而这期间又发生了什么呢。

首先,我们观察Servlet这个接口:

1
2
3
4
5
6
7
8
9
10
11
public interface Servlet {
void init(ServletConfig var1) throws ServletException;

ServletConfig getServletConfig();

void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

String getServletInfo();

void destroy();
}

Servlet是一个接口,其中包含5个方法,我们大多真正使用的是service方法,其他的几个方法并不常用。因此,就出现了以下两个实现类:

image-20201129170130519

在介绍Servlet之前,简单对web方面的知识做个小结。

一、Web知识小结

1.1 软件架构

这里的软件架构,指服务器软件工作的两种方式:

  1. C/S:客户端/服务器端
  2. B/S:浏览器/服务器端

1.2 网络通信三要素

  1. IP:电子设备(计算机)在网络中的唯一标识。作用:用于定位到具体的电子设备,这里指具体的一台计算机。
  2. port(端口):应用程序在计算机中的唯一标识,其范围在0~65536。作用:用于定位计算机中的具体应用程序(每个应用程序都在监听着具体的端口号)。
  3. 传输协议:规定了数据传输的规则(该如何发送数据,又该如何接受数据,最后该对接受到的数据如何解析)。
    1. 基础协议
      • tcp:安全协议,三次握手,速度稍慢。
      • udp:不安全协议,速度较快。