什么是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

  此时服务端接收:

001---web应用程序-LMLPHP

        浏览器发来的数据
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'

先不看这是什么,那是请求首行加请求体的。此时浏览器已经得到了一个页面。

001---web应用程序-LMLPHP

这就是刚刚我写的html文件,被浏览器渲染之后是一个页面。

输入用户名和密码之后,点击登陆,服务端一样会接收form表单发送的数据。注意看末尾的user和pwd。

001---web应用程序-LMLPHP

这就是一个最简单web应用,浏览器请求url。服务端返回数据。浏览器再渲染成页面。

04-26 15:10
查看更多