设为首页 收藏本站
查看: 887|回复: 0

[经验分享] Tomcat工作原理(第一章)【自己翻译的,应该有很多不当之处,见笑了,呵呵】

[复制链接]

尚未签到

发表于 2017-2-11 08:07:38 | 显示全部楼层 |阅读模式
web服务器,通常也被称为HTTP服务器。web服务器通过HTTP协议与客户端进行通信,而客户端通常是web浏览器。基于Java的web 服务器,用了两个非常重要的类:java.net.Socket和java.net.ServerSocket。通信是通过HTTP消息来完成的。所以本章就以HTTP协议和两个非常重要的类开始。
    HTTP协议,允许web服务器和浏览器在Internet上发送和接收信息。它是一个请求(request)和回应(response)的协议。客户端请求一些文件,服务器回应请求。HTTP使用可靠的TCP链接,TCP的默认端口是80。HTTP的最初版本是0.9、之后是1.0、还有1.1。
    在HTTP 协议中,通常都是通过客户端来建立一个链接并发送一个HTTP请求来启动一个事务的,web服务器是不会和客户端联系或者是创建一个回调链接(服务器是不会主动和客户端联系的)。不管是客户端还是服务器都可以提前终止一次链接。
    一个HTTP request请求由四个部分组成:
    (1)Method-URI-Protocol/Version
    (2)Request headers
    (3)Entity body.
    (4)空白行:在HTTP头和HTTP体之间

     每一个HTTP请求可以使用HTTP标准中定义的多种请求方法中的任意一种。请求的方法有:GET、POST、HEAD、DELETE、TRACE、OPTIONS、PUT。GET和POST是在互联网中最常用的请求方式。

一个HTTP Response的组成类似与一个HTTP Request,Response体是response的html内容本身。
  
     Socket
     一个socket就是一次网络链接的终端,socket允许从网络上读和向网络上写数据。两个位于不同机器上的软件应用程序,可以通过建立链接,然后发送和接收字节流而实现彼此的通信,你需要知道对方应用程序的socket的ip和端口。在java中socket的表现形式是java.net.Socket类。
   你可以用Socket类中的任意一个构造器,去创建一个socket,其中一个构造器。其中一个构造器,接收主机的名字和端口。
   public Socket (java.lang.String host, int port);host是远程应用机器的名字或ip地址,端口是远程应用程序的端口,比如通过80端口去连接yahoo.com,我们可以建立如下Socket对象:
new Socket ("yahoo.com", 80); 一旦建立了socket对象,就可以用它来发送和
接收字节流。
    去发送字节流,首先必须调用Socket 类的getOutputStream方法,去获得一个java.io.OutputStream对象。发送文本信息给远程应用程序,可以从返回的OutputStream对象中建立一个java.io.PrinWriter对象。
    接收另一端返回的字节流,可以调用Socket class的getInputStream方法,返回了一个java.io.InputStream.
   要从web 服务器上获取一个正确的response,需要发送一个符合http协议的请求.
   ServerSocket class
   Socket类代表了一个客户端的socket。ie,就是一个你可以随时创建的socket,不论是什么只要你想连接到远程服务。现在如果你想实现一个服务器,比如HTTP服务器,或者FTP服务器,你需要一个不同的途径。因为你的服务必须永远的健壮,它不知道客户端什么时候会试图链接服务器。为了让你的服务器在任何时候都处于待命状态。ServerSocket是一个 server socket的实现。server socket 的职责是等待客户端的链接请求。一旦服务器端的socket 得到一个链接请求,它就会创建一个Socket实例去处理和客户端的通信。
    要建立一个server socket,我们需要用ServerSocket中提供的四个构造器中的一个。定义server socket监听的ip和端口。
一旦你拥有了一个ServerSocket, 你就可以让他不断地监听从被监测的机器上发来的请求。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-340420-1-1.html 上篇帖子: 在tomcat的web.xml文件中配置error-page (转) 下篇帖子: linux shell启动tomcat报错:/bin/sh^M: bad interpreter: 没有那个文件或目录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表