概要

本文以一个Socket程序为例由浅及深地揭示了Html的本质问题,同时介绍了作为web开发者我们在开发网站时需要做的事情

Html的本质以及开发需要的工作

1.服务器-客户端模型

其实,对于所有的Web应用来说,从本质上讲我们运行web应用程序的地方就是一个socket服务端,而用户的浏览器就是一个socket客户端。

而这个“服务器端”的代码可以简写成如下形式:

import socket

def handle_request(conn):
buf = conn.recv(1024)
conn.send(bytes('HTTP/1.1 200 OK\r\n\r\n',encoding='utf-8'))
conn.send(bytes('Hello WHW!',encoding='utf-8')) def main():
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind(('localhost',8001))
sock.listen(5)
while 1:
conn,addr = sock.accept()
handle_request(conn)
conn.close() if __name__ == '__main__':
main()

这里,我们可以看到,这个服务器端首先给浏览器(客户端)发送了一个HTTP响应信息,然后发送了字符串“Hello WHW!”。

我们先运行这个程序然后在浏览器输入:localhost:8001,就可以看到服务器send出的这个“Hello WHW!”字符串:



接着,我们在函数handle_request的第二个conn中加上一个这样的字符串:

conn.send(bytes('< h1 style="background-color:red;">Hello WHW!',encoding='utf-8'))

再看看效果:



也就是说,浏览器自动将服务器发送给它的字符串按照一定的规则呈现出一定的效果!

2.Html本质揭示

2.1 由1中的例子我们可以得到如下的结论:

(1)当浏览器作为客户端与运行web程序的服务器端进行交互的时候,服务器给浏览器返回的是“字符串”;

(2)如果这些“字符串”中有浏览器能够识别的格式,那么浏览器会自动的将这些包含在字符串中的格式解析成用户看着舒服的“效果”;

(3)而要想在浏览器实现我们想要的效果,我们就必须去学习浏览器都有哪些规则;

(4)我们可以将服务器端send的内容先写进一个文件里,然后将这个文件的内容读出来再发给浏览器,而这个文件,大家“约定俗成”的将其命名成后缀为.html的文件,也就是大家熟悉的html文件。

2.2 所以从web开发者的角度讲,我们需要做的事情有:

(1)按照Html的规则编写Html文件——充当模板

(2)从数据库中获取数据,然后替换到Html文件的数据位置——需要学习web框架

Html的本质及在web中的作用的更多相关文章

  1. 1、HTML的本质以及在web中的作用

    一.HTML 1.一套规则,浏览器认识的规则. 2.开发者: 学习Html规则 开发后台程序: -写Html文件(充当模板的作用)****** -数据库获取数据,然后替换到html文件的指定位置(We ...

  2. 泛型在Web中的作用

    当我们写网页的时候,常常会有多个DAO,我们要写每次都要写好几个DAO,这样会有点麻烦. 那么我们想要的效果是什么呢??只写一个抽象DAO,别的DAO只要继承该抽象DAO,就有对应的方法了. 要实现这 ...

  3. web中webAppRootKey作用

    <context-param> <param-name>webAppRootKey</param-name> <param-value>bgn.root ...

  4. HT for Web中3D流动效果的实现与应用

    流动效果在3D领域有着广泛的应用场景,如上图中医学领域可通过3D的流动直观的观察人体血液的流动,燃气领域可用于监控管道内流动的液体或气体的流向.流速和温度等指标. 如今企业数据中心机房普遍面临着设备散 ...

  5. Java或web中解决所有路径问题

    Java开发中使用的路径,分为两种:绝对路径和相对路径.归根结底,Java本质上只能使用绝对路径来寻找资源.所有的相对路径寻找资源的方法,都不过是一些便利方法.不过是API在底层帮助我们构建了绝对路径 ...

  6. web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例

    Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ...

  7. 优化Web中的性能

    优化Web中的性能 简介 web的优化就是一场阻止http请求最终访问到数据库的战争. 优化的方式就是加缓存,在各个节点加缓存. web请求的流程及节点 熟悉流程及节点,才能定位性能的问题.而且优化的 ...

  8. 在C#代码中应用Log4Net(四)在Winform和Web中捕获全局异常

    毕竟人不是神,谁写的程序都会有bug,有了bug不可怕,可怕的是出错了,你却不知道错误在哪里.所以我们需要将应用程序中抛出的所有异常都记录起来,不然出了错,找问题就能要了你的命.下面我们主要讨论的是如 ...

  9. 命名空间“System.Web”中不存在类型或命名空间名称“Optimization”(是否缺少程序集引用?)

    今天,在.net4.5,mvc4下新建了个区域,运行起来就报这个错误: 命名空间"System.Web"中不存在类型或命名空间名称"Optimization"( ...

随机推荐

  1. python基础-函数基本特性和用法

    函数: 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因变量,y是x的函数.自变量x的取值 ...

  2. Linux 命令:文件目录操作与实例

    来源: http://blog.51cto.com/yuanzhitang/2056994 本文介绍基础的文件操作:创建,移动,编辑,删除 文件和文件夹   命令与案例:   mkdir 创建目录 - ...

  3. 使用prometheus+ grafana+nginx-module-vts 模块监控openresty

      nginx-module-vts 是一个很不错的nginx 模块,我们可以用来,方便的分析系统的请求状态 同时支持基于prometheus 的监控, 我参考openresty 的docker镜像已 ...

  4. str_replace中的匹配空白符,必须用双引号

    例: $minUnit = str_replace(array('\r','\n'),"",$content); 执行上面的语句,你会发现,文本没有任何变化,该换行的地方还是换行. ...

  5. SharePoint Online 怎样让用户只能拥有sub site 的权限

    大家使用SharePoint 可能遇到这样的问题.  我怎样能设置manager 为site 的管理人员.  而我收下不同部门的员工只能访问他自己的sub site呢? 这个设置其实很简单. 1. 简 ...

  6. Python __slots__的使用

    每个类在实例化时都会被分配一个dict,通过 实例.__dict__来访问,dict记录了实例的所有属性 如: class Man(object): pass man = Man()print(man ...

  7. redmine和jenkins的ldap登录设置

    工具: softeera LDAP browser 流程: Authentication modes » test Name * Host * Port *  LDAPS Account Passwo ...

  8. petalinux--执行子进程“oe-gnome-terminal-phonehome”失败(没有那个文件或目录)(转)

    简介 使用petalinux配置kernel时候提示 “Failed to execute child process “oe-gnome-terminal-phonehome” (No such f ...

  9. Jmeter性能监测及安装插件(推荐)

    本文部分理论转自Jmeter官网:https://jmeter-plugins.org/wiki/PerfMon/  ,并结合个人实践编写 一.介绍 在负载测试期间,了解加载服务器的运行状况很重要.如 ...

  10. 配置中心Client端

    配置中心Client端 1.在Order工程中的Order-Server模块的pom.xml中增加 <dependency> <groupId>org.springframew ...