Controller(控制器)整个revel都是围绕它处理所有请求

控制器可以是任何直接或间接内嵌了`*revel.Controller`类型的结构,如:

type AppController struct {
*revel.Controller
}

`*revel.Controller`必须位于结构的第一个字段,并且是匿名内嵌方式。

`revel.Controller`是一次请求的上下文,包含请求数据及返回数据。

type Controller struct {
Name string // controller名称
Type *ControllerType // controller的类型描述
MethodType *MethodType // 被调用的action的类型描述
AppController interface{} // controller实例

Request *Request // 请求体
Response *Response // 返回体
Result Result // server处理的数据

Flash Flash // flash信息,生命周期为一个请求
Session Session // 存储cookies
Params *Params // 请求的参数
Args map[string]interface{} // 每一个请求action传入的参数
RenderArgs map[string]interface{} // 传递给模板的参数
Validation *Validation // 数据验证器
}

// 请求参数
// 包含:
// - URL 请求URL
// - Form 表单值
// - File 上传的文件
type Params struct {
url.Values
Files map[string][]*multipart.FileHeader
}

// 请求体
type Request struct {
*http.Request
ContentType string
}

// server处理的返回体
type Response struct {
Status int
ContentType string
Headers http.Header
Cookies []*http.Cookie

Out http.ResponseWriter
}

对于每一个请求,Revel都会实例化一个对应的`Controller`,并为内嵌的`*revel.Controller`结构的相应字段赋值,因此,Revel并不会在不同的请求之间共享`Controller`

具体请移步:

Go Revel - server.go 源码分析 http://www.cnblogs.com/hangxin1940/p/3265538.html

Go Revel - Filter(过滤器) http://www.cnblogs.com/hangxin1940/p/3266311.html

Go Revel - Controllers(控制器)的更多相关文章

  1. 使用Revel(go)开发网站

    Revel很好的利用了Go语言的goroutine,把每一个request都分配到了goroutine里.不用再写一大堆的回调.如果你写过nodejs的话就会深刻的体会到callback hell是什 ...

  2. 使用Revel(go)开发网站(全面版)

    Revel很好的利用了Go语言的goroutine,把每一个request都分配到了goroutine里.不用再写一大堆的回调.如果你写过nodejs的话就会深刻的体会到callback hell是什 ...

  3. ASP.NET MVC系列:添加控制器

    基于MVC的应用程序包含三个部分 Models(模型):对应用程序的数据进行处理 Views(视图):动态生成HTML,显示数据 Controllers(控制器):应用程序中处理用户交互的部分,处理浏 ...

  4. 从头开始编写一个Orchard网上商店模块(6) - 创建购物车服务和控制器

    原文地址: http://skywalkersoftwaredevelopment.net/blog/writing-an-orchard-webshop-module-from-scratch-pa ...

  5. PHP获取项目所有控制器方法名称

    PHP获取项目所有控制器方法名称 //获取模块下所有的控制器和方法写入到权限表 public function initperm() { $modules = array('admin'); //模块 ...

  6. beego 自定义控制器与路由

    框架浅析 这是之前使用bee创建的webapp目录层级结构: ├── conf 配置文件 │ └── app.conf ├── controllers 控制器 │ └── default.go ├── ...

  7. laravel创建控制器

    一.创建 php artisan make:controller Admin/IndexController 二.目录 app/Http/Controllers/ 控制器存储目录 [ C控制器 ]

  8. ASP.NET Core Web API 控制器与方法返回输出

    DATA ACCESS LAYER 在一些不同的示例教程中,我们可能看到 DAL 的实现在主项目中,并且每个控制器中都有实例.我们不建议这么做. 当我们编写 DAL 时,我们应该将其作为一个独立的服务 ...

  9. SpingMVC 核心技术帮助文档

    声明:本篇文档主要是用于参考帮助文档,没有实例,但几乎包含了SpringMVC 4.2版本的所有核心技术,当前最新版本是4.3,4.2的版本已经经是很新的了,所以非常值得大家一读,对于读完这篇文档感觉 ...

随机推荐

  1. 用GDI+DrawImage画上去的图片会变大

    问题: 用GDI+DrawImage画上去的图片会变大 解释: Status DrawImage(Image *image,const Point &point);两参数的这个接口是这么设计的 ...

  2. [转]JVM参数设置、分析

    不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java ...

  3. 上传下载 demo

    import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import org.springf ...

  4. 并发测试 JavaDemo

    https://github.com/oldratlee/fucking-java-concurrency /** * @author Jerry Lee */ public class Testee ...

  5. 转:ECharts图表组件入门教程之Theme:ECharts图表的皮肤是什么?如何给图表换主题(皮肤)Theme?

    一.什么是ECharts图表的皮肤(主题)? 针对这个问题我只能这样回答,ECharts图表的主题(皮肤)就犹如人的衣服一样,是用来衬托和渲染主体,使其变得更加美观好看的目的.你去过ECharts图表 ...

  6. java中比较两个double类型值的大小

    非整型数,运算由于精度问题,可能会有误差,建议使用BigDecimal类型,具体 BigDecimal的详细说明参考jdk开发帮助文档. import java.math.BigDecimal; pu ...

  7. [Leet Code]Path Sum II

    此题如果 #1 和 #4 判断分支交换,大集合就会超时(因为每次对于非叶子节点都要判断是不是叶子节点).可见,有时候if else判断语句也会对于运行时间有较大的影响. import java.uti ...

  8. mui做的苹果app生成ipa后放到自己的网站上让人下载安装

    苹果的APP不通过app store的话就只能是要那个$299的企业签名证书了.这个我还不会搞,没有搞过!!! 别人已经帮忙签名好的ipa,自己再传到自己的服务器上让人下载安装,步骤如下: Hbuid ...

  9. HTML5学习笔记(九):选择器详解

    在前面的笔记中我们已经接触过几种常见的选择器,本笔记我们将深入了解CSS的选择器. 元素选择器 最常见的 CSS 选择器是元素选择器.换句话说,文档的元素就是最基本的选择器.在 W3C 标准中,元素选 ...

  10. mysql protocol

    http://hutaow.com/blog/2013/11/06/mysql-protocol-analysis/ https://dev.mysql.com/doc/internals/en/cl ...