web开发的本质
1.浏览器上输入一个网址回车后都发生了什么?
(1)浏览器相当于一个客户端,将域名翻译成ip,浏览器给服务端发送一个消息。
(2)服务端拿到消息
(3)服务端返回消息
(4)浏览器展示页面
2.客户端和服务端的消息格式是约定好的
浏览器这个客户端和我们写的server想要实现通信,同样的需要走一个协议,这个规约就是HTTP协议
3.HTTP
浏览器和服务器之间约定好的消息格式通信协议
4.web本质示例
(1)手写的server端
# web本质 示例 import socket sk = socket.socket()
sk.bind(('127.0.0.1', 8000)) sk.listen(5) while 1:
conn, addr = sk.accept()
conn.recv(1024)
conn.send(b'HTTP/1.1 200 OK\r\n\r\n') # 按照http协议的格式发送消息
# conn.send(b'hello world!') # 发送到浏览器客户端的内容
# conn.send(b'<h1>hello world!</h1>') # 发送到浏览器客户端的内容
#conn.send(b'HTTP/1.1 200 OK\r\n\r\nhello world!') # 按照http协议的格式发送消息
# 从文件读取
with open('data.html', 'rb') as f:
msg = f.read()
conn.send(msg) # 发送到浏览器客户端的内容
conn.close()
(2)data.html内容为
<h1>hello world!</h1>
(3)可以用浏览器访问服务端的ip地址,服务端按照http通信的规则返回一个html给浏览器,浏览器就展示出来了这个html的内容
(4)同时,我们写好一个html后,也可以直接用浏览器打开。

5.web本质
服务端
客户端浏览器
HTML文件
Django这种web框架,就是怎么去返回不同的html
web开发的本质的更多相关文章
- Python Web框架本质——Python Web开发系列一
前言:了解一件事情本质的那一瞬间总能让我获得巨大的愉悦感,希望这篇文章也能帮助到您. 目的:本文主要简单介绍Web开发中三大基本功能:Socket实现.路由系统.模板引擎渲染. 进入正题. 一. 基础 ...
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...
- 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践
提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...
- 浅谈网站web框架的本质
一.web框架的本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. import socket def handle_reques ...
- Web开发技术发展历史
Web开发技术发展历史 来自:天码营 原文:http://www.tianmaying.com/tutorial/web-history Web的诞生 提到Web,不得不提一个词就是"互 ...
- [Python] 利用Django进行Web开发系列(一)
1 写在前面 在没有接触互联网这个行业的时候,我就一直很好奇网站是怎么构建的.现在虽然从事互联网相关的工作,但是也一直没有接触过Web开发之类的东西,但是兴趣终归还是要有的,而且是需要自己动手去实践的 ...
- [Python] 利用Django进行Web开发系列(二)
1 编写第一个静态页面——Hello world页面 在上一篇博客<[Python] 利用Django进行Web开发系列(一)>中,我们创建了自己的目录mysite. Step1:创建视图 ...
- Web开发中20个很有用的CSS库
来源: 微信公众号文章 在过去的几年中,CSS已经成为一大部分开发者和设计者的最爱,因为它提供了一系列功能和特性.每个月都有无数个围绕CSS的工具被开发者发布以简化WEB开发.像CSS库,框架,应用这 ...
- 移动web开发和移动app开发的区分
1.移动web开发 这部分跟web前端开发差别不大,使用的技术都是html+css+js.区别为手机浏览器是webkit的天下,pc端是IE的天 下.手机网页可以理解成pc网页的缩小版加一些触摸特性. ...
随机推荐
- Windows环境下vscode Live Server插件如何开启https
0x01 vscode http插件 Live Server如何开启https 在本机端的开发环境下,如果要测试一些需要HTTPS的功能可以使用mkcert给自己颁发凭证 0x02 安装步骤如下: 1 ...
- Github上的沙雕项目,玩100遍都不够
这段时间大家在家自我隔离.居家办公憋坏了吧.为了打发这种无聊的生活,我决定拿出我在github上珍藏多年的沙雕项目,让大家在无聊的时候可以打发时间. Github作为互联网上最大的开源社区,一直备受程 ...
- VScode如何配置c/c++运行环境
vscode如何配置c/c++环境 下载 Mingw 参考链接:https://blog.csdn.net/jiqiren_dasheng/article/details/103775488 笔者下载 ...
- vue 干货
今天逛博客,发现一个干货, 赶紧记录,内容太多,慢慢消化 vuejs心法和技法 https://www.cnblogs.com/kidsitcn/p/5409994.html
- Zookeeper(2)---节点属性、监听和权限
之前通过客户端连接之后我们已经知道了zk相关的很多命令(Zookeeper(1)---初识). 节点属性: 现在我们就通过stat指令来看看节点都有哪些属性,或者使用get 指令和-s参数来查看节点数 ...
- R语言学习网站(分享)
1. https://www.r-bloggers.com/ 2. https://www.kaggle.com/datasets 3. RStudio download: https://www.r ...
- Jenkins部署持续集成远程机节点的问题
工作需要把工作电脑作为持续集成的执行机,最近研究Jenkins,在工作电脑上搭了一套环境,期间把原来的JDK删除掉了,导致持续集成的Jenkins节点slave-agent.jnlp打不开.解决方法是 ...
- python的多线程和java的多线程之间的区别
在python中,由于Cpython解释器的全局解释器的存在,那么多线程的话在同一时刻只能有一个线程执行,意思就是python中的多线程只能并发执行, 没有办法实现真正的并行,也就是无法利用多核CPU ...
- 数据库本地data source
数据源表示数据库所在设备的ip地址或名称,基本上有以下几种写方法 data source = (local) data source = "127.0.0.1" data sour ...
- 正式班D23
2020.11.05星期四 正式班D23 目录 12.3.3 HUP信号 12.3.3 HUP信号 在关闭终端时,终端会收到Linux HUP信号(hangup信号),关闭其所有子进程. 想让进程一直 ...