web框架初識

2022-07-31 02:42:09 字數 2975 閱讀 3159

目錄

所有的web應用本質上就是乙個socket服務端,而使用者的瀏覽器就是乙個socket客戶端,基於請求做出響應,客戶都先請求,服務端做出對應的響應,按照http協議的請求協議傳送請求,服務端按照http協議的響應協議來響應請求,這樣的網路通訊,我們就可以自己實現web框架了。
import socket

server = socket.socket()

server.bind(('127.0.0.1', 8896))

server.listen(5)

while 1:

# http請求是一次請求一次響應,在返回資料之後,關閉鏈結就可以了

conn, addr = server.accept()

from_client_data = conn.recv(1024)

# 獲取瀏覽器訪問的路徑

path = from_client_data.decode('utf8').split()[1]

# 按照http協議規定的方式返回訊息

# '/'代表的是根路徑,就是ip位址後面沒有寫訪問路徑

if path == '/':

# 開啟html檔案,以rb的形式讀取出來

with open('test.html', 'rb')as f:

# 讀取的html檔案

data = f.read()

# 如果訪問的是css檔案路徑,將css檔案讀取出來

elif path == '/style.css':

with open('style.css', 'rb')as f:

data = f.read()

# 如果訪問的是js檔案,將js的檔案讀取出來

elif path == '/test.js':

with open('test.js', 'rb')as f:

data = f.read()

#將獲取的檔案傳送給客戶端

conn.send(data)

conn.close()

'''1:通過瀏覽器訪問上面socket**中設定的ip位址和埠就能獲取到html頁面的內容

2:我們的css,js**單獨寫在乙個檔案中的,當我們吧html頁面傳送給瀏覽器的時候,瀏覽器對html頁面進行渲染,渲染的時候讀取html中有匯入的css檔案和js檔案,就會再次向server端傳送請求

# 客戶端通過根路徑訪問時,服務端返回html頁面

def home(conn):

with open('test.html', 'r', encoding='utf-8')as f:

new = str(time.time())

s = f.read()

#將獲取的動態時間替換掉html頁面中的時間,達到動態返回頁面的效果

s = s.replace('$$xx$$', new)

conn.send(s.encode('utf-8'))

conn.close()

# 當客戶端通過css路徑訪問的時候,服務端返回css檔案

def style(conn):

with open('style.css', 'rb')as f:

conn.send(f.read())

conn.close()

# 當客戶端通過js路徑訪問的時候,服務端返回css檔案

def index(conn):

with open('test.js', 'rb')as f:

conn.send(f.read())

conn.close()

# 當客戶端通過請求索要的時候,服務端返回

def png(conn):

with open('1.png','rb')as f:

conn.send(f.read())

conn.close()

# 當客戶端傳送請求索要,ico檔案的時候,返回ioc檔案

def ico(conn):

with open('wechat.ico','rb')as f:

print('333')

conn.send(f.read())

conn.close()

def ind(conn):

with open('index.html','rb')as f:

print('333')

conn.send(f.read())

conn.close()

#定義乙個路徑和檔案的對應列表,節省**,

urllist=[(b'/',home),(b'/style.css',style),(b'/test.js',index),(b'/wechat.ico',ico),(b'/index',ind)]

while 1:

server = socket.socket()

server.bind(('127.0.0.1',8896))

server.listen(5)

conn,addr=server.accept()

#獲取請求路徑

path=conn.recv(1024).split()[1]

print(path)

func=none

for url in urllist:

if path==url[0]:

p=thread(target=url[1],args=(conn,))

p.start()

初識web框架django

一 初識web框架 手擼乙個web框架的總結 1 web框架的本質 socket服務端與瀏覽器的通訊 2 socket服務端功能劃分 a.負責與瀏覽器收發訊息 socket通訊 wsgiref uwsgi gunicorn b.根據使用者訪問的不同路徑執行不同的函式 自己寫c.從html中讀取內容,...

初識MVC框架

什麼是mvc?剛開始聽到mvc這個詞的時候,對其茫無所知,通過近期的學習,對其有所了解。mvc全名是model view controller,是模型 model 檢視 view 控制器 controller 的縮寫,一種軟體設計典範,用一種業務邏輯 資料 介面顯示分離的方法組織 將業務邏輯聚集到乙...

Java EE spring框架初識

spring 框架的簡介 解決方案 spring 的核心是依賴注入和控制反轉。依賴注入,正常類a依賴類b,如果在類a的物件a中要使用類b的物件b,需要在a中new,依賴注入就是,框架來建立a和b物件,將b注入到a中,框架接管了這個以來物件的建立工作,並且把其 b 注入到需要他的a中。控制反轉,建立物...