groupBox和panel
- web框架需要快速入门
Web框架是一组工具的集合, 为你的Web应用开发提供了基础环境, 从如何获取参数,到如何返回结果, 从如何获取cookie到如何修改返回的http header。Web框架帮你隐藏了HTTP协议的细节, 你作为一个使用者只需要关心如何实现功能,而不需要底层到底实现的是什么。 - Web框架很多, 不同的语言都有自己实现的不同的Web框架. 每一种都有各自不同的实现思路, 有不同的开发哲学, 不管是就换工作换开发栈的需要, 还是学习本身的需要, 快速的多掌握几个框架还是很有必要的.
- web框架的工作方式
- 现代的Web框架,不管其采用何种设计思想, 开发哲学, 根本的工作模式是相似的,均是从接收HTTP请求,处理HTTP的各项参数,路由到相应的用户实现的处理器上, 再获取返回的结果, 生成HTTP的Response。
- 流程图:


- web框架的工作流程
- URL路由
一般来说现在大部分的Web框架对于将HTTP请求交给哪一个逻辑来处理, 是由URL路由框架的模块来决定的. URL路由模块会提供一些函数或者装饰器等方式, 让用户来写一些代码, 将URL和控制器的绑定关系注册到框架中. 大多数的框架都支持在URL路由的定义中使用正则表达式.有的支持在URL中定义参数,框架会自动在URL中将参数截取出来保存在框架的上下文中以供控制器使用. - 控制器
控制器是用户自己实现的类或者函数, 用来处理HTTP请求, 确切的说是指定URL发来的请求, 并且将业务逻辑的结果返回给框架,有框架去决定如何解析成HTTP的响应数据输出.框架需要给控制器提供HTTP请求的完整上下文环境,那么我们在学习框架使用的时候, 首先就要在文档中整理清楚下面的这些问题: - 如何获取Query String参数?
QueryString是url中?后定义的由&符号分割的key=value形式的参数, 框架会在解析HTTP协议的时候将这个部分的数据转化成比如字典之类的数据结构存起来, 然后提供相应的API去访问.但是QueryString都是只读的, 有一些框架会提供一些工具帮助用户组装URL, 比如Flask提供了url_for用来组装转跳到指定控制器的URL, 方便你在页面上渲染相应的标签 - 如何获取Form表单的数据? json?boby ?
POST和PUT方法是HTTP协议中主要的接收数据的语义, 传输数据需要相应的编码方式将数据编码后放在HTTP协议的Body部分. 编码方式现在主要有两种, 一种是最古老的用Form表单编制数据的方式, 另外一种是将数据用json字符串直接放到HTTP协议的body部分. 网页上的应用多数会采用Form表单, 因为这是浏览器对Form表单的默认支持, 而App的后端大多采用JSONString放在body来传数据的方式, 优点是可以传送复杂的数据结构.Web框架会提供相应的API去按照这两种方式获取Body的内容, 但是有的框架会根据header里的content-type来判断是不是可以按照JSON去解析body的内容. - 如何读取和修改cookie?
cookie是浏览器(客户端)在多次请求之间共享数据的一个数据结构, 因为HTTP协议是无状态的,所以cookie在每一次请求的时候都会从浏览器放到HTTP请求中传到服务端, 在服务端生成响应的时候也会写入HTTP响应里传回浏览器. 从而实现了在两次请求之间共享了数据. Web框架会提供对应的API去读取和修改cookie的值, cookie是key-value形式的, 访问的方式应该和字典类似. - 如何获取 headers ?
headers对应到HTTP协议中HTTP请求的头部, 是一个key-value形式的数据格式.headers是HTTP请求的一些额外的描述信息, 比如客户端类型, 字符编码方式, 认证信息等. headers的key是固定的, 你不能自己随便定义一些特殊key, 并且headers部分也是只读的.框架会提供对应API去读取headers. - 如何实现页面转跳 ?
有些时候在处理完数据后需要通知浏览器转跳到对应的看数据的URL上去, 就需要在文档里找找如何实现页面转跳. 服务端返回给客户端一个HTTP协议中的301或者302的状态, 就可以让浏览器去执行转跳的动作, 作出这样子的HTTP响应在框架中会有对应的API. - 如何输出Http响应 ?
大多数的Web框架都是用函数(方法)的返回值来作为Http响应的body的, 所以你在很多示例中可以看到 return 'fu qiang' 这样子的写法, 框架会自动把字符串转换成Response的对象再去做编码成Http响应的操作. 针对App的API会比较方便, 输出JSON的字符串就行了. 如果是网站的话, 需要输出HTML页面,有一些框架提供了内置的模板引擎, 用于渲染输出html内容(其实不限html, xml的内容也可以由模板引擎来渲染). 有的框架自己不提供模板引擎, 你可以用你喜欢的模板引擎来渲染. - 流程图如下:


- web框架所需的开发环境
Web框架的开发环境由其实现的语言来决定, 比如说Python的pycharm 和 vscode 等 IDE 集成环境。 - web框架一些常用的配置文件
配置Web框架的一些参数,这需要直接看配置文件或者自定义配置文件 - web框架所需要的模版引擎
前面在控制器的部分提到了模板引擎, 模板引擎主要负责用数据替换模板上的占位符生成最终结果的文本. 工作方式可以简化为下图:


这里详细的说一下模板引擎部分在学习的时候要注意那一些要点:
占位符如何定义
如何定义循环
如何定义判断条件
如何对占位符加过滤器
如何定义继承模板
如何定义嵌套模板
- web框架的中间件或者钩子函数
中间件是AOP模式统一在每个请求的开始和结束部分注入代码的机制, 最常见的有两个级别的中间件, 一个是Application级别的, 也就是在应用启动和结束的时候执行注入的代码, 另一个是Request级别的, 主要是在每个请求开始和结束的时候执行, 比如统一的鉴权,数据库连接管理(打开,关闭), 统一的错误处理 都可以在这里完成.


