HTTP协议和web工作原理

http://blog.csdn.net/kjfcpua/archive/2009/12/04/4932597.aspx

本章学完之后能干什么?
要把 知识点学好,那就需要把它相关的周边知识点了解全面
HTTP协议 是web学习的核心!!!
学东东切忌只学配置,不学原理:只学会框架有什么用,要会自己写框架!!
web学习直接关系到J2EE的学习
一、HTTP 超文本传输协议 人类之所发展得如此快,就是因为有自己的语言 
       1、所谓超文本:即纯文本语言,不依赖于任何特定语言,任何语言都可以操作它(如java、c++)
       2、传入:HTTP的应用价值在于传输
       3、HTTP是无状态协议
        基于请求/响应模型
        服务器和客户端的交互仅限于请求/响应过程,结束之后便断开,在下一次请求服务器会认为新的客户端
二、要真正理解web工作原理,就必须彻底了解http协议 
三、HTTP请求信息(浏览器信息) 
       1、请求行:GET/POST(流的组织(请求)方式) URL(地址+目录) 版本号
       2、请求头:Host:客户端IP和端口
         User-Agent:浏览器信息
         Accept:客户端能接收的数据类型
         Accept-encoding:是否支持压缩的流
         Accept-charset:客户端字符编码集
       3、空行:分割请求头和消息体
       4、消息体:请求的参数
四、HTTP响应信息(服务器信息) 
       1、状态行:HTTP版本  服务器状态(比如:404找不到...) 描述信息
       2、响应头
        content-text:服务器发送信息的类型
        date:发送时间
        server:服务器类型
       3、消息体:服务器发送给客户端的页面内容
五、模型 
       客户端-----通过socket建立连接-----服务器
       客户端-----请求----->服务器
       客户端<-----响应-----服务器
       客户端-----断开-----服务器
       下一次连接.......
六、传统服务器 
       缺点:无法生成动态页面
        于是加入一个辅助应用:通过客户端提交的参数来选择服务类型
七、辅助应用 
       1、在获取请求之后先执行一段代码,再返回页面
       2、根据客户端请求参数来调用辅助应用
       3、类似word文档,需要注册(注册表)
八、对于服务器的缺点的解决方案 
       1、最早的解决方案:CGI通用网关接口(一种与外部程序通讯的标准)
         原理:web服务器调用外部程序,再将返回的结果返回客户端
         CGI的缺点:每次客户端请求都要在服务器上开启一个进程,这样会大大消耗服务器资源
          更好的解决方案是:开启服务器进程一次,就处理所有请求
       2、java的解决方案(解决CGI的缺点:其实CGI是现在web服务器的鼻祖):servlet+web容器
          servlet是一个与平台无关的java接口
          理解servlet,是掌握javaweb编程的核心
          sevlet受控于另一个java应用程序,它就是web容器
          servlet+web容器:为每个请求开启一个线程,线程占用进程的一部分
          sevlet没有main方法,说明它要被别的类web容器调用
          servlet到web容器需要用xml文件注册,而xml的解析由web容器封装
九、web容器对servlet的支持包括:
       1、通讯支持:解析流,封装请求/响应对象
       2、生命周期管理:我们书写的servlet由容器来调用,也就是sevlet的产生和消亡生命周期
       3、多线程支持:解决线程同步,开启关闭等,由容器厂商来做
       4、JSP支持:翻译页面
       5、处理安全性:处理异常等等,比如:servlet抛出异常,由web容器来处理
       总结:web容器主要是用于,给处于容器中的应用程序组件(servlet、jsp)提供一个环境,
       使sevlet和jsp直接和容器中的环境变量交互。
       这样我们就可以把注意力放在,用servlet实现业务逻辑上,不必为
       系统底层服(如线程管理,安全性和网络通信等)务编写代码。
十、web容器的实现 
       根据sevlet的规范来实现web容器
       servlet规范之定义了一个容器必须实现的标准功能。那么不同的容器厂商就有了更多的容器实现选择:
       Tomcat
       Jboss
       WebLogic
       WebSphere
       Orecle9i AS

发表于 @ 2009年12月03日 14:26:00

