zoukankan      html  css  js  c++  java
  • 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):
     1 import socket                  # 导入socket模块
     2     sk = socket.socket()        # 创建socket套接字对象
     3 
     4     sk.bind(("127.0.0.1",8800)) # 绑定IP和端口
     5     sk.listen(5)                # 设置监听数 5
     6 
     7     #连接循环
     8     while True:
     9         print('wait……')
    10         conn,addr = sk.accept() # 等待连接  conn:浏览器套接字对象
    11         data = conn.recv(1024)  # data  浏览器发来的数据
    12         print('浏览器发来的数据',data)          # 打印浏览器发来的数据
    13 
    14         # 读取手写的login.html文件,作为回复浏览器的数据
    15         with open('login.html','rb') as f:
    16             data=f.read()
    17         conn.send(b'HTTP/1.1 200 OK
    
    %s'%data)  # 向浏览器发送数据  格式必须这样写:HTTP/1.1 200 OK
    
    
    18         conn.close()        # 关闭浏览器套接字对象
    19     sk.close()              # 关闭socket对象

     手写login.html

     1     <!DOCTYPE html>
     2     <html lang="zh_CN">
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>模拟post</title>
     6     </head>
     7     <body>
     8 
     9     <h1>欢迎登录</h1>
    10     <form action="/127.0.0.1:8800/" method="post">
    11         用户名<input type="text" name="user">
    12         密码<input type="password" name="pwd">
    13         <input type="submit" value="登录">
    14     </form>
    15     </body>
    16     </html>

     运行web_server.py文件后,打开浏览器,url地址栏输入127.0.0.1:8800

      此时服务端接收:

            浏览器发来的数据
                b'GET /favicon.ico HTTP/1.1
    
                Host: 127.0.0.1:8800
    
                Connection: keep-alive
    
                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
    
                Accept: image/webp,image/apng,image/*,*/*;q=0.8
    
                Referer: http://127.0.0.1:8800/
    Accept-Encoding: gzip, deflate, br
    
                Accept-Language: zh-CN,zh-TW;q=0.9,zh-MO;q=0.8,zh;q=0.7
    
                Cookie: csrftoken=PqzfhK7r3yKazDF2gQuW4PODvYxyU2byEafCehsIYcA1w3TAnck51Z0ccbvF0sDv; sessionid=ggeryt0m3w80cnh2uuc1ynj21s91pyh2
    
    '

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

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

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

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

  • 相关阅读:
    github添加ssh
    包围盒的计算以及物体移动到世界坐标中心
    123
    mysql
    建站步骤
    深度遍历和广度遍历
    Js特殊字符转义之htmlEscape()方法
    参数命名风格转换
    http 206
    js 实现快速排序
  • 原文地址:https://www.cnblogs.com/xjmlove/p/9877750.html
Copyright © 2011-2022 走看看