回顾tomcat
Tomcat是Apache软件基金会(Apache Software Foundation)的一个*项目,由Apache, Sun和其他一些公司及个人共同开发,是目前比较流行的Web服务器之一.作为一个开源的,小型的轻量级应用服务器,Tomcat深受广大程序员的喜爱,具有占用系统资源少,扩展性好,支持负载均衡与邮件服务等开发应用系统常用的功能; 而且它还在不断地改进和完善中, 任何一个感兴趣的程序员都可以更改它或在其中加入新的功能.
虽然Tomcat易于使用,便于部署,但Tomcat本身是一个非常复杂的系统,包含了很多功能模块.这些功能模块密切合作,各司其职,构成了Tomcat的核心结构. 作者从最基本的HTTP请求开始,直至使用JMX技术管理Tomcat中的应用程序,逐步深入,逐一剖析Tomcat的基本功能模块,并配以....略
--节选<深入剖析Tomcat>
Java Web 服务器的运行
Web服务器也称为超文本传输协议 (HyperText Transfer Protocol, HTTP)服务器, 因为它使用HTTP与其客户端(通常是Web浏览器)进行通信,
基于Java的Web服务器会使用两个重要的类: java.net.Socket 类和 java.net.ServerSocket 类, 并通过发送 HTTP 消息进行通信.
HTTP
HTTP允许Web服务器和浏览器通过Internet发送并接收数据,是一种基于"请求-响应"的协议.
客户端请求一个文件,服务器对该请求进行响应. HTTP使用可靠的TCP连接, TCP协议默认使用TCP 80端口.
HTTP协议的第一个版本是HTTP/0.9, 后来被HTTP/1.0取代,随后 HTTP/1.0 又被当前版本 HTTP/1.1取代.
HTTP/1.1定义于 RFC (Request for Comment,请求注解) 2616中... 可以从
http://www.w3.org/Protocols/HTTP/1.1/rfc2616.pdf 下载
注意: 本节简单介绍HTTP1.1 , 目的是帮助你了解Web服务器应用程序发送的消息
在HTTP中,总是由客户端通过建立连接并发送HTTP请求来初始化一个事务的. Web服务器端
并不负责联系客户端或建立一个到客户端的回调连接. 客户端或服务器端可提前关闭连接.
例如,当使用Web浏览器浏览网页时, 可以单击浏览器上的Stop按钮来停止下载文件,这样就
有效地关闭了一个Web服务器的HTTP连接.
HTTP请求包含以下三部分:
- 请求方法 --- 统一资源标识符(Uniform Resource Identifier, URI) -- 协议/版本
- 请求头
- 实体
HTTP请求的示例如下所示:
HTTP响应
与HTTP请求类似, HTTP响应也包括三部分:
- 协议 -- 状态吗 -- 描述
- 响应头
- 响应实体段
下面是一个HTTP响应的示例:
HTTP响应头的第一行与HTTP请求头的第一行类似. 第一行指明了使用的协议是HTTP/1.1
请求发送成功(状态吗200表示请求成功), 一切都正常执行.
Socket类
套接字是网络连接的端点, 套接字使应用程序可以从网络中读取数据,可以向网络中写入数据.
不同计算机上的两个应用程序可以通过连接发送或接收字节流. 以此达到相互通信的目的.
为了从一个应用程序向另一个应用程序发送消息, 需要知道另一个应用程序中套接字的IP地址和端口号.
在Java中, 套接字由 java.net.Socket 表示.
要创建一个套接字, 可以使用 Socket 类中众多构造函数中的一个. 其中一个构造函数接收两个参数: 主机名和端口号
public Socket (String host, int port)
其中参数host是远程主机的名称或IP地址,参数port是连接远程应用程序的端口号.
例如,想要通过80端口连接baidu.com, 可以使用下面的语句创建 Socket 对象:
new Socket ("baidu.com" , 80)
一旦成功地创建了Socket类的实例, 就可以使用该实例发送或接收字节流. 要发送字节流,
需要调用Socket类的getOutputStream() 方法获取一个 java.io.OutputStream对象.
要发送文本到远程应用程序, 通常需要使用返回的 OutputStream 对象创建一个 java.io.PrintWriter 对象.
若想要从连接的另一端接收字节流, 需要调用 Socket 类的 getInputStream() 方法,
该法会返回一个 java.io.InputStream 对象.
...略
https://blog.csdn.net/oqqHun123/article/details/96896978 <博客中制定的路径为linux根路径