自己写的小白教程《Web开发的基础原理》(1)
2017-02-13 13:08
309 查看
本文主要面向零基础的同学,旨在解释Web开发的基本概念,作为入门读物。因本人也只是入门水准,能写点小页面的业余码农,因此表述不甚专业,错误难免,请读者见谅。
谈起网页浏览、web开发,首先就会遇到一连串的名词HTTP、HTML、CSS、Javascript等等,这些名词是什么意思,起到什么作用,常常让初学者困惑。在此,让我们通过一些简单的场景,来看看当用户浏览网页时,会发生什么。随着逐渐深入这些场景,我们会依次了解各种概念与作用。
Step1. 用户打开浏览器,输入一个网址http://www.gov.cn/guowuyuan/index.htm
Step2. 浏览器发出一个HTTP请求。
Step3. 网站的web服务器软件,在80端口监听到用户发来的请求。然后通过计算调度,准备好用户所要的web文档
Step4. 将index.htm网页文件装载在http响应中发回给用户。
Step5. 用户浏览器收到index.htm文件,按照文件中的内容,将网页呈现在显示器上。
我们来详解这个流程:
http://www.gov.cn/guowuyuan/index.htm是一个URL,指向互联网上的一个网页文件`index.htm`,HTML文件是什么,稍后再说。
这个请求是基于HTTP协议的。HTTP协议全称是超文本传输协议(HyperText Transfer Protocol),超文本本质还是文本,参照通信的概念,HTTP是一种基于文本的“信令协议”,是客户端和服务器端之间发起请求(Request)和应答(Response)的消息载体。
发起请求是这样的:
Web服务器软件是网站服务器上安装的一种软件,专门为web客户端提供web文档的程序。目前主流的是Apache(TomCat)、IIS、Nginx。
服务器发送给用户的网页文件,是装载在HTTP响应消息中的。响应消息的头部一般是这样的:
响应消息的本体就是
HTML的语法后面会展开介绍,这里只需要了解基本概念即可。
浏览器收到响应以后,会根据html文档的描述,重新绘制网页。注意,它并不是简单地将文档中的文字直接在浏览器里显示出来,而是要按照文档中对内容的描述,重新绘制网页。例如本例中,浏览器识别到“标题文字:这是XX网站”是在
到此小结一下,记住两点:浏览器与服务器之间的请求和响应基于HTTP协议,消息全是文本格式的;服务器发给浏览器的网页是超文本(HTML),你看到的样式是浏览器绘制的。
本章节介绍了最简单的静态网页的浏览过程:
浏览器从获取的html文档中,提取出上述图片链接,重新向网站服务器发起一个http请求,请求的url地址就是图片的地址。
在这个请求里,有很多值得玩味的http头域,在此不详细解释了。而网站返回的响应是
其中
谈起网页浏览、web开发,首先就会遇到一连串的名词HTTP、HTML、CSS、Javascript等等,这些名词是什么意思,起到什么作用,常常让初学者困惑。在此,让我们通过一些简单的场景,来看看当用户浏览网页时,会发生什么。随着逐渐深入这些场景,我们会依次了解各种概念与作用。
1. 从最简单的网页浏览说起
首先,用户在浏览器地址栏输入一个网页地址。这个地址指向了该网页文件在互联网中的位置。Step1. 用户打开浏览器,输入一个网址http://www.gov.cn/guowuyuan/index.htm
Step2. 浏览器发出一个HTTP请求。
Step3. 网站的web服务器软件,在80端口监听到用户发来的请求。然后通过计算调度,准备好用户所要的web文档
Step4. 将index.htm网页文件装载在http响应中发回给用户。
Step5. 用户浏览器收到index.htm文件,按照文件中的内容,将网页呈现在显示器上。
我们来详解这个流程:
http://www.gov.cn/guowuyuan/index.htm是一个URL,指向互联网上的一个网页文件`index.htm`,HTML文件是什么,稍后再说。
这个请求是基于HTTP协议的。HTTP协议全称是超文本传输协议(HyperText Transfer Protocol),超文本本质还是文本,参照通信的概念,HTTP是一种基于文本的“信令协议”,是客户端和服务器端之间发起请求(Request)和应答(Response)的消息载体。
发起请求是这样的:
GET /guowuyuan/index.htm HTTP/1.1 Host: www.gov.cn Connection: keep-alive Cache-Control: max-age=0 User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Referer: http://www.gov.cn/index.html Accept-Encoding: gzip,deflate,sdch Accept-Language: zh-CN,zh;q=0.8 Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Web服务器软件是网站服务器上安装的一种软件,专门为web客户端提供web文档的程序。目前主流的是Apache(TomCat)、IIS、Nginx。
服务器发送给用户的网页文件,是装载在HTTP响应消息中的。响应消息的头部一般是这样的:
HTTP/1.1 200 OK Date: Wed, 27 Jan 2016 12:21:01 GMT Server: Apache Accept-Ranges: bytes X-Powered-By: ModLayout/5.1 Content-Type: text/html
响应消息的本体就是
index.htm这个文档,这个文档是纯文本的,采用HTML语法。HTML(HTM)是一种“超文本标记语言”,可以理解为它用文本的方式,按照一定的语法,描述了网页元素的尺寸、位置、样式、文字内容。它长这样:
<html> <head> <title>网页标题</title> </head> <body> <h1>标题文字:这是XX网站</h1> <p>这是<b>粗体</b>正文</p> <ul> <li>这是列表1</li> <li>这是列表2</li> <li>这是列表3</li> </ul> <table border=1 cellpadding=0 cellspacing=0> <tr> <th>标题1</th> <th>标题2</th> </tr> <tr> <td>内容1</td> <td>内容2</td> </tr> <tr> <td>内容3</td> <td>内容4</td> </tr> </table> </body> </html>
HTML的语法后面会展开介绍,这里只需要了解基本概念即可。
浏览器收到响应以后,会根据html文档的描述,重新绘制网页。注意,它并不是简单地将文档中的文字直接在浏览器里显示出来,而是要按照文档中对内容的描述,重新绘制网页。例如本例中,浏览器识别到“标题文字:这是XX网站”是在
<h1>标签中的,就会把他渲染成字体很大的标题。
<ul>和
<li>被渲染为带项目符号的列表,还有描述表格的语法等等。上例的效果是这样的:
到此小结一下,记住两点:浏览器与服务器之间的请求和响应基于HTTP协议,消息全是文本格式的;服务器发给浏览器的网页是超文本(HTML),你看到的样式是浏览器绘制的。
本章节介绍了最简单的静态网页的浏览过程:
2. 多媒体资源
上一节中请求的地址,是一个纯文本的htm文件,浏览器可以自行渲染文本的样式。但网页中的图片怎么办?图片不能夹在html文本中传送,浏览器也不可能自己画一张图片。所以图片等富媒体资源是在html文档中表明地址链接,通过http请求另外传送的:<div class="fwy-img"><img src="/govweb/xhtml/images/gwy/gwy_lkq.jpg"></div>
浏览器从获取的html文档中,提取出上述图片链接,重新向网站服务器发起一个http请求,请求的url地址就是图片的地址。
GET /govweb/xhtml/images/gwy/gwy_lkq.jpg HTTP/1.1 Host: www.gov.cn Connection: keep-alive Cache-Control: max-age=0 If-Modified-Since: Wed, 18 Nov 2015 19:52:46 GMT User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11 Accept: */* Referer: http://www.gov.cn/guowuyuan/index.htm Accept-Encoding: gzip,deflate,sdch Accept-Language: zh-CN,zh;q=0.8 Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
在这个请求里,有很多值得玩味的http头域,在此不详细解释了。而网站返回的响应是
HTTP/1.1 200 OK Last-Modified: Wed, 18 Nov 2015 19:52:45 GMT Accept-Ranges: bytes Content-Length: 1281 Content-Type: image/jpeg Date: Wed, 27 Jan 2016 14:55:01 GMT Server: Apache ETag: "228429d-501-524d5fc6a1d40"
其中
content-type头域指明了消息体是jpeg图片文件。如果一个网页内包含很多图片,就会发起很多http请求。这一点在分析LTE信令的时候已经了解到。
相关文章推荐
- FLASH与ASP通信原理入门级教程(一) LV类基础讲解
- JSP WEB开发入门基础到高手进阶教程001
- [李景山php]每天laravel[018]-laravel 中级任务--小白教程----实际操作-创建基础任务 to-do-list 案例 ---准备关系模型
- [李景山php]每天laravel[023]-laravel 中级任务--小白教程----实际操作-创建基础任务 to-do-list 案例 ---登录,该死的登录
- [李景山php]每天laravel[022]-laravel 中级任务--小白教程----实际操作-创建基础任务 to-do-list 案例 ---Task 任务处理控制器--显示主页
- 自己写溢出的基础,溢出原理(1)
- 【基础教程】法线贴图原理与制作 粗解
- Echarts入门(零基础小白教程)
- LPC基础教程-Lpc程序和编程环境 mudos 加载原理
- [李景山php]每天laravel[023]-laravel 中级任务--小白教程----实际操作-创建基础任务 to-do-list 案例 ---在主页上添加数据
- 角色换装实现原理及步骤 【基础教程】
- 自己的C++复习进阶之路基础学习教程
- Python基础教程(自己整理的)
- [李景山php]每天laravel[017]-laravel 中级任务--小白教程----实际操作-创建基础任务 to-do-list 案例 ---准备数据库
- Windows下一步步搭建自己的独立博客――使用 GitHub Pages + Hexo 基础教程(一)
- 一篇github基础教程,大手勿喷。看别人的。自己刚照着这个学会
- android开发教程(十三)——JAVA基础之理解JNI原理(java调用C语言接口)
- 【教程】安卓系统自己定制+修改 人人都是ROM作者(小白教程)
- [李景山php]每天laravel[020]-laravel 中级任务--小白教程----实际操作-创建基础任务 to-do-list 案例 ---视图
- [李景山php]每天laravel[023]-laravel 中级任务--小白教程----实际操作-创建基础任务 to-do-list 案例 ---删除数据