概要

本文以一个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. Javascript中的 “&” 和 “|” 详解

    转自:https://www.jb51.net/article/104394.htm 一.前言: 在文章开始之前,先出几个题目给大家看看: var num1 = 1 & 0; console. ...

  2. java super的用法

    通过用static来定义方法或成员,从某种程度上可以说它类似于C语言中的全局函数和全局变量. this&super这两个关键字的意义和用法. 在Java中,this通常指当前对象,super则 ...

  3. mod libs 课堂

    name1= input("请输入一个名字:") name2 = input("再输入一个名字:") print("{}刚化妆完\n就被路过的{}拍照 ...

  4. How_Require_Extensions_Work

    Why Doing require extensions correctly is essential, because: Users should be able to install multip ...

  5. Hasura GraphQL 内部表结构

    Hasura 使用pg 数据库存储引擎的元数据信息,在hdb_catalog schema 下面,是在初始化的时候生成的 对于表的管理.权限的信息存储都在这个schema下 hdb_table 这个表 ...

  6. C libraries in Linux

    Copy from a book. There are several C libraries to choose from. The main options are as follows: gli ...

  7. 怎样优化app,看Facebook怎样做

    周四,Facebook Engineering blog 发表了一篇名为<Improving Facebook on Android>博文.博文从四个方面(Performance,Data ...

  8. virtualbox下centos虚拟机安装增强工具教程和常见错误解决

    VirtualBox 4.3.6上安装CentOS 6.5 https://my.oschina.net/tashi/blog/190060 错误1.Building the main Guest A ...

  9. Spark基本术语表+基本架构+基本提交运行模式

    一.Spark基本术语表 转载自:http://blog.csdn.net/simple_the_best/article/details/70843756 以下内容来自 http://spark.a ...

  10. jpa随笔

    1对多的关系 //多的一方@Entity @Table(name="car_distribute") public class DistributeCar extends Cust ...