How Tomcat Works读书笔记1

一个Servlet容器要为一个Servlet请求提供服务,基本上有三件事要做:

一个HTTP请求包含三个组成部分

下面是一个HTTP请求的例子:

: : : : gzip, deflatelastName=Franks&firstName=Michael

每个HTTP请求可以使用HTTP标准里提到的多种方法中的一种。HTTP 1.1 支持7种类型的请求:GET, POST,HEAD, OPTIONS, PUT, DELETE 和 TRACE。GET 和 POST 在互联网应用里边最普遍使用的。 URI 完全指明了一个互联网资源。URI 通常是相对服务器的根目录解释的。因此,始终一斜线/开头。统一资源定位器(URL)其实是一种 URI(查看 )来的。 请求的头部包含了关于客户端环境和请求的主体内容的有用信息。例如它可能包括浏览器设置的语言,,主体内容的长度等等。每个头部通过一个回车换行符(CRLF)来分隔的。 对于 HTTP 请求格式来说,头部和主体内容之间有一个回车换行符(CRLF)是相当重要的(加上前一个头部的CRLF,其实是2个CRLF)。 CRLF告诉HTTP服务器,主体内容是在什么地方开始的。在一些互联网编程书籍中, CRLF 还被认为是 HTTP 请求的第四部分。 Web服务器也正是根据HTTP请求的格式才能将其解析出我们想要的数据。

一个 HTTP 响应也包括三个组成部分:

下面是一个 HTTP 响应的例子:

: : >><body>Welcome to Brainy Software</body></html>

所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。

状态代码的第一个数字代表当前响应的类型:

虽然RFC 2616中已经推荐了描述状态的短语,例如”200 OK”,”404 Not Found”,但是WEB开发者仍然能够自行决定采用何种短语,用以显示本地化的状态描述或者自定义信息。

响应头部和请求头部类似,也包括很多有用的信息。响应的主体内容是响应本身的内容。头部和主体内容通过 CRLF 分隔开来。

Socket类和ServerSocket类

这两个类就Java网络编程的基础。

套接字是网络连接的一个端点,它使得一个应用可以从网络中读取和写入数据。放在两台不同计算机上的两个应用可以通过连接发送和接受字节流。为了从你的应用发送一条信息到另一个应用,你需要知道另 一个应用的IP地址和套接字端口。在Java中,套接字指的是java.net.Socket类。你可以通过和Socket关联的InputStream和OutputStream来接收和传送数据。若想发送一个HTTP请求,那么只需要遵循上面提到的HTTP协议就可以了。

ServerSocket用来建立一个服务器端,可以监听某一个端口,等待客户端的连接请求。一旦服务器套接字获得一个连接请求,它会创建一个Socket实例来与客户端通信。通常服务器套接字将会监听本地机器。服务器套接字正在监听的IP地址被称为是绑定地址。服务器套接字的另一个重要属性是backlog,当服务器的连接请求队列长度达到backlog后,服务器套接字将拒绝再进入的请求。

如何自己来实现一个简单的Web服务器 我们可以根据本文最开头说的那几个要点来实现:

理想的路总是为有信心的人预备着

How Tomcat Works读书笔记1

相关文章:

你感兴趣的文章:

标签云: