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网页的缩小版加一些触摸特性. ...
随机推荐
- Flink on Yarn三部曲之二:部署和设置
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Linux命令获得帮助
在Linux中获得帮助 查帮助的思路 whatis CMD mandb type CMD 如果内部:help CMD ; man bash 如果外部:CMD --help | -h 概述 获取帮助的能 ...
- Linux终端 terminal
终端 一个可以进行人机交互的界面 物理终端 设备终端:键盘.鼠标.显示器 终端类型 控制台终端: /dev/console 串行终端:/dev/ttyS# 虚拟终端:tty:teletypewrite ...
- Linux入门到放弃之七《进程管理》
进程管理 1.查看所有进程,并用全格式显示: 命令:ps -ef 2.用ps命令查看系统当前的进程,并把系统当前的进程保存到文件process中: 命令:ps aux >> process ...
- Redis 入门与 ASP.NET Core 缓存
目录 基础 Redis 库 连接 Redis 能用 redis 干啥 Redis 数据库存储 字符串 订阅发布 RedisValue ASP.NET Core 缓存与分布式缓存 内存中的缓存 ASP. ...
- 关于c++ string类的一些使用
主要最近要用的上 才整理一下 用string类别忘了导入头文件 #include <string> 注意这个细节:cout 可直接输出 string 类的对象的内容 但是printf不可以 ...
- java 内存可见性
java线程 -> 线程工作内存 -> 主物理内存 线程工作内存的原理是栈内是连续的小空间,寻址速度比堆快得多,将变量拷贝到栈内生成副本再操作 什么是重排序 代码指令可能并不是严格按照代码 ...
- 统计学与R语言
书籍推荐 文末见下载链接. 主要有 :统计学习方法.R语言实战.统计学(贾俊平) 链接:百度网盘 提取码:提取码
- 一个Task.Factory.StartNew的错误用法
同事写了这样一段代码: FactoryStartNew类: using System; using System.Collections.Generic; using System.Linq; usi ...
- IOCP 模型1
// IOCP.cpp : Defines the entry point for the console application. // // #include "stdafx.h&quo ...