- 统一的错误处理
框架是提供了统一错误处理机制的, 当在控制器中发生了没有捕获或者重新抛出的异常的时候, 就会执行到统一错误处理的部分。 - 鉴权
通过cookie或者auth2.0和中间件可以很轻松的实现鉴权和Session机制。 - 生产部署的方式
尽可能的做压力测试, 以至于让你的项目能够正式的上线, 需要了解如何部署生产环境。
groupBox和panel的更多相关文章
- GroupBox与Panel控件
1.GroupBox控件常常用于逻辑地组合一组控件,如RadioButton 及 CheckBox控件,显示一个框架,其上有一个标题. 2.Panel 可以包含多个控件,以便将这些控件编为一组,以便方 ...
- Panel控件的使用
我们对控件进行分组的原因不外乎三个: 1.为了获得清晰的用户界面而将相关的窗体元素进行可视化分组. 2.编程分组,如对单选按钮进行分组. 3.为了在设计时将多个控件作为一个单元来移动. 在vb.net ...
- 初识windows程序需要了解的知识点
初识一件事物我们会有陌生,我们慢慢地去了解它就会懂,让我带你们一起了解吧. 一.Form是.Net Framework 定义好的一个最基本的窗体类,具有窗体基本属性和方法 属性 ...
- 教你如何---构建良好的windows程序(初学者必看)
一使用菜单栏和工具栏 1.菜单栏和工具栏有什么作用和优点: 通过菜单栏把应用程序的功能进行分组,能够方便用户查找和使用,下图所示的菜单栏包含的每一项都是顶层菜单项,顶层菜单项下的选项称为”子菜单”或” ...
- C# 控件缩写大全+命名规范+示例
如有转载,请注明出处:http://www.cnblogs.com/flydoos/archive/2011/08/29/2158903.html C# 控件缩写大全+命名规范+示例 写程序的时候突然 ...
- C# 扩展方法奇思妙用高级篇六:WinForm 控件选择器
在Web开发中,jQuery提供了功能异常强大的$选择器来帮助我们获取页面上的对象.但在WinForm中,.Net似乎没有这样一个使用起来比较方便的选择器.好在我们有扩展方法,可以很方便的打造一个. ...
- WPF学习之路初识
WPF学习之路初识 WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...
- WindowsForm 公共控件 菜单和工具栏
公共控件 菜单栏 状态栏 布局 公共控件 textbox: text属性:用于获取或 ...
- Winform 各种属性、方法、控件
窗体是程序与用户交互的可视界面,窗体也是对象,窗体类定义了生成窗体的模版,实例化一个窗体类就产生了一个窗体. .NET框架类库的System.Windows.Forms命名空间中定义的Form类是所有 ...
随机推荐
- busybox hexdump 命令使用
http://blog.sina.com.cn/s/blog_a6559d920101gvlk.html hexdump命令是Linux下的打印16进制的利器,它可以按我们指定的格式输出16进制,特别 ...
- 使用select处理任意数目个客户的单进程程序
改写http://www.cnblogs.com/nufangrensheng/p/3587962.html中的TCP回射服务器程序,把它重写成使用select来处理任意数目个客户的单进程程序,而不是 ...
- IOS8 Playground介绍
一.Playground介绍 Playground是Xcode6中自带的Swift代码开发环境.俗话说"功欲善其事,必先利其器".曾经在Xcode5中编写脚本代码,比如编写JS,其 ...
- TP框架中ajax post请求时提示404
ajax post请求时提示404错误 TP框架中ajax post请求时提示404 找了半天是 控制器中方法有错误! 下次再遇到去控制器方法中找一步一步找,肯定能找到,我是单词拼错了!
- 让 sphinx 支持中文、日文和韩文
在国内搜索 sphinx 的话找到的资源好像都是挺久远的,无奈之下只好跑到国外去找了.听起来有点不可思议,但是最近整 sphinx 的时候突然想到 mediawiki 官方有 sphinx 的安装介绍 ...
- [SDOI2016Round1]解题报告
Day1 T1: 题意:求∑n−1i=0∑m−1j=0max((i xor j)−k,0) 由于是抑或操作.每一位都是独立的,所以能够一位一位的算贡献. f[i][a][b][c]表示第i位时.每一个 ...
- hdu5293 Tree chain problem 树形dp+线段树
题目:pid=5293">http://acm.hdu.edu.cn/showproblem.php?pid=5293 在一棵树中,给出若干条链和链的权值.求选取不相交的链使得权值和最 ...
- SQLyog之MySQL客户端的下载、安装和使用(企业版)(破解)
本博文的主要内容有 .SQLyog的下载 .SQLyog的安装 .SQLyog的使用 1.SQLyog_Enterprise的下载 比如,我这里,是放在D:\SoftWare 继续
- 数据库连接 UnicodeEncodeError: 'latin-1' codec can't encode character u'\u4eac' in position 0: ordinal not in range(256),UnicodeEncodeError: 'latin-1' codec can't encode character
处理方法就是,设置连接和游标的charset为你所希望的编码,如utf8, 连接数据库的时候加上 charset="utf8 db = MySQLdb.connect(host= '14 ...
- Facebook Oauth2.0 API调用方法
这些天搞了下Facebook API的东东,在官方网站下弄了一些接口,下面简单的把facebook的调用流程以及常用接口书序一下 :-) 当然在使用facebook api之前要有facebook账 ...