HTTP协议和web工作原理
本章学完之后能干什么?
要把 知识点学好,那就需要把它相关的周边知识点了解全面
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
转载地址:http://blog.sina.com.cn/s/blog_4b5bc0110100ftgp.html
HTTP协议和web工作原理的更多相关文章
- http协议和web应用有状态和无状态浅析
http协议和web应用有状态和无状态浅析 (2013-10-14 10:38:06) 转载▼ 标签: it 我们通常说的web应用程序的无状态性的含义是什么呢? 直观的说,“每次的请求都是独立的 ...
- http协议和web本质
转载:http://www.cnblogs.com/dinglang/archive/2012/02/11/2346430.html http协议和web本质 当你在浏览器地址栏敲入“http://w ...
- C/S B/S 及WEB工作原理
一.C/S B/S区别 (http://wenku.baidu.com/link?url=e8bxaqz_lYCXws6TlDRJEq1qsLumNTBhr3Es6eA1ZuhHhq9FZGbVgo ...
- web基础-web工作原理,http协议,浏览器缓存
1,web工作原理 2,http协议 3,浏览器缓存 4,cookie和session -------------------------------------------------------- ...
- 第一章 Java Web工作原理
一:在本章我们将学到如下的内容 >HTTP协议原理 >服务器端Web编程原理 >Servlet与Web容器 >Java Web应用程序的组成 >Tomcat介绍 一:1. ...
- HTTP协议和WEB应用
一.应用层协议原理 1.套接字(Socket):主机地址+端口地址.(通常为32位IP地址和16位端口号组成,总长度为48位) 2.进程通过套接字来接收和发送报文.因特网运输层将所提供的服务整合成两种 ...
- HTTP协议和WEB框架
一.HTTP协议 <<HTTP权威指南>>读书笔记:https://www.cnblogs.com/qcssmd/p/5508150.html 一.HTTP简介 HTTP协议是 ...
- http协议和web本质(转)
当你在浏览器地址栏敲入“http://www.cnblogs.com/”,然后猛按回车,呈现在你面前的,将是博客园的首页了(这真是废话,你会认为这是理所当然的).作为一个开发者,尤其是web开发人员, ...
- Http协议和web本职【转自丁码农】
当你在浏览器地址栏敲入“http://www.cnblogs.com/”,然后猛按回车,呈现在你面前的,将是博客园的首页了(这真是废话,你会认为这是理所当然的).作为一个开发者,尤其是web开发人员, ...
随机推荐
- Tomcat日志catalina.out文件过大的处理方法
原文地址:http://lcbk.net/tomcat/1396.html 我们知道一般企业使用Tomcat 作为Web端时,它产生的日志会越来越大,特别是catalina.out这个日志文件,然而有 ...
- QT5.6所开放的7个新模块(图表,虚拟键盘,性能分析,静态分析,测试正好,2D渲染)
The modules newly available to open source users are: Qt Charts Qt Data Visualization Qt Virtual Key ...
- ASP.NET MVC 5 学习教程:生成的代码详解
原文 ASP.NET MVC 5 学习教程:生成的代码详解 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 ...
- Python 2.7 学习笔记 基本知识
python是一种解释型的.面向对象的.带有动态语义的高级程序设计语言.本文介绍下python的基本知识. 一.安装 各种操作系统有自己的安装方法,linux系统一般都自带了python的环境.这里不 ...
- 使用MongoDB的开源项目(转)
根据谷歌的搜索结果筛选出来的. 统计应用 counlty https://count.ly/ mongopress 开源CMS系统 http://www.mongopress.org/ Rubedo ...
- PHP - session编码和解码
<?php //session编码 session_start(); $_SESSION['name'] = 'Jack'; $_SESSION['sex'] = 'men'; $envar = ...
- JVM-- 先行发生原则
本文中需要的基础知识:指令重排 线程中两个非常重要的问题就是:原子性与可见性. 而下面的先行发生原则就是用来解决可见性问题的. 先行发生原则--是判断是否存在数据竞争.线程是否安全的主要依据. 先行发 ...
- Qt序列化格式分析(qint,QString)(非常简单好用)
最近项目需要进行QT开发环境下对传输对象进行序列化与反序列化处理,对基本类型的处理在使用QT默认的序列化方式还是完全手工序列化这两种方式之间有些犹疑不定,边想了解下QT默认序列化基本类型的格式,项目中 ...
- mpi中利用自定义归约操作实现merge
在归并排序中,很重要的一步是将两个排序数组合并成一个数组,这个操作叫merge.merge操作可以用来解决某些Top K问题. 问题描述 在哼唱搜索中,用户通过哼唱一个音乐片段去搜索与其相似的音乐.后 ...
- Java8 Lamdba表达式 001
在一个已经存在的编程语言里非常少有对现有的生态系统起重大影响的新特性.Lambda表达式对于Java语言就是这样的意义的存在.简单来说,Lambda表达式提供了便利的方式去创建一个匿名的功能.提供了一 ...