dotweb框架之旅 [三] - 常用对象-HttpServer
dotweb属于一个Web框架,希望通过框架行为,帮助开发人员快速构建Web应用,提升开发效率,减少不必要的代码臃肿。
框架地址:https://github.com/devfeel/dotweb
dotweb包含以下几个常用对象:
- App(dotweb) App容器,为Web请求处理提供必要的容器类功能。
- HttpServer 用于真正处理Web请求的服务模块。
- HttpContext 用于提供单次请求处理中请求信息与响应信息的快捷处理与唯一入口。
- Response 用于从服务器向用户发送输出的结果。
- Request 用于从用户那里取得信息。
- Session 用于存储关于某个连接会话的信息,或者修改相关的设置。目前支持存储本机内存与Redis分布式。
本章主要对HttpServer对象展开介绍。
HttpServer对象,在框架中,主要承担用于真正处理Web请求的服务模块,比如处理Web监听、设置路由、设置Module、管理Session、设置Render、设置Binder等,同时也承担一系列特性设置。
主要属性:
属性 | 描述 | 默认值 |
Router |
当前HttpServer路由,通过Router()访问 |
NewRouter(server) |
Modules |
全局HttpModule,用于路由前的集中处理 |
make([]*HttpModule, 0) |
DotApp |
所属的App容器指针 |
- |
SessionManager |
当前HttpServer的Session管理单元 |
InitSessionManager() |
Binder |
请求参数绑定器 |
newBinder() |
Features |
当前HttpServer特性集合 |
Feature{} |
主要方法:
方法 | 描述 |
ListenAndServe()\ListenAndServeTLS() |
指定host:port,根据配置启动Web端口监听 |
ServeHTTP(w http.ResponseWriter, req *http.Request) |
http请求处理入口 |
InitSessionManager() |
初始化Session单元 |
Router()\GET()\POST()....WebSocket() |
路由访问入口及快捷操作入口 |
Binder() |
提供HttpServer对象绑定器入口 |
Renderer() |
提供HttpServer对象模板处理入口 |
SetEnabledAutoHEAD() |
设置是否自动支持Head(默认为false) |
SetEnabledListDir() |
设置是否允许目录浏览(默认为false) |
SetEnabledSession() |
设置是否允许启用Session(默认为false) |
SetEnabledGzip() |
设置是否允许启用GZip压缩(默认为false) |
SetEnabledIgnoreFavicon() |
设置是否忽略Favicon请求(默认为false) |
SetEnabledTLS() |
设置是否支持TLS(默认为false) |
SetEnabledDetailRequestData() |
设置是否启用详细请求数据统计(默认为false) |
RegisterModule() |
添加处理模块 |
常规使用代码:
func main() { //初始化DotServer
app := dotweb.New() //设置gzip开关
app.HttpServer.SetEnabledGzip(true) //设置Session开关
app.HttpServer.SetEnabledSession(true) //设置Session配置
//runtime mode
app.HttpServer.SetSessionConfig(session.NewDefaultRuntimeConfig()) //设置启用详细请求数据统计
app.HttpServer.SetEnabledDetailRequestData(true) //设置启用GZIP压缩,默认压缩级别
app.HttpServer.SetEnabledGzip(true) //设置启用自动忽略Favicon请求
app.HttpServer.SetEnabledIgnoreFavicon(true) //设置启用目录浏览
app.HttpServer.SetEnabledListDir(true) //设置路由
InitRoute(app.HttpServer) // 开始服务
port :=
fmt.Println("dotweb.StartServer => " + strconv.Itoa(port))
err := app.StartServer(port)
fmt.Println("dotweb.StartServer error => ", err)
}
如代码所示,通过在启动Server正式监听前设置一系列参数,可以启用所支持的特性。
更多代码可参考 https://github.com/devfeel/dotweb-example
欢迎各位加入我们的go语言QQ群:193409346
dotweb框架之旅 [三] - 常用对象-HttpServer的更多相关文章
- dotweb框架之旅 [二] - 常用对象-App(dotweb)
dotweb属于一个Web框架,希望通过框架行为,帮助开发人员快速构建Web应用,提升开发效率,减少不必要的代码臃肿. dotweb包含以下几个常用对象: App(dotweb) App容器,为Web ...
- dotweb框架之旅 [四] - 常用对象-HttpContext
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框架的第三天
## Spring框架的第三天 ## ---------- **课程回顾:Spring框架第二天** 1. IOC的注解方式 * @Value * @Resource(name="" ...
- MVC5中Model层开发数据注解 EF Code First Migrations数据库迁移 C# 常用对象的的修饰符 C# 静态构造函数 MSSQL2005数据库自动备份问题(到同一个局域网上的另一台电脑上) MVC 的HTTP请求
MVC5中Model层开发数据注解 ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Model层的类用EntityFramework映射成对应的表) 数据验证( ...
- Javascript常用对象的属性和方法
javascript为我们提供了一些非常有用的常用内部对象和方法.用户不需要用脚本来实现这些功能.这正是基于对象编程的真正目的. 在javascript提供了string(字符串).math(数值计算 ...
- JavaScript常用对象的方法和属性
---恢复内容开始--- 本文将简单介绍JavaScript中一些常用对象的属性和方法,以及几个有用的系统函数. 一.串方法 JavaScript有强大的串处理功能,有了这些串方法,才能编写出丰富多彩 ...
- DOM创建和删除节点、HTML DOM常用对象[转]
创建和删除节点:——核心DOM 1. 创建单个元素节点:3步: 1. 创建空元素节点对象: var elem=document.createElement("标 ...
随机推荐
- 自制STP配置实验
本图使用Gns模拟器 实验需求: 1.要求利用vtp实现vlan同步设置 2.要求vtp server实现备份冗余 3.创建vlan 1~10要求MLSW1 是奇数vlan主根 MLSW2 是偶数vl ...
- 集美大学网络1413第九次作业成绩(团队五) -- 测试与发布(Alpha版本)
NO.NE团队的项目链接有效,六个核桃和六指神功团队可以请教下他们,避免因IP地址无效或者因tomcat不打开就不能访问的情况,毕竟助教没办法知道此时此刻它是开着还是关闭啊啊啊... 题目 团队作业5 ...
- Beta阶段项目复审
复审人:王李焕 六指神功:http://www.cnblogs.com/teamworkers/ wt.dll:http://www.cnblogs.com/TeamOf/ 六个核桃:http://w ...
- 201521123012 《Java程序设计》第五周学习总结
##1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 答: 1.2 可选:使用常规方法总结其他上课内容. 答:匿名内部类:将一个类的定义放在另一个类的内部.一般是 **new ...
- JAVA课程设计--------五子棋
1.团队课程设计博客链接 http://www.cnblogs.com/mz201521044152/p/7065575.html 2.个人负责模块或任务说明 1.重新开始:写一个restartgam ...
- 201521123031 《Java程序设计》第11周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...
- Java I/O 从0到1 - 第Ⅰ滴血 File
前言 File 类的介绍主要会依据<Java 编程思想>以及官网API .相信大家在日常工作中,肯定会遇到文件流的读取等操作,但是在搜索过程中,并没有找到一个介绍的很简洁明了的文章.因此, ...
- 国际化:Java平台下的Locale类
Locale类有如下几个构造器: Locale(String language) Locale(String language, String country) Locale(String langu ...
- python实现裴波那契数列
def Fib(n): ''' 假定序号为0或者1,返回1,序号为2时返回2 ''' before = 1 after = 1 for i in range(n): before, after = a ...
- (转)Unity3D 之插值计算
在unity3D中经常用线性插值函数Lerp()来在两者之间插值,两者之间可以是两个材质之间.两个向量之间.两个浮点数之间.两个颜色之间,其函数原型如下: Material.Lerp 插值 funct ...