dotweb属于一个Web框架,希望通过框架行为,帮助开发人员快速构建Web应用,提升开发效率,减少不必要的代码臃肿。

框架地址:https://github.com/devfeel/dotweb

dotweb包含以下几个常用对象:

  • App(dotweb) App容器,为Web请求处理提供必要的容器类功能。
  • HttpServer 用于真正处理Web请求的服务模块。
  • HttpContext 用于提供单次请求处理中请求信息与响应信息的快捷处理与唯一入口。
  • Response 用于从服务器向用户发送输出的结果。
  • Request 用于从用户那里取得信息。
  • Session 用于存储关于某个连接会话的信息,或者修改相关的设置。目前支持存储本机内存与Redis分布式。

本章主要对HttpContext对象展开介绍。

HttpContext实现Context接口,主要承担单次请求处理中请求信息、响应信息、全局对象的快捷功能与唯一入口。

主要方法

方法 描述
HttpServer()
 获取当前请求所属HttpServer对象
Response()
 获取当前请求的Response对象
Request()
 获取当前请求的Request对象
WebSocket()
 如果是WebSocket连接,返回WebSocket对象
HijackConn()
 如果是Hijack请求,返回Hijack连接对象
AppContext()
 返回全局对象容器
Cache()
 返回全局缓存对象
Items()
 返回当前请求流程内有效的对象容器
ViewData()
 返回用于模板数据传输的对象容器
Session()
 返回当前请求有效的Session对象
Redirect()
 提供跳转支持,默认建议302跳转
QueryString()
 指定Key查询Get参数的值
PostFormValue()
 指定Key查询Post参数的值
GetRouterName()
 指定Key查询动态路由值
ReadCookie()
 指定Key读取Cookie对象
Bind()
 将Json、Xml、Form提交的属性绑定指定结构体
Write()
 指定状态码输出二进制内容
WriteString()\WriteStringC()
 输出字符串,默认text/plain,其中以C结尾的方法支持设置状态码
WriteHtml()\WriteHtmlC()
 输出Html字符串,默认text/html,其中以C结尾的方法支持设置状态码
WriteJson()\WriteJsonC()
 输出Json字符串,默认application/json,其中以C结尾的方法支持设置状态码
WriteJsonp()
 输出适配Jsonp的字符串
View()ViewC()
 指定模板名称输出Html内容,其中以C结尾的方法支持设置状态码

常用功能示例:

1、获取Get参数值

func Index(ctx dotweb.Context) error {
userid := ctx.QueryString("userid")
ctx.WriteString(userid)
return nil
}

2、获取Post参数值

func Index(ctx dotweb.Context) error {
userid := ctx.PostFormValue("userid")
ctx.WriteString(userid)
return nil
}

3、获取Post Body

func Index(ctx dotweb.Context) error {
data := ctx.Request().PostBody()
ctx.Write(, data)
return nil
}

4、获取上传的文件

func Index(ctx dotweb.Context) error {
file, err := ctx.Request().FormFile("filekey")
if err != nil {
ctx.WriteString("upload file error:", err.Error())
} else {
ctx.WriteString(file.FileName())
}
return nil
}

5、读取Cookie

func Index(ctx dotweb.Context) error {
c, err := ctx.ReadCookie("UserName")
if err!= nil{
ctx.WriteString(err.Error())
}else {
ctx.WriteString(c.Value)
}
return nil
}

6、写入Session值

func Index(ctx dotweb.Context) error {
ctx.Session().Set("UserID", )
ctx.WriteString("set session success")
return nil
}

7、输出字符串(默认200状态码)

func Index(ctx dotweb.Context) error {
ctx.WriteString("welcome to dotweb")
return nil
}

8、输出Json字符串(默认200状态码)

func Index(ctx dotweb.Context) error {
type User struct {
UserName string
Age int
}
u:=&User{
UserName:"dotweb",
Age:,
}
ctx.WriteJson(u)
return nil
}

9、指定模板名称输出Html字符串

type UserInfo struct {
UserName string
Sex bool
} type BookInfo struct {
Name string
Size int64
} func TestView(ctx dotweb.Context) error {
ctx.ViewData().Set("data", "图书信息")
ctx.ViewData().Set("user", &UserInfo{UserName: "user1", Sex: true})
m := make([]*BookInfo, )
m[] = &BookInfo{Name: "book0", Size: }
m[] = &BookInfo{Name: "book1", Size: }
m[] = &BookInfo{Name: "book2", Size: }
m[] = &BookInfo{Name: "book3", Size: }
m[] = &BookInfo{Name: "book4", Size: }
ctx.ViewData().Set("Books", m) err := ctx.View("testview.html")
return err
}

10、跳转地址

func Redirect(ctx dotweb.Context) error {
err := ctx.Redirect(http.StatusFound, "http://www.baidu.com")
if err != nil {
ctx.WriteString(err)
}
return err
}

11、设置Header