HTTP协议和web工作原理相关推荐

  1. nginx websocket wss 连接失败 failed_浅谈WebSocket协议、WS协议和WSS协议原理及关系

    现如今,一些游戏,网站,APP,支付行业的网络经常会收到DDOS和CC,因此这个事情也变得不足为奇了.但在防护方案中有多种不同的方案.如,今天有几个同事在针对高防CDN问题讨论的时,谈到WebSock ...

  2. php reactphp wss_浅谈WebSocket协议、WS协议和WSS协议原理及关系

    websocket在实时通信领域运用的比较多,比如社交聊天.弹幕.多玩家游戏.协同编辑.股票基金实时报价.体育实况更新.视频会议/聊天.基于位置的应用.在线教育.智能家居等需要高实时的场景. 具体到w ...

  3. 浅谈WebSocket协议、WS协议和WSS协议原理及关系

    现如今,一些游戏,网站,APP,支付行业的网络经常会收到DDOS和CC,因此这个事情也变得不足为奇了.但在防护方案中有多种不同的方案.如,今天有几个同事在针对高防CDN问题讨论的时,谈到WebSock ...

  4. Linux运维系列总结-Linux系统启动过程、WEB工作原理、DHCP工作原理、DNS解析原理、NFS网络文件系统、FTP文件传输协议、PXE+KICKSTART自动安装系统

    Linux运维系列总结-Linux系统启动过程.WEB工作原理.DHCP工作原理.DNS解析原理.NFS网络文件系统.FTP文件传输协议.PXE+KICKSTART自动安装系统 1.Linux系统的启 ...

  5. 深入理解Kotlin协程suspend工作原理(初学者也能看得懂)

    1. 概述 挂起函数是Kotlin协程最重要的一个特性,所有其他概念都建立在它的基础上.所以我们需要深入了解它的工作原理. 挂起协程意味着在中间停止它.这类似于玩游戏,当我们想暂停游戏时,可以先存档, ...

  6. 客户端/服务器程序_了解客户端/服务器协议和Web应用程序

    客户端/服务器程序 Introduction 介绍 HyperText Transfer Protocol or "HTTP" is the underpinning of int ...

  7. 计算机网络——HTTP协议和Web

    文章目录 一.基本知识 二.非持续连接与持续链接 1.采用持续连接的HTTP 2.采用非持续连接的HTTP 三.HTTP报文格式 1.请求报文 2.应答报文 五.cookie 六.Web缓存 1.基本 ...

  8. Go的web工作原理

    在Go中使用及其简单的代码即可开启一个web服务.如下: //开启web服务 func test(){http.HandleFunc("/", sayHello)err := ht ...

  9. http协言和web本质

    http协议和web本质 作为一个开发者,尤其是web开发人员,我想你有必要去了解这一系列的处理流程,在这期间,浏览器和服务器到底是如何打交道的?服务器又是如何处理的?浏览器又是如何将网页显示给用户的 ...

最新文章

  1. 零基础怎么学习web前端开发
  2. MYSQL数据库性能调优之六:备份
  3. 每日程序C语言18-求分数序列的前20项和
  4. C++ class实现邻接表存储的图(完整代码)
  5. 笔记36 Spring Web Flow——配置
  6. 王道计算机组成原理 物理层整理 超详细版
  7. Virtual Treeview 5 0 0的安装以及入门
  8. 设置searchDisplayController的searchResultsTableView的UITableViewStyle为grouped
  9. 01.00 简单工厂模式
  10. Hibernate不能自动建表解决办法【转载】
  11. 1059 Prime Factors (25 分)质因子 易错题
  12. 【HDU - 4794】Arnold【斐波那契数列循环节】
  13. 计算机软件水平考试中级题目,计算机软考中级考试试题及答案
  14. angular2--使用JsBarcode生成条形码
  15. 文档数据库(document database)和键值数据库(key-value database)的区别(NoSQL)
  16. Xcode8写代码闪退
  17. Due to limitations in metric names, topics with a period ('.') or underscore ('_') could collide. To
  18. Linux安装RPM、YUM
  19. iOS各版本发布时间和特点
  20. NLP(词向量、word2vec和word embedding)

热门文章

  1. 一天搞定HTML----标签类型与类型转换05
  2. 【JavaSE_07】Java中类和对象-封装特性
  3. 这样给面试官解释约瑟夫环问题的几种巧妙解法,面试官满意的笑了
  4. SSM整合shiro框架相关配置文件
  5. javascript对象和json字符串之间转换的问题
  6. eclipse怎么创建web项目html,eclipse入门之创建第一个web程序(jsp测试环境)
  7. Redis专题-持久化方式
  8. python telnet 交互_用Python怎么telnet到网络设备
  9. java的方法什么时候加载,java – JVM什么时候加载类?
  10. python空格_python 空格