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():③ ...
随机推荐
- 201521123114 《Java程序设计》第6周学习总结
1. 本章学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2. 书面作业 Q1.clone方法 1.1 Object ...
- 201521123034 《Java程序设计》第五周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 作业参考文件下载 代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件 ...
- 201521123096《Java程序设计》第二周学习总结
1.本周学习总结 (1)学会使用码云管理代码: (2)了解数组和字符串的操作: (3)对完全限定类名有一定的认识. 2.书面作业 (1)使用Eclipse关联jdk源代码,并查看String对象的源代 ...
- Java实现猜字母游戏
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABRQAAAE9CAYAAAB6Cu4FAAAgAElEQVR4nOy995OUR77u2f/H3tjdey ...
- 201521123098 《Java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 1. Input Stream -- 数据提供者可从其中读数据输出流:Output Stream -- 数据接 ...
- 201521123056 《Java程序设计》第14周学习总结
1. 本周学习总结 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己的学号.姓名) 在自己建立的数据库上执行常见SQL语句(截图) 参 ...
- 201521044091 《Java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. Answer: 2. 书面作业 将Student对象(属性:int id, String name,int a ...
- Eclipse rap 富客户端开发总结(5): RAP国际化之路
Eclipse RCP 中的plugin.xml国际化实现 1. 在工程的根目录下面建立一个plugin.properties资源文件:在此资源文件中写入需要国际化的内容(键/值对),举例如下: h ...
- apache: eclipse的tomcatPluginV插件下载
Sysdeo Eclipse Tomcat Launcher plugin Plugin features Support and contributions Download Installatio ...
- WebApi实现原理解析笔记
这是我看过WebApi实现代码后的一些总结,一方面加深自己的记忆,另外也希望能够帮助大家更深入的了解WebApi. 注:暂时没有好好的整理,可能有些晦涩难懂. Webapi 控制器类必须实现IHttp ...