什么是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应用程序的更多相关文章

  1. ASP.NET Core 中文文档 第二章 指南(3)用 Visual Studio 发布一个 Azure 云 Web 应用程序

    原文:Getting Started 作者:Rick Anderson 翻译:谢炀(Kiler) 校对:孟帅洋(书缘).刘怡(AlexLEWIS).何镇汐 设置开发环境 安装最新版本的 Azure S ...

  2. vs2012 发布web应用程序

    Visual Studio 2012 Visual Studio Express 2012 for Web 与 的Visual Studio 2010  Visual Studio Web发布更新 与 ...

  3. web应用程序

    1.web应用程序和网站的区别 应用程序有两种模式C/S.B/S.C/S是客户端/服务器端程序,也就是说这类程序一般独立运行.而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来 ...

  4. Web应用程序的自动化测试库-FluentAutomation

    FluentAutomation是流畅的自动化应用编程接口,支持Selenium和WatiN 连同它们所有的风格和驱动程序.自从Fluient支持Selenium,那就意味着你可以使用Selenium ...

  5. 简化 Web 应用程序与 Windows Azure Active Directory、ASP.NET 和 Visual Studio 的集成

    大家好! 今天的博文深入讨论我们今天推出的开发人员工具和框架中的一些新功能.我们通过与 ASP.NET 和 Visual Studio 团队合作开发了一些重大的增强功能,让开发人员能够轻松使用 Win ...

  6. deployment与Web应用程序部署

    定义用于支持 Web 应用程序部署的配置设置. <deployment retail="true|false" /> retail属性:设置一个值,该值指定是否以发布模 ...

  7. 在Autodesk应用程序商店发布基于浏览器的Web应用程序

    你一定已经听说过Autodesk应用程序商店了,通过Autodesk应用程序商店,你可以免费下载或购买来自全球的优秀开发者发布的应用程序,来帮助你更快更方便的完成你的工作.而且作为开发者,您也可以在A ...

  8. web应用程序开发原理

    企业应用计算的演变为1.主机/哑终端的集中计算模式: 2.客户机/服务器计算模式:3.浏览器    /服务器计算模式.其中,1具有部署方面的优势,但在一台计算机中进行全部的处理,应用程序难于维护,难于 ...

  9. web前端程序员真的值这么多钱吗?

    对于互联网公司来说用户就是上帝,做好客户体验一切才有可能.所以互联网公司都会把钱砸向前端,Web前端程序员也越来越受到企业争相聘用. 前端工程师工资也越来越高,目前Web前端工程师工作1~2年后通常会 ...

  10. 基于EasyUI的Web应用程序及过去一年的总结

    前言 在这家公司服务了一年时间,一个多月之前已经提交了离职申请,好在领导都已经批准了,过几天就办理手续了,在此感谢领导的栽培与挽留,感谢各位同事在工作中的给我的帮助,感谢师傅(在我心中当他是我师傅,跟 ...

随机推荐

  1. 账户密码提示 jq简单事件

    $(".username").focus(function(){ if($(this).val()=="请输入用户名"){ $(this).val(" ...

  2. (开发)bable - es6转码

    参考:http://www.ruanyifeng.com/blog/2016/01/babel.html Babel Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执 ...

  3. C++ Knowledge series overloading

    What does the compiler behind our programming? Overloading in C++ Override all of overloaded functio ...

  4. CloudWAN

    类型: 定制服务 软件包: collaboration Enterprise integration integrated industry internet IT service/informati ...

  5. git github添加远程仓库出错 remote origin already exists

    在github上建立了仓库后,执行 git remote add origin https://github.com/zhangsan/sample.git时,提示 remote origin alr ...

  6. 解决SD卡频繁读写问题 Anything-sync-daemon 映射linux目录到tmpfs并定时同步

    Anything-sync-daemon (asd) is a is a diminutive pseudo-daemon designed to manage target directories ...

  7. NYOJ(680),摘枇杷,(暴力,或者二分搜索)

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=680 很巧妙的一个题目,就是看你的逆向思维,result 一定是max(a[i])~sum ...

  8. 2017.9.17 HTML学习总结---table标签

    接上: 2.1.3  HTML表单标签与表单设计 表单是用户与服务器交互的主要方法,用户在表单中输入数据,提交给服务器程序来处理. (1)表单的组成: 文本框(text),密码框(password), ...

  9. Thinkphp 5 使用DOMDocument

    每一个载入浏览器都会生成一个 Document 对象. Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问.Document 对象是 Window 对象的一部分. 我们项目 ...

  10. Linux利用i节点删除乱码文件

    Linux删除乱码文件 当文件名为乱码的时候,无法通过键盘输入文件名,所以在终端下就不能直接利用rm,mv等命令管理文件了. 但是我们知道每个文件都有一个i节点号,我们可以考虑通过i节点号来管理文件. ...