func Index(ctx dotweb.Context) error {
ctx.Response().Header().Set("Content-Type", "text/html; charset=utf-8")
ctx.WriteString("welcome to dotweb")
return nil
}

以上简单示例,展示了如何通过Context获取请求信息,设置输出信息,使用Session等。

更多代码可参考 https://github.com/devfeel/dotweb-example

欢迎各位加入我们的go语言QQ群:193409346

dotweb框架之旅 [四] - 常用对象-HttpContext的更多相关文章

  1. dotweb框架之旅 [二] - 常用对象-App(dotweb)

    dotweb属于一个Web框架,希望通过框架行为,帮助开发人员快速构建Web应用,提升开发效率,减少不必要的代码臃肿. dotweb包含以下几个常用对象: App(dotweb) App容器,为Web ...

  2. dotweb框架之旅 [三] - 常用对象-HttpServer

    dotweb属于一个Web框架,希望通过框架行为,帮助开发人员快速构建Web应用,提升开发效率,减少不必要的代码臃肿. dotweb包含以下几个常用对象: App(dotweb) App容器,为Web ...

  3. dotweb框架之旅 [一] - HelloWorld

    一直想着,要系统性的写一些dotweb使用的文章,之前拖延了不少时间,今天,下定决定,算是正式的开始,也请大家一起监督. dotweb,是一款追求简约大方的go web框架,正如其github项目主页 ...

  4. Entity Framework 实体框架的形成之旅--利用Unity对象依赖注入优化实体框架(2)

    在本系列的第一篇随笔<Entity Framework 实体框架的形成之旅--基于泛型的仓储模式的实体框架(1)>中介绍了Entity Framework 实体框架的一些基础知识,以及构建 ...

  5. Spring框架的第四天(整合ssh框架)

    ## Spring框架的第四天 ## ---------- **课程回顾:Spring框架第三天** 1. AOP注解方式 * 编写切面类(包含通知和切入点) * 开启自动代理 2. JDBC模板技术 ...

  6. Android应用框架中的四个核心要点

    Android应用框架中的四个核心要点:活动(Activity).消息(Intent).视图(View).任务(Task) (一)活动Activity Android系统内部有专门的Activity堆 ...

  7. Apworks框架实战(四):使用Visual Studio开发面向经典分层架构的应用程序:从EasyMemo案例开始

    时隔一年,继续我们的Apworks框架之旅.在接下来的文章中,我将逐渐向大家介绍如何在Visual Studio中结合Apworks框架,使用ASP.NET Web API和MVC来开发面向经典分层架 ...

  8. JavaScript常用对象的方法和属性

    ---恢复内容开始--- 本文将简单介绍JavaScript中一些常用对象的属性和方法,以及几个有用的系统函数. 一.串方法 JavaScript有强大的串处理功能,有了这些串方法,才能编写出丰富多彩 ...

  9. DOM_05之DOM、BOM常用对象

    1.HTML DOM常用对象之Table:①创建:createTHead():createTBody():createTFoot():②删除:deleteTHead():deleteTFoot():③ ...

随机推荐

  1. 第6周-接口、内部类与Swing

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  2. 201521123121 《Java程序设计》第5周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句 ...

  3. 201521123093 java 第十四周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. MySQL中的库操作和表操作 库操作: 显示所有数据库: show databases; 创建数据库: crea ...

  4. 201521123049 《JAVA程序设计》 第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

  5. Linux第一篇【介绍、安装Ubuntu、基本目录结构】

    Linux介绍 Linux:不管是不是我们这些学编程的都肯定会听说过这么一个系统,一般地,我们在PC端都是用Windows操作系统,那我们学习Linux操作系统有什么用呢??? 由于我们的JAVAEE ...

  6. 03_Ext_Viewport_Window_Dialog

    Viewport Viewport 代表整个浏览器窗口,直接渲染到document.body节点,取代页面中的所有内容.一般作为应用程序主界面. 随着浏览器显示区域的大小自动改变,一个页面中只能有一个 ...

  7. Linux 安装 mysql 并配置

    1.下载 下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downloads 下载版本:我这里选择的5.6.33,通用版,linux下64位 也可 ...

  8. grunt学习笔记1 理论知识

    你需要检查js语法错误,然后再去压缩js代码.如果这两步你都去手动操作,会耗费很多成本.Grunt就能让你省去这些手动操作的成本. “—save-dev”的意思是,在当前目录安装grunt的同时,顺便 ...

  9. Split分割字符串

    第一种方法:打开vs.net新建一个控制台项目.然后在Main()方法下输入下面的程序. string s="abcdeabcdeabcde"; string[] sArray=s ...

  10. 每周分享一 之 webSocket

    一:什么是webSocket ? webSocket是HTML5出的新协议,WebSocket协议支持,在受控环境中运行不受信任代码的客户端与选择了该代码通信的远程主机之间进行双向通信. 简单翻译一下 ...