dotweb框架之旅 [四] - 常用对象-HttpContext
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的更多相关文章
- dotweb框架之旅 [二] - 常用对象-App(dotweb)
dotweb属于一个Web框架,希望通过框架行为,帮助开发人员快速构建Web应用,提升开发效率,减少不必要的代码臃肿. dotweb包含以下几个常用对象: App(dotweb) App容器,为Web ...
- dotweb框架之旅 [三] - 常用对象-HttpServer
dotweb属于一个Web框架,希望通过框架行为,帮助开发人员快速构建Web应用,提升开发效率,减少不必要的代码臃肿. dotweb包含以下几个常用对象: App(dotweb) App容器,为Web ...
- dotweb框架之旅 [一] - HelloWorld
一直想着,要系统性的写一些dotweb使用的文章,之前拖延了不少时间,今天,下定决定,算是正式的开始,也请大家一起监督. dotweb,是一款追求简约大方的go web框架,正如其github项目主页 ...
- Entity Framework 实体框架的形成之旅--利用Unity对象依赖注入优化实体框架(2)
在本系列的第一篇随笔<Entity Framework 实体框架的形成之旅--基于泛型的仓储模式的实体框架(1)>中介绍了Entity Framework 实体框架的一些基础知识,以及构建 ...
- Spring框架的第四天(整合ssh框架)
## Spring框架的第四天 ## ---------- **课程回顾:Spring框架第三天** 1. AOP注解方式 * 编写切面类(包含通知和切入点) * 开启自动代理 2. JDBC模板技术 ...
- Android应用框架中的四个核心要点
Android应用框架中的四个核心要点:活动(Activity).消息(Intent).视图(View).任务(Task) (一)活动Activity Android系统内部有专门的Activity堆 ...
- Apworks框架实战(四):使用Visual Studio开发面向经典分层架构的应用程序:从EasyMemo案例开始
时隔一年,继续我们的Apworks框架之旅.在接下来的文章中,我将逐渐向大家介绍如何在Visual Studio中结合Apworks框架,使用ASP.NET Web API和MVC来开发面向经典分层架 ...
- JavaScript常用对象的方法和属性
---恢复内容开始--- 本文将简单介绍JavaScript中一些常用对象的属性和方法,以及几个有用的系统函数. 一.串方法 JavaScript有强大的串处理功能,有了这些串方法,才能编写出丰富多彩 ...
- DOM_05之DOM、BOM常用对象
1.HTML DOM常用对象之Table:①创建:createTHead():createTBody():createTFoot():②删除:deleteTHead():deleteTFoot():③ ...
随机推荐
- 201521123096《Java程序设计》第六周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2. 书面作业 (1)clone方法 1.1 Object ...
- 201521123109《java程序设计》第二周学习总结
1. 本周学习总结 (1)学习了字符串String的类型,使用Arrays对数组的处理及其相关的应用 (2)学会使用码云 (3)了解了对象与封装 (4)学会查询Java API文件 2. 书面作业 ( ...
- for /r命令实现全盘搜索指定文件
@echo off Rem :全盘搜索指定文件并输出到文本 set "fileName=Normal.dotm" set "outPutPath=C:\result.tx ...
- 启用Oracle中的scott用户
启用Oracle中的scott用户 在Linux系统上安装Oracle服务器,有的不含有scott用户,有的scott用户被锁.下面是添加scott用户或解锁scott. 一. 验证scott用户是否 ...
- 使用IntelliJ IDEA查看类的继承关系图形
最近正好也没什么可忙的,就回过头来鼓捣过去的知识点,到Servlet部分时,以前学习的时候硬是把从上到下的继承关系和接口实现记得乱七八糟. 这次利用了IDEA的diagram,结果一目了然,也是好用到 ...
- Python学习笔记012_网络_异常
1,Python如何访问互联网? url + lib = urllib >>> # 使用urllib包下的request模块 >>> >>> i ...
- 获取OrangePI板子CPU温度
cat /sys/class/thermal/thermal_zone0/temp 读取这个文件可返回CPU温度,我看网上的说法说是要除以1000才是温度,但我这返回的数字是41...
- firefly rk3288 内核模块编译
在驱动开发的过程中,常常需要对代码进行返回的调试,如果返回的编译再烧写内核,势必会浪费开发人员大量的时间和心力,加班加点那是时常的事.为此linux提供了编译内核模块的方式,无需返回烧写内核,只需in ...
- Python基础知识总结
看了一个礼拜Python的书,断断续续的看了一大半.今天刚好没有课,想着也没什么事情干,就把这几天Python总结一下,都是一些基础知识 变量和对象的引用 在python中一切都是对象,不像C,jav ...
- 云计算-openstack基础构架以及服务方式详解
一:什么是openstack 是Rackspace(美国航天局)和NASA(一家公司)共同发起的开源项目,他是一系列软件项目的组合. 这些项目是松耦合的关系,可以进行独立的安装,启动和停止,只有在必要 ...