zoukankan      html  css  js  c++  java
  • web应用

    一 什么是web应用

    Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件

    应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。WEB应用程序一般是B/S模式。

    本质上:浏览器是一个socket客户端,服务器是一个socket服务端

     

    二 基于socket写一个web应用

    主要步骤如下:

    WEB应用(网站):
        浏览器(socket客户端):
            02. www.cnblogs.com(42.121.252.58,80)
                sk.socket()
                sk.connect((42.121.252.58,80))
                
                sk.send('你好 web')
            05. 接受
            06. 连接断开
            
            
        博客园(socket服务端):
            01. 监听ip和端口
                while True:
                    用户 = 等待用户连接
                    03. 收到'你好 web'
                    04. 响应: '好'
                    用户断开
    自己写的网站
        a. socket服务端
        b. 根据URL的不同返回不同的内容
            路由系统:
                URL --> 视图函数
        c. 字符串返回给用户
            模板引擎渲染:
                HTML充当模板(特殊字符替换)
                自己创造任意数据
            返回字符串
    用户在页面上看到的内容”字符串“(看到页面效果,由于浏览器解析)

     

    web框架的分类:

     WEB框架:
        框架种类:
            01 a,b,c                  --> Tornado
            02 [第三方a],b,c           -->wsgrief(服务端 内置的)->Django
            03 [第三方a],b,[第三方c]   --> flask,(c用的jinja2)
        另一种分类:
            Django框架(web。。。)
            其他
    py如下:
    import socket
        def server_run():
            sk = socket.socket()
            sk = socket.bind(('127.0.0.1',8080))
            sk = socket.listen(5)
            while True:
                conn,addr = sk.accept()
                #有人来连接了
                #获取用户发送的数据
                data = conn.recv(1024)
                print(data)
                # 1. 直接在send里写,发送给客户端
                # 响应头 + 响应体(已经遵规则了)
                conn.send(b'HTTP/1.1 200 OK
    
    ")<h1>hello web</h1><img     src="https://baidu.com/se44rr4r5r5k.jpg"></img>')
                # 2. 打开一个html文件,发送给客户端
                with open('index.html','r',encoding='utf-8') as f:
                    data = f.read()
                conn.send(('HTTP/1.1 200 OK
    
    %s'%data).encode('utf-8'))
    
                # 3. 动态网页,字符串替换
                import datetime
                now = datetime.datetime.now().strftime('%Y-%m-%d %X')
                with open('index.html','r',encoding='utf-8') as f:
                    data = f.read()
                data = data.replace('@@time@@',now)
                conn.send(('HTTP/1.1 200 OK
    
    %s'%data).encode('utf-8'))
                conn.close() 
    
    if __name__ == '__main__':
        server_run()
    index.html 文件
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <h2>@@time@@</h2>
    
    <img src="https://gss2.bdstatic.com/9fo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike92%2C5%2C5%2C92%2C30/sign=5e3814acf9edab64607f4592965fc4a6/14ce36d3d539b600c0c465d0eb50352ac65cb74b.jpg" alt="">
    </body>
    </html>
  • 相关阅读:
    linux用户管理初级(上)
    定时任务实战
    linux定时任务
    Linux 命令行基础(一)
    Linux 操作系统发展历程及系统版本选择
    Linux文件的权限
    Linux硬连接和软连接
    Linux 文件的属性
    linux 正则表达式
    centos7 设置时间同步
  • 原文地址:https://www.cnblogs.com/kingyanan/p/9588538.html
Copyright © 2011-2022 走看看