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. Avito Cool Challenge 2018(div1+2)

    A. Definite Game: 题意:输入N,输出最小的结果N-x,其中x不少N的因子. 思路:N=2时,输出2:其他情况输出1:因为N>2时,N-1不会是N的因子. #include< ...

  2. php-fpm简介

    What is PHP-FPM? PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with ...

  3. Nginx访问限制模块limit_conn_zone 和limit_req_zone配置使用

    nginx可以通过limit_conn_zone 和limit_req_zone两个组件来对客户端访问目录和文件的访问频率和次数进行限制,另外还可以善用进行服务安全加固,两个模块都能够对客户端访问进行 ...

  4. Vue2.x directive自定义指令

    directive自定义指令 除了默认设置的核心指令( v-model 和 v-show ),Vue 也允许注册自定义指令. 注意,在 Vue2.0 里面,代码复用的主要形式和抽象是组件——然而,有的 ...

  5. PHP com组件的使用 (环境搭建 以及测试)

    COM 组件在实际当前的软件开发中依然是比较重要,包括对于串口开发的人员,软件插件使用的人员,PHP 已经为我们添加了对于 COM的支持,可以很好的解决我们在开发中可能碰到的一些问题.一下是开发环境的 ...

  6. Centos7修改文件夹权限和用户名用户组

    Linux系统下经常遇到文件或者文件夹的权限问题,或者是因为文件夹所属的用户问题而没有访问的权限.根据我自己遇到的情况,对这类问题做一个小结.在命令行使用命令“ll”或者“ls -a”,可以查看文件或 ...

  7. nyoj 魔法少女

    魔法少女 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 前些时间虚渊玄的巨献小圆着实火了一把. 在黑长直(小炎)往上爬楼去对抗魔女之夜时,她遇到了一个问题想请你帮忙. 因为 ...

  8. oracle之 11.2.0.4 bbed安装

    一. bbed安装: 1.ORACLE 11G下安装BBED,需要从ORACLE 10G中复制三个包 sbbdpt.o .ssbbded.o 并将两个文件移到$ORACLE_HOME/rdbms/li ...

  9. Oracle RAC 归档 与 非归档 切换

    Oracle 的生产库都是启动在归档模式下,RAC下归档非归档的切换和单实例也是一样的,都是在MOUNT模式下执行ALTER DATABASE ARCHIVELOG/NOARCHIVELOG;命令.  ...

  10. tyvj1659中中救援队

    题目:http://www.joyoi.cn/problem/tyvj-1659 发现每条边要走两次,每个点要走它连接的边数次. 所以把边的权值赋成 本身的值+两个端点的点权,求最小生成树即可. !边 ...