客户/服务器通信过程
- 服务器端创建serverSocket对象,监听指定ip、指定端口的请求
- 客户端创建socket对象(指定需要请求的服务器端的ip和端口),发出请求
- 服务器端接收到客户端的请求,创建与之相对应的socket对象,链接建立。serverSocket继续监听其他请求
- 客户端通过socket的getOutputStram方法发出请求
- 服务器端通过socket的getInputStream方法接收并分析请求
- 服务器端通过socket的getOutputStream方法发出响应
- 客户端通过socket的getInputStream方法接收并分析请求
- 链接断开
ServerSocket类
- ServerSocket是一个服务器套接字,用以监听服务器的请求,当接收到服务器的请求时就会创建一个与之链接的Socket对象
- 其中一个构造方法
- public ServerSocket(int port, int backLog, InetAddress bindingAddress);
- port参数:用以指定该serverSocket监听的端口
- backLog参数:客户端发出的请求会进入请求队列中,backLog参数规定了请求队列的长度,超过该长度的请求将被拒绝
- accept()方法
- 从请求队列中读取一个请求,并创建与之对应的Socket对象。若要读取该请求的内容需要使用的socket对象的getInputStram()方法。若要对该请求做出响应,需要调用socket对象的getOutputStream()方法。
- 若请求队列中没有请求,则该方法将一直处于等待状态。
Servlet容器
- 当第一次调用某个servlet时,载入该servlet容易,并调用其init()方法,仅一次
- 针对每个request请求,创建一个javax.servlet.ServletRequest实例和javax.servlet.ServletReponse实例
- 当调用该servlet的service()方法时,将javax.servlet.ServletRequest实例和javax.servlet.ServletReponse实例作为参数传入
- 当关闭该servlet时,调用servlet的destroy()方法,并卸载该servlet类