import tornado.ioloop
import tornado.web
import tornado.httpserver # 非阻塞
import tornado.options # 提供了多种选择 python xxx.py --port=xxxx
from tornado.options import define,options
define('port',default=8000,help='run port',type=int) # windows通过Ctrl+鼠标左键
define('version',default=0.1,help='version',type=str) class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render("ces.html") # 写入页面 class AHandler(tornado.web.RequestHandler):
def get(self):
self.set_header("a",1) # 设置响应头
self.add_header("b",2) # 添加 可重复名字
self.clear_header("a") # 撤销(删除) class SendHandler(tornado.web.RequestHandler):
def get(self):
self.write("zzz")
# self.flush() 有flush 仅对send_error不起作用
self.write("不怕flush")
# self.finish() # 彻底结束
self.send_error(404) # 主动发出错误码 def write_error(self, status_code, **kwargs): # 会覆盖前面的缓冲区内的内容
self.write("重写错误信息,覆盖前面的缓冲区内的内容")
self.render("error.html") class NotFoundHandler(tornado.web.RequestHandler):
def write_error(self, status_code, **kwargs):
self.write("路由没找到") class StatusHandler(tornado.web.RequestHandler):
def get(self):
self.set_status(404, "error") # 修改状态码 class IndexHandler(tornado.web.RequestHandler):
def set_default_headers(self):
print("first--设置headers") def initialize(self):
print("second--初始化") def prepare(self):
print("third--准备工作") def get(self):
print("fourth--处理get请求") def post(self):
print('fourth--处理post请求') def write_error(self, status_code, **kwargs):
print("fifth--处理错误") def on_finish(self):
print("sixth--c处理结束,释放资源--") class GetHandler(tornado.web.RequestHandler):
def get(self): # 处理get请求
name = self.get_argument("name","no")
self.write(name)
name = self.get_arguments("name")
print(name) # list
self.write(str(name)) def post(self, *args, **kwargs):          # 处理post请求
name = self.get_argument("name","no")
passwd = self.get_argument("password","no")
self.write("name: %s <br> password:%s" %(name,passwd))
name1 = self.get_body_argument("name","none")
print(name1) class UserHandler(tornado.web.RequestHandler):
def get(self,name,age):
self.write("name:%s<br>age:%s" %(name,age)) application = tornado.web.Application(
handlers=[ # 列表按顺序匹配
(r"/", MainHandler),
(r"/a", AHandler),
(r"/send", SendHandler),
(r"/sta", StatusHandler),
(r"/index",IndexHandler),
(r"/get",GetHandler),
(r"/user/(.+)/([0-9]+)",UserHandler),
(r"/user1/(?P<age>[0-9]+)/(?P<name>.+)",UserHandler), # ?P<>取名
(r"/.*", NotFoundHandler)
],
template_path='templates', # 表明页面html的路径
debug=True # 上传代码后服务器自动重启
) if __name__ == '__main__':
tornado.options.parse_command_line() # 通过sys.arg获取命令行输入参数(python xxx.py --port=xxx)
print(options.port)
print(options.version)
http_server = tornado.httpserver.HTTPServer(application) # 非阻塞
application.listen(options.port)
tornado.ioloop.IOLoop.instance().start() # 启动io循环

# 知识点
# 请求响应
# 浏览器发起请求(url)--> 服务器开始处理请求,处理结束 --> 返回处理结果到页面-->页面展示 # 增删改header
# self.set_header
# add_header
# clear_header # 改写错误信息
# 重写write_error方法 def write_error
# 找不到路由(写上匹配任何路由 | r"/.*",NotFoundHandler | ,再改写路由错误信息) # 修改状态码 status
# self.set_status(404, error) # tornado接受请求处理过程 (了解)
# first--设置headers
# second--初始化
# third--准备工作
# fourth--处理get请求
# sixth--c处理结束,释放资源--

