使用wsgiref手撸web框架】的更多相关文章

模板 前言 要说到应用程序,就不得不提的就是cs架构和BS架构 所谓的cs架构就是client端和server端,就像我们的电脑上的qq,微信等应用程序 bs架构就是浏览器端和server端,我们不需要写客户端了,直接用浏览器接收来自server端的数据,进行解析 手写简易的server端 import socket soc=socket.socket() #实例化socket soc.bind(('127.0.0.1',8001)) #绑定ip地址和端口 soc.listen(5)#监听 ​…
纯手撸web框架 一.Web应用的组成 接下来我们学习的目的是为了开发一个Web应用程序,而Web应用程序是基于B/S架构的,其中B指的是浏览器,负责向S端发送请求信息,而S端会根据接收到的请求信息返回相应的数据给浏览器,需要强调的一点是:S端由server和application两大部分构成,如图所示: 上图:Web应用组成 二.手鲁web应用 2.1 基本版 import socket """ @author RansySun @create 2019-10-18-11:…
"""web框架:将前端.数据库整合到一起的基于互联网传输的python代码 web框架也可以简单的理解为是软件开发架构里面的'服务端'""" # 1.搭建简易版本服务端 socket模块# 2.遵循HTTP协议 四大特性.数据格式.响应状态码# 3.基于不同的后缀响应不同的内容 如何获取用户输入的url后缀>>>:HTTP请求数据 /favicon.ico直接忽略 不影响判断 利用字符串切割和索引取值获取相应数据 import…
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你写的代码,能接的住产品加需求吗? 接,是能接的,接几次也行,哪怕就一个类一片的 if...else 也可以!但接完成什么样可就不一定了,会不会出事故也不是能控制住的. 那出事故时,你说因为我写 if...else 多了导致代码烂了,但可是你先动的手啊:你说的需求还得加.你说的老板让上线.你说的合同都签了,搬砖码农的我没办法,才以堆代码平需求,需求太多不好搞,我才以搬砖平需求!诸侯…
#!/usr/bin/env python # -*- coding: utf- -*- import socket import select class MyRequest: """ 从请求头请求体获取的信息封装的request对象中 """ def __init__(self,data): header_body=data.decode('utf-8') header_str,body_str=header_body.split('\r\n…
1,加载Controller     我们需要创建 一个ControllerHelper类,让它来处理下面的逻辑:      通过ClassHelper我们可以获取所有定义了Controller注解的类,可以通过反射获取该类中所有带有Action注解的方法,获取Action注解中的请求表达式,进而获取请求方法与请求路径,封装一个请求对象(Request)和处理对象(Handler),最后将Request与Handler建立一个映射关系,存入一个Action Map中,并提供一个可以根据请求方法与…
我们在Controller中定义了Service成员变量,然后在Controller的Action方法中调用Service成员变量的方法,那么如果实现Service的成员变量? 之前定义了@Inject注解,就用它来实现Service是例话,那么谁来实例化呢. 不是开发者通过new的方式来实例化,而是通过框架自身来实例化,像这类实例化过程称为IOC(控制反转),控制不是由开发者来决定,而是反转给框架了.一般也将控制反转称为DI(依赖注入),可以理解为将某个类需要依赖的成员注入到这个类中,那么我们…
实现Bean容器    使用ClassHelper可以获取所加载的类,但无法通过类来实例化对象,因此我们需要提供一个反射工具类,让它封装java反射相关的API,对外提供更好用的工具方法.将该类命名为ReflectionUtil,代码如下: package org.smart4j.framework.org.smart4j.framework.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.la…
一  定义框架配置项 在项目的src/main/resources目录下创建一个名为smart.propertiesd的文件,文件的内容如下: smart.framework.jdbc.driver=com.mysql.jdbc.Driver smart.framework.jdbc.url=jdbc:mysql://localhost:3306/jack smart.framework.jdbc.username=root smart.framework.jdbc.password=root…
import socket def handle_request(client): data = client.recv(1024) client.send("HTTP/1.1 200 OK\r\n\r\n") client.send("<h1>Hello word</h1>") def main(): sockobj = socket.socket(socket.AF_INET,socket.SOCK_STREAM) sockobj.bin…