概要

本文以一个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--subprocess系统命令模块-深入

    当我们运行python的时候,我们都是在创建并运行一个进程.正如我们在Linux进程基础中介绍的那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序.在Python中,我们通过标准 ...

  2. css中的margin(外边框)、border(边框)、padding(填充)的区别

    Margin(外边距) - 清除边框外的区域,外边距是透明的. Border(边框) - 围绕在内边距和内容外的边框. Padding(内边距) - 清除内容周围的区域,内边距是透明的. Conten ...

  3. top-adx-apps

    中国地区top adx和流量平台 12719 unity ios 12001 mopub ios 6599 unity android 5277 mobfox ios 3855 mopub andro ...

  4. zabbix使用自定义key进行监控

    我的zabbix-server是安装在另一台虚拟机上的,用来监控下图中的这台虚拟机 先修改zabbix的客户端配置文件,增加UserParameter那行,这里我只是用来测试,所以就随便起了一个名为p ...

  5. pghoard 面向云存储的pg 备份&&恢复工具

    pghoard 面向云存储的pg 备份&&恢复工具 包含的特性 自动定期basebackup 自动事务日志(WAL / Xlog软件)备份(使用pg_receivexlog, arch ...

  6. java数据类型之间的转换

    java的基本数据类型:short, int, long, float, double, char,string 对应的包装类型:Short, Integer, Long, Float, Double ...

  7. day7大纲

    01 昨日内容回顾 数据类型补充: str <---> list split join list <---> set set(list) list(set()) list &l ...

  8. redis 的 docker 镜像使用

    redis 镜像使用: 创建容器(暴露端口:6379,使用 Redis 可视化界面工具(如:Fastoredis)连接 redis 时连接该端口): docker run -it -p 6379:63 ...

  9. bzoj 2351 [BeiJing2011]Matrix——二维哈希

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2351 就是先把每行单独从左到右扫着乘一个 b1 哈希起来,然后再按列从上往下乘一个 b2 哈 ...

  10. 【转】类似py2exe软件真的能保护python源码吗

    类似py2exe软件真的能保护python源码吗 背景 最近写了个工具用于对项目中C/C++文件的字符串常量进行自动化加密处理,用python写的,工具效果不错,所以打算在公司内部推广.为了防止代码泄 ...