python web编程 创建一个web服务器

这里就介绍几个底层的用于创建web服务器的模块,其中最为主要的就是BaseHTTPServer,很多框架和web服务器就是在他们的基础上创建的

基础知识

要建立一个Web 服务,一个基本的服务器和一个“处理器”
是必备的。

基础的(Web)服务器是一个必备的模具。它的角色是在客户端和服务器端完成必要HTTP 交互。
在BaseHTTPServer 模块中你可以找到一个名叫HTTPServer 的服务器基本类。

处理器是一些处理主要“Web 服务”的简单软件。它们处理客户端的请求,并返回适当的文件,
静态的文本或者由CGI 生成的动态文件。处理器的复杂性决定了你的Web 服务器的复杂程度。Python
标准库提供了三种不同的处理器。

最基本,最普通的是 vanilla 处理器,被命名 BaseHTTPResquestHandler,这个可以在基本
Web 服务器的BaseHTTPServer 模块中找到。除了获得客户端的请求外,不再执行其他的处理工作,
因此你必须自己完成它们,这样就导致了出现了myhttpd.py 服务的出现。
用于SimpleHTTPServer 模块中的SimpleHTTPRequestHandler , 建立在
BaseHTTPResquestHandler 基础上,直接执行标准的GET 和HEAD 请求。这虽然还不算完美,但已经
可以完成一些简单的功能啦。
最后,我们来看下用于CGIHTTPServer 模块中的CGIHTTPRequestHandler 处理器,它可以获取
SimpleHTTPRequestHandler 并为POST 请求提供支持。它可以调用CGI 脚本完成请求处理过程,也可
以将生成的HTML 脚本返回给客户端。

BaseHTTPServer 提供基本的Web 服务和处理器类, 分别是HTTPServer 和
BaseHTTPRequestHandler
SimpleHTTPServer 包含执行GET 和HEAD 请求的SimpleHTTPRequestHandler 类
CGIHTTPServer 包含处理POST 请求和执行CGICGIHTTPRequestHandler 类

实现

#!/usr/bin/env python

from os import curdir, sep
from BaseHTTPServer import     BaseHTTPRequestHandler, HTTPServer

class MyHandler(BaseHTTPRequestHandler):

    def do_GET(self):
        try:
            f = open(curdir + sep + self.path)
            self.send_response(200)
            self.send_header(‘Content-type‘,
        ‘text/html‘)
            self.end_headers()
            self.wfile.write(f.read())
            f.close()
        except IOError:
            self.send_error(404,
        ‘File Not Found: %s‘ % self.path)

def main():
    try:
        server = HTTPServer((‘‘, 80), MyHandler)
        print ‘Welcome to the machine...‘
    print ‘Press ^C once or twice to quit‘
        server.serve_forever()
    except KeyboardInterrupt:
        print ‘^C received, shutting down server‘
        server.socket.close()

if __name__ == ‘__main__‘:
    main()
时间: 2024-10-27 10:27:24

python web编程 创建一个web服务器的相关文章

python网络编程之 创建一个socketserverTCP服务器

#encoding=utf-8#创建一个socketserverTCP服务器#高级模块,简化客户和服务器的实现from SocketServer import (TCPServer as TCP,StreamRequestHandler as SRH)from time import ctime host = ''port = 21567addr = (host,port) #从 SocketServer 的 StreamRequestHandler 类中派生出一个子类class MyReque

自己动手创建一个Web Server(非Socket实现)

目录 介绍 Web Server在Web架构系统中的作用 Web Server与Web网站程序的交互 HTTPListener与Socket两种方式的差异 附带Demo源码概述 Demo效果截图 总结 介绍 本篇文章主要介绍使用HTTPListener类型自己动手创建一个Web Server,创建的Web Server能够接收来自浏览器端的HTTP请求,并且能够传递给对应的Web站点进行处理,最后将处理结果(Html或者其他格式)返回给浏览器. 博主前面曾经介绍过使用Socket模拟Web Se

eclipes创建一个web项目web.xml不能自动更新的原因(web.xml和@WebServlet的作用)

在eclipse中创建一个Web项目的时候,虽然有web.xml生成,但是再添加Servlet类文件的时候总是看不见web.xml的更新,所以异常的郁闷!上网查了查,原来我们在创建Web项目的时候,会弹出一个对话框,“Dynamic web module version”这个选项默认成了3.0,按照老规范,应该是在eclipse的WebContent \ WEB-INF \ 目录下创建web.xml的.而新规范是可以不用web.xml的,如tomcat 7.0就支持新规范,这样相关的servle

使用eclipse插件创建一个web project

使用eclipse插件创建一个web project 首先创建一个Maven的Project如下图 我们勾选上Create a simple project (不使用骨架) 这里的Packing 选择 war的形式 由于packing是war包,那么下面也就多出了webapp的目录 由于我们的项目要使用eclipse发布到tomcat下面,这里我们需要先把项目转成dynamic web project 在我们的项目上点击右键,选择properties 并找到 Project Facets ,并点

Step by Step 创建一个Web Service

  (一)创建Web Service 创建一个新的解决方案,第一个项目类型选择ASP.NET Empty Web Application     添加一个新项目 Web Service     然后再创建一个类Contact   代码分别如下. Contact.cs:   HelloWebService.asmx:     (二)创建客户端 下面创建一个客户端调用Web Service,检验一下是否正确.创建一个ASP.NET Empty Web Application     添加服务引用  

使用CXF+spring+restful创建一个web的接口项目

此文为http://blog.csdn.net/zxnlmj/article/details/28880303的下文,在其基础上添加restful功能 1.添加restful的所需jar包 jsr311-api-1.0.jar CXF与JAX-RS版本对应问题,参考自:http://bioubiou.iteye.com/blog/1866871 CXF支持REST风格的Web服务:JAX-RS2.0(JSR-339)和JAX-RS1.1(JSR-311)的Java API. CXF2.7.0支持

使用CXF+spring创建一个web的接口项目

一.web project整合spring 1.1.打开Myeclipse,建立web project(eclipse为dynamic web project),使用J2EE5.0. 1.2.添加Srping的基本jar包(无需事务等) org.springframework.beans-3.1.1.RELEASE.jar commons-logging.jar org.springframework.aop-3.1.1.RELEASE.jar org.springframework.asm-3

IntelliJ IDEA 中配置Maven以及创建一个Web项目

IntelliJ IDEA 中配置Maven Step.1 File-Settings Step.2 使用Maven创建一个Web项目 Step.1 File-New-Project Step.2

flask 创建一个web

创建一个web pip install flask from flask import Flask app=Flask(__name__) @app.route('/') def index(): return 'hello' 运行 flask run 原文地址:https://www.cnblogs.com/buchizaodian/p/11142154.html