001---web应用程序
什么是web应用?
应用程序分两种模式:C/S、B/S
1 、C/S:客户端(Client)与服务端
一般独立运行
2 、B/S:浏览器(Browser)与服务端
这类应用要借助浏览器:谷歌、火狐、IE等浏览器来运行,不需要再安装其他软件。
web应用一般是B/S模式。用Java、Python编写的web应用没有什么本质上的不同,在网络编程的意义下,浏览器是一个socket客户端、服务器是一个socket服务端。
手写socket服务端(web_server.py):
import socket # 导入socket模块
sk = socket.socket() # 创建socket套接字对象 sk.bind(("127.0.0.1",8800)) # 绑定IP和端口
sk.listen(5) # 设置监听数 5 #连接循环
while True:
print('wait……')
conn,addr = sk.accept() # 等待连接 conn:浏览器套接字对象
data = conn.recv(1024) # data 浏览器发来的数据
print('浏览器发来的数据',data) # 打印浏览器发来的数据 # 读取手写的login.html文件,作为回复浏览器的数据
with open('login.html','rb') as f:
data=f.read()
conn.send(b'HTTP/1.1 200 OK\r\n\r\n%s'%data) # 向浏览器发送数据 格式必须这样写:HTTP/1.1 200 OK\r\n\r\n
conn.close() # 关闭浏览器套接字对象
sk.close() # 关闭socket对象
手写login.html
<!DOCTYPE html>
<html lang="zh_CN">
<head>
<meta charset="UTF-8">
<title>模拟post</title>
</head>
<body> <h1>欢迎登录</h1>
<form action="/127.0.0.1:8800/" method="post">
用户名<input type="text" name="user">
密码<input type="password" name="pwd">
<input type="submit" value="登录">
</form>
</body>
</html>
运行web_server.py文件后,打开浏览器,url地址栏输入127.0.0.1:8800
此时服务端接收:

浏览器发来的数据
b'GET /favicon.ico HTTP/1.1\r\n
Host: 127.0.0.1:8800\r\n
Connection: keep-alive\r\n
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36\r\n
Accept: image/webp,image/apng,image/*,*/*;q=0.8\r\n
Referer: http://127.0.0.1:8800/\r\nAccept-Encoding: gzip, deflate, br\r\n
Accept-Language: zh-CN,zh-TW;q=0.9,zh-MO;q=0.8,zh;q=0.7\r\n
Cookie: csrftoken=PqzfhK7r3yKazDF2gQuW4PODvYxyU2byEafCehsIYcA1w3TAnck51Z0ccbvF0sDv; sessionid=ggeryt0m3w80cnh2uuc1ynj21s91pyh2\r\n\r\n'
先不看这是什么,那是请求首行加请求体的。此时浏览器已经得到了一个页面。

这就是刚刚我写的html文件,被浏览器渲染之后是一个页面。
输入用户名和密码之后,点击登陆,服务端一样会接收form表单发送的数据。注意看末尾的user和pwd。

