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应用程序及过去一年的总结
前言 在这家公司服务了一年时间,一个多月之前已经提交了离职申请,好在领导都已经批准了,过几天就办理手续了,在此感谢领导的栽培与挽留,感谢各位同事在工作中的给我的帮助,感谢师傅(在我心中当他是我师傅,跟 ...
随机推荐
- 用Python爬虫对豆瓣《敦刻尔克》影评进行词云展示
最近很想看的一个电影,去知乎上看一下评论,刚好在学Python爬虫,就做个小实例. 代码基于第三方修改 原文链接 http://python.jobbole.com/88325/#comment-9 ...
- TeamViewer 软件完全卸载
TeamViewer 软件似乎用于商业环境中 - 彻底卸载 Windows 1. 检测为商业用途该软件似乎用于商业环境中.请注意:免费版仅供个人使用.您的会话将在 5 分钟后终止. 2.1 Close ...
- python实现各种排序
1.冒泡排序: # -*- coding: utf-8 -*- def BubbleSort(a): n=len(a) for i in range(0,n-1): swapped=False for ...
- MyBatisUtil类
在用MyBatis框架连接数据库时,往往要经常创建sessionFactory,重复的编写大量代码,故将其中的重复代码提出成一个工具类,这样直接调用方法即可,可简化代码编写和优化运行效率,不需要重复的 ...
- vos限制客户呼出时间
问题: 公司希望自己的卡线晚上 21:00-24:00 早上00:00-7:30不能打出电话,以防遭投拆, 那么如何设置? 方法: 找到客户使用的落地网关, 落地网关——补充设置——
- Altium_Designer17-PCB-如何重新定义板子外形
当我们绘制完电路图.完成PCB布局和布线后,我们会遇到下面这种情况: 发现什么了吗?那么大的黑框框,我们只用到了很少的一部分.那有啥?告诉你黑框框的大小就是你最后将要印刷的PCB板的实际大小!大家都知 ...
- IOS 拼接按钮文字
NSMutableString *tempAnswerTitle=[[NSMutableString alloc]init]; for(UIButton *answerBtn in self.answ ...
- .net core 2.0下的容器注册方法
https://www.cnblogs.com/Wddpct/p/5764511.html 自带的容器注册方法真的很好用
- CentOS下用rinetd做端口转发
windows下的端口转发一般用的是自带的nat和porttunnel.portmap linux下端口转发映射的程序叫rinetd,启动方法rinetd -c /etc/rinetd.conf , ...
- 计算1到n的n次方之和
实现效果: 知识运用: Math类的Pow方法:返回指定数字的指定次幂 public static double Pow(double x,double y) 实现代码: public string ...