框架演變原理

2021-09-24 23:48:04 字數 2822 閱讀 3160

wsgiref版web

"""根據url中不同的路徑返回不同的內容--函式高階版

返回html頁面

讓網頁動態起來

wsgiref模組版

"""import time

from wsgiref.******_server import make_server

# 將返回不同的內容部分封裝成函式

def yimi(url):

with open("yimi.html", "r", encoding="utf8") as f:

s = f.read()

now = str(time.time())

s = s.replace("@@xx@@", now)

return bytes(s, encoding="utf8")

def xiaohei(url):

with open("xiaohei.html", "r", encoding="utf8") as f:

s = f.read()

return bytes(s, encoding="utf8")

# 定義乙個url和實際要執行的函式的對應關係

list1 = [

("/yimi/", yimi),

("/xiaohei/", xiaohei),

]def run_server(environ, start_response):

start_response('200 ok', [('content-type', 'text/html;charset=utf8'), ]) # 設定http響應的狀態碼和頭資訊

url = environ['path_info'] # 取到使用者輸入的url

print("我在8090等你哦...")

httpd.serve_forever()

jiaja2web版框架

from wsgiref.******_server import make_server

from jinja2 import template

def index():

with open("09 jinja2版web框架.html", "r", encoding="utf-8") as f:

data = f.read()

template = template(data) # 生成模板檔案

# 從資料庫中取資料

import pymysql

conn = pymysql.connect(

host="127.0.0.1",

port=3306,

user="root",

password="123456",

database="day59",

charset="utf8",

)cursor = conn.cursor(cursor=pymysql.cursors.dictcursor)

cursor.execute("select * from userinfo;")

user_list = cursor.fetchall()

# 實現字串的替換

ret = template.render() # 把資料填充到模板裡面

return [bytes(ret, encoding="utf8"), ]

def home():

with open("home.html", "rb") as f:

data = f.read()

return [data, ]

# 定義乙個url和函式的對應關係

url_list = [

("/index/", index),

("/home/", home),

]def run_server(environ, start_response):

start_response('200 ok', [('content-type', 'text/html;charset=utf8'), ]) # 設定http響應的狀態碼和頭資訊

url = environ['path_info'] # 取到使用者輸入的url

func = none # 將要執行的函式

for i in url_list:

if i[0] == url:

func = i[1] # 去之前定義好的url列表裡找url應該執行的函式

break

if func: # 如果能找到要執行的函式

return func() # 返回函式的執行結果

else:

return [bytes("404沒有該頁面", encoding="utf8"), ]

分布式框架演變 學習筆記

常見的伺服器架構 單體應用 部署多型伺服器 通過nginx做負載均衡 資料庫讀寫分離 具體某乙個模組的 資料庫讀寫分離 如果某乙個模組讀寫操作都很多,把這個模組的資料庫單獨分出來 分庫分表 垂直分庫,水平分表 hash 優點 均衡,缺點 擴容 range,list 根據userid,orderid,...

springMVC 框架原理

springmvc是spring框架的乙個模組,springmvc和spring無需通過中間整合層進行整合 springmvc是基於mvc的web框架。第一步 發起請求到前端控制器 dispatcherservlet 第四步 前端控制器呼叫處理器介面卡去執行handler 第五步 處理器介面卡去執行...

Spring MVC框架原理

spring mvc屬於springframework的後續產品,已經融合在spring web flow裡面。spring 框架提供了構建 web 應用程式的全功能 mvc 模組。使用 spring 可插入的 mvc 架構,從而在使用spring進行web開發時,可以選擇使用spring的spri...