这就是一个最简单web应用,浏览器请求url。服务端返回数据。浏览器再渲染成页面。
001---web应用程序的更多相关文章
- ASP.NET Core 中文文档 第二章 指南(3)用 Visual Studio 发布一个 Azure 云 Web 应用程序
原文:Getting Started 作者:Rick Anderson 翻译:谢炀(Kiler) 校对:孟帅洋(书缘).刘怡(AlexLEWIS).何镇汐 设置开发环境 安装最新版本的 Azure S ...
- vs2012 发布web应用程序
Visual Studio 2012 Visual Studio Express 2012 for Web 与 的Visual Studio 2010 Visual Studio Web发布更新 与 ...
- web应用程序
1.web应用程序和网站的区别 应用程序有两种模式C/S.B/S.C/S是客户端/服务器端程序,也就是说这类程序一般独立运行.而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来 ...
- Web应用程序的自动化测试库-FluentAutomation
FluentAutomation是流畅的自动化应用编程接口,支持Selenium和WatiN 连同它们所有的风格和驱动程序.自从Fluient支持Selenium,那就意味着你可以使用Selenium ...
- 简化 Web 应用程序与 Windows Azure Active Directory、ASP.NET 和 Visual Studio 的集成
大家好! 今天的博文深入讨论我们今天推出的开发人员工具和框架中的一些新功能.我们通过与 ASP.NET 和 Visual Studio 团队合作开发了一些重大的增强功能,让开发人员能够轻松使用 Win ...
- deployment与Web应用程序部署
定义用于支持 Web 应用程序部署的配置设置. <deployment retail="true|false" /> retail属性:设置一个值,该值指定是否以发布模 ...
- 在Autodesk应用程序商店发布基于浏览器的Web应用程序
你一定已经听说过Autodesk应用程序商店了,通过Autodesk应用程序商店,你可以免费下载或购买来自全球的优秀开发者发布的应用程序,来帮助你更快更方便的完成你的工作.而且作为开发者,您也可以在A ...
- web应用程序开发原理
企业应用计算的演变为1.主机/哑终端的集中计算模式: 2.客户机/服务器计算模式:3.浏览器 /服务器计算模式.其中,1具有部署方面的优势,但在一台计算机中进行全部的处理,应用程序难于维护,难于 ...
- web前端程序员真的值这么多钱吗?
对于互联网公司来说用户就是上帝,做好客户体验一切才有可能.所以互联网公司都会把钱砸向前端,Web前端程序员也越来越受到企业争相聘用. 前端工程师工资也越来越高,目前Web前端工程师工作1~2年后通常会 ...
- 基于EasyUI的Web应用程序及过去一年的总结
前言 在这家公司服务了一年时间,一个多月之前已经提交了离职申请,好在领导都已经批准了,过几天就办理手续了,在此感谢领导的栽培与挽留,感谢各位同事在工作中的给我的帮助,感谢师傅(在我心中当他是我师傅,跟 ...
随机推荐
- 在Centos7中安装Docker并实例化Mysql
首先 本文是一篇安装流程,从初始的Centos7安装Docker后实例化一个Mysql的整个流程,其中会包含一些需要注意的疑点和坑. 实例化的Mysql是将数据和配置保存在宿主机. 注意,在安装Doc ...
- node-sass 安装报错解决办法
npm install安装node-sass时出现以下问题: Cannot download https://github.com/sass/node-sass/releases/download/v ...
- 秒懂JSON.parse()与JSON.stringify()的区别
在网站开发中,Json是最为常见的一种数据交互手段.在使用过程中,常会遇到Json字段串和对象之间进行转换.很多朋友对于JSON.parse() 和JSON.stringify() 的区别,下面为大家 ...
- [转c#]记录程序耗时的方法
多时候需要输出程序耗时,然后记录下来, 总是在程序执行开始记录当前时间点,在结尾记录结束时间点,然后两个时间相减, 那么有没有其他稍微像样点的方法呢? 告诉你,有滴 ; ) 这个方法主体就是 ...
- Trouble Shooting的一些感想(实时补充)
最近一直做两个产品功能的Merge工作,代码Merge过来之后,发现了很多问题.经过Trouble Shooting,最终发现归根结底都是我们Merge的问题,例如有的Code没有Merge过来,Me ...
- 有趣的回文数(Palindrome number)
文章转自http://blog.163.com/hljmdjlln@126/blog/static/5473620620120412525181/ 做LC上的题"Palindrome num ...
- Linux MySQL单实例源码编译安装5.6
cmake软件 tar -zxvf cmake-2.8.11.2.tar.gz cd cmake-2.8.11.2 ./bootstrap make make install cd ../ 依赖包 ...
- 在写EF 时把时间格式化的做法
SELECT COUNT(l.LogSeq), date_format(l.CreateDate,'%Y-%m') CreateDateByMonth FROM LOL l WHERE l.Creat ...
- POJ-2513 Colored Sticks---欧拉回路+并查集+字典树
题目链接: https://vjudge.net/problem/POJ-2513 题目大意: 给一些木棍,两端都有颜色,只有两根对应的端点颜色相同才能相接,问能不能把它们接成一根木棍 解题思路: 题 ...
- LCT入门
前言 \(LCT\),真的是一个无比神奇的数据结构. 它可以动态维护链信息.连通性.边权.子树信息等各种神奇的东西. 而且,它其实并不难理解. 就算理解不了,它简短的代码也很好背. \(LCT\)与实 ...