tornado-请求与响应的更多相关文章

  1. 2.tornado请求与响应

    之前我们介绍了tornado的基础流程,但还遗留了一些问题.今天我们就来解决遗留问题并学习新的内容 settings,使用tornado.web.Application(handler, **sett ...

  2. tornado请求与响应

    tornado中处理请求与响应的类如下, 所有视图类必须继承该类: tornado.web.RequestHandler 一. 响应之self.write()方法 1.  该方法可返回值的类型: 当返 ...

  3. tornado的请求与响应

    tornado请求与响应相关 一.配置文件config.py 中的settings 有哪些配置: debug:设置tornado是否工作再调试模式下,默认为false 即工作再生产模式下 true的特 ...

  4. 2.(基础)tornado的请求与响应

    之前我们介绍了tornado 的基础流程,但是还遗留了一些问题,今天我们就来解决这些遗留问题并学习新的内容 settings,使用tornado.web.Application(handler, ** ...

  5. tornado 03 请求与响应

    tornado 03 请求与响应 一.请求与响应 浏览器与服务器之间沟通的到底是什么信息 #服务器在后台一直保持运行着 #浏览器通过URL(路由.地址)发送请求 #服务器接收请求了通过tornado处 ...

  6. Django底层剖析之一次请求到响应的整个流程

    As we all know,所有的Web应用,其本质上其实就是一个socket服务端,而用户的浏览器就是一个socket客户端. #!/usr/bin/env python #coding:utf- ...

  7. 初入网络系列笔记(4)HTTP请求和响应

    一.借鉴说明,本博文借鉴以下博文 1.starok,HTTP必知必会,http://www.cnblogs.com/starstone/p/4890409.html 2.CareySon,HTTP协议 ...

  8. http协议(二)请求和响应报文的构成

    http协议用于客户端和服务器之间的通信,请求访问资源的一方称为客户端,而提供资源响应的一方称为服务器端. 下面就是客户端和服务端之间简单的通信过程 PS:请求必须从客户端建立通信,服务端没收到请求之 ...

  9. iOS开发——网络篇——HTTP/NSURLConnection(请求、响应)、http响应状态码大全

    一.网络基础 1.基本概念> 为什么要学习网络编程在移动互联网时代,移动应用的特征有几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图只有通过网络跟外界进行数据交互.数据更新, ...

  10. struts2基础——请求与响应、获取web资源

    一.请求与响应 Action1.含义:(1) struts.xml 中的 action 元素,也指 from 表单的 action 属性,总之代表一个 struts2 请求.(2) 用于处理 Stru ...

随机推荐

  1. chapter02 朴素贝叶斯分类器对新闻文本数据进行类型预测

    基本数学假设:各个维度上的特征被分类的条件概率之间是相互独立的.所以在特征关联性较强的分类任务上的性能表现不佳. #coding=utf8 # 从sklearn.datasets里导入新闻数据抓取器f ...

  2. CodeForces - 285E: Positions in Permutations(DP+组合数+容斥)

    Permutation p is an ordered set of integers p1,  p2,  ...,  pn, consisting of n distinct positive in ...

  3. 2018CCPC女生赛(树上莫队)

    签到题这里久懒得写了. B - 缺失的数据范围 Total Submission(s): 2602    Accepted Submission(s): 559 题意:求最大的N,满足N^a*[log ...

  4. (6)time&datetime(时间模块)

    什么是时间模块 就是处理时间相关的功能 如用户注册的时间.统计程序运行的时间等 time 模块  计算机中有三种时间 1.时间戳 从1970年到今天,这个时间段中间经历的秒数 获取时间戳:time.t ...

  5. CTF-练习平台-Misc之 这是一张单纯的图片??

    一.这是一张单纯的图片?? 分析图片,首先查看图片属性 没有发现有用的信息,再用WinHex打开 发现最后面有点眼熟,和ASCII表对应后发现是flag

  6. 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.4 LHS简介&Pattern

    LHS简介 在规则文件组成章节,我们已经了解了LHS的基本使用说明.LHS是规则条件部分的统称,由0个或多个条件元素组成.前面我们已经提到,如果没有条件元素那么默认就是true. 没有条件元素,官方示 ...

  7. 类名.fromObject(obj)静态方法

  8. SharedImageCollection

    https://documentation.devexpress.com/#WindowsForms/clsDevExpressUtilsSharedImageCollectiontopic The ...

  9. kettle--window开发环境和linux运行环境的迁移

    首先要做的是将kettle在linux下搭建好. 一.搭建linux的kettle环境 1.1解压 (my_python_env)[root@hadoop26 ~]# .zip -d /usr/loc ...

  10. vue 项目中,定时器(setInterval)的写法

    vue 项目中,定时器(setInterval)的写法: fetchJobList是一个方法,里面有dispatch一个action进行请求接口的代码. data () { return { inte ...