开始调整目录,写第二小结

This commit is contained in:
astaxie
2013-01-09 18:22:58 +08:00
parent ec500f2a2f
commit c08c7c6175
11 changed files with 273 additions and 133 deletions

94
14.1.md
View File

@@ -1,26 +1,70 @@
# 14.1 静态文件支持
我们在前面已经讲过如何处理静态文件这小节我们详细的介绍如何在beego里面设置和使用静态文件。通过再介绍一个twitter开源的html、css框架bootstrap无需任何的设计人员就能够让你快速的建立一个漂亮的站点。
## beego静态文件实现和设置
## bootstrap集成
Bootstrap是Twitter推出的一个开源的用于前端开发的工具包。Bootstrap是快速开发Web应用程序的前端工具包。它是一个CSS和HTML的集合它使用了最新的浏览器技术给你的Web开发提供了时尚的版式表单buttons表格网格系统等等。
- 组件
  Bootstrap中包含了丰富的Web组件根据这些组件可以快速的搭建一个漂亮、功能完备的网站。其中包括以下组件
  下拉菜单、按钮组、按钮下拉菜单、导航、导航条、面包屑、分页、排版、缩略图、警告对话框、进度条、媒体对象等
- Javascript插件
  Bootstrap自带了13个jQuery插件这些插件为Bootstrap中的组件赋予了“生命”。其中包括
  模式对话框、标签页、滚动条、弹出框等。
- 定制自己的框架代码
  可以对Bootstrap中所有的CSS变量进行修改依据自己的需求裁剪代码。
![](images/14.1.bootstrap.png?raw=true)
接下来我们利用bootstrap集成到beego框架里面来快速的建立一个漂亮的站点
## links
* [目录](<preface.md>)
* 上一节: [扩展Web框架](<14.md>)
# 14.1 静态文件支持
我们在前面已经讲过如何处理静态文件这小节我们详细的介绍如何在beego里面设置和使用静态文件。通过再介绍一个twitter开源的html、css框架bootstrap无需任何的设计人员就能够让你快速的建立一个漂亮的站点。
## beego静态文件实现和设置
Go的net/http包中提供了静态文件的服务`ServeFile``FileServer`等函数。beego的静态文件处理就是基于这一层处理的具体的实现如下所示
//static file server
for prefix, staticDir := range StaticDir {
if strings.HasPrefix(r.URL.Path, prefix) {
file := staticDir + r.URL.Path[len(prefix):]
http.ServeFile(w, r, file)
w.started = true
return
}
}
StaticDir里面保存的是相应的url对应到静态文件所在的目录因此在处理URL请求的时候只需要判断对应的请求地址是否包含静态处理开头的url如果是那么就采用http.ServeFile提供服务。
举例如下:
beego.StaticDir["/asset"] = "/static"
那么请求url如`http://www.beego.me/asset/bootstrap.css`的请求就会请求`/static/bootstrap.css`来提供反馈给客户端。
## bootstrap集成
Bootstrap是Twitter推出的一个开源的用于前端开发的工具包。Bootstrap是快速开发Web应用程序的前端工具包。它是一个CSS和HTML的集合它使用了最新的浏览器技术给你的Web开发提供了时尚的版式表单buttons表格网格系统等等。
- 组件
  Bootstrap中包含了丰富的Web组件根据这些组件可以快速的搭建一个漂亮、功能完备的网站。其中包括以下组件
  下拉菜单、按钮组、按钮下拉菜单、导航、导航条、面包屑、分页、排版、缩略图、警告对话框、进度条、媒体对象等
- Javascript插件
  Bootstrap自带了13个jQuery插件这些插件为Bootstrap中的组件赋予了“生命”。其中包括
  模式对话框、标签页、滚动条、弹出框等。
- 定制自己的框架代码
  可以对Bootstrap中所有的CSS变量进行修改依据自己的需求裁剪代码。
![](images/14.1.bootstrap.png?raw=true)
接下来我们利用bootstrap集成到beego框架里面来快速的建立一个漂亮的站点。
1. 首先把下载的bootstrap目录放到我们的项目目录取名为static如下截图所示
![](images/14.1.bootstrap2.png?raw=true)
2. 因为beego默认设置了StaticDir的值所以如果你的静态文件目录是static的话就无须再增加了
StaticDir["/static"] = "static"
3. 模板中使用如下的地址就可以了:
//css文件
<link href="/static/css/bootstrap.css" rel="stylesheet">
//js文件
<script src="/static/js/bootstrap-transition.js"></script>
//图片文件
<img src="/static/img/logo.png">
上面可以实现把bootstrap集成到beego中来如下展示的图就是集成进来之后的展现效果图
![](images/14.1.bootstrap3.png?raw=true)
这些模板和格式bootstrap官方都有提供这边就不在重复贴代码大家可以上bootstrap官方网站学习如何编写这样的模板。
## links
* [目录](<preface.md>)
* 上一节: [扩展Web框架](<14.md>)
* 下一节: [Session支持](<14.2.md>)

65
14.2.md
View File

@@ -0,0 +1,65 @@
# 14.2 Session支持
第六章的时候我们介绍过如何在Go语言中使用session也实现了一个sessionMangerbeego基于sessionManager实现了框架方便的处理session功能。
## session集成
beego中主要有如下这些全局变量来控制session处理
//related to session
SessionOn bool // 是否开启session模块默认不开启
SessionProvider string // session后端提供处理模块默认是sessionManager支持的memory
SessionName string // 客户端保存的cookies的名称
SessionGCMaxLifetime int64 // cookies有效期
GlobalSessions *session.Manager //全局session控制器
当然上面这些变量需要初始化值以及如何配合配置文件设置来设置这些值:
if ar, err := AppConfig.Bool("sessionon"); err != nil {
SessionOn = false
} else {
SessionOn = ar
}
if ar := AppConfig.String("sessionprovider"); ar == "" {
SessionProvider = "memory"
} else {
SessionProvider = ar
}
if ar := AppConfig.String("sessionname"); ar == "" {
SessionName = "beegosessionID"
} else {
SessionName = ar
}
if ar, err := AppConfig.Int("sessiongcmaxlifetime"); err != nil && ar != 0 {
int64val, _ := strconv.ParseInt(strconv.Itoa(ar), 10, 64)
SessionGCMaxLifetime = int64val
} else {
SessionGCMaxLifetime = 3600
}
在beego.Run函数中增加如下代码
if SessionOn {
GlobalSessions, _ = session.NewManager(SessionProvider, SessionName, SessionGCMaxLifetime)
go GlobalSessions.GC()
}
这样如果只要SessionOn设置为true那么就会默认开启session功能。独立开一个goroutine来处理session。
为了方便我们在我们的Controller中方便的使用session我们在`beego.Controller`中提供了如下方法:
func (c *Controller) StartSession() (sess session.Session) {
sess = GlobalSessions.SessionStart(c.Ctx.ResponseWriter, c.Ctx.Request)
return
}
## session使用
通过上面的代码我们可以看到beego框架很方便的就继承了session功能那么我们在项目中如何使用呢请看的示例代码
## links
* [目录](<preface.md>)
* 上一节: [静态文件支持](<14.1.md>)
* 下一节: [表单及验证支持](<14.3.md>)

View File

@@ -0,0 +1,6 @@
# 14.3 表单及验证支持
## links
* [目录](<preface.md>)
* 上一节: [Session支持](<14.2.md>)
* 下一节: [用户认证](<14.4.md>)

View File

@@ -0,0 +1,6 @@
# 14.4 用户认证
## links
* [目录](<preface.md>)
* 上一节: [表单及验证支持](<14.3.md>)
* 下一节: [多语言支持](<14.5.md>)

View File

@@ -0,0 +1,6 @@
# 14.5 多语言支持
## links
* [目录](<preface.md>)
* 上一节: [用户认证](<14.4.md>)
* 下一节: [pprof支持](<14.6.md>)

View File

@@ -0,0 +1,6 @@
# 14.6 pprof支持
## links
* [目录](<preface.md>)
* 上一节: [多语言支持](<14.5.md>)
* 下一节: [小结](<14.7.md>)

5
14.7.md Normal file
View File

@@ -0,0 +1,5 @@
# 14.7 小结
## links
* [目录](<preface.md>)
* 上一节: [pprof支持](<14.6.md>)

33
14.md
View File

@@ -1,17 +1,18 @@
# 14 扩展Web框架
第十三章介绍了如何开发一个Web框架通过介绍MVC、路由、日志处理、配置处理完成了一个基本的框架系统但是一个好的框架需要一些方便的辅助工具来快速的开发Web那么我们这一章将就如何提供一些快速开发Web的工具进行介绍第一小节介绍如何处理静态文件如何利用现有的twitter开源的bootstrap进行快速的开发美观的站点第二小节介绍如何利用前面介绍的session来进行用户登录处理第三小节介绍如何方便的输出表单、这些表单如何进行数据验证如何快速的结合model进行数据的增删改操作第四小节介绍如何进行一些用户认证包括http basic认证、http digest认证第五小节介绍如何利用前面介绍的i18n支持多语言的应用开发。
通过本章的扩展beego框架将具有快速开发Web的特性最后我们将讲解如何利用这些扩展的特性扩展开发第十三章开发的博客系统通过开发一个完整、美观的博客系统让读者了解beego开发带给你的快速。
## 目录
* 1 [静态文件支持](14.1.md)
* 2 [Session支持](14.2.md)
* 3 [表单及验证支持](14.3.md)
* 4 [用户认证](14.4.md)
* 5 [多语言支持](14.5.md)
* 6 [小结](14.6.md)
## links
* [目录](<preface.md>)
* 上一章: [第十三章总结](<13.6.md>)
# 14 扩展Web框架
第十三章介绍了如何开发一个Web框架通过介绍MVC、路由、日志处理、配置处理完成了一个基本的框架系统但是一个好的框架需要一些方便的辅助工具来快速的开发Web那么我们这一章将就如何提供一些快速开发Web的工具进行介绍第一小节介绍如何处理静态文件如何利用现有的twitter开源的bootstrap进行快速的开发美观的站点第二小节介绍如何利用前面介绍的session来进行用户登录处理第三小节介绍如何方便的输出表单、这些表单如何进行数据验证如何快速的结合model进行数据的增删改操作第四小节介绍如何进行一些用户认证包括http basic认证、http digest认证第五小节介绍如何利用前面介绍的i18n支持多语言的应用开发。
通过本章的扩展beego框架将具有快速开发Web的特性最后我们将讲解如何利用这些扩展的特性扩展开发第十三章开发的博客系统通过开发一个完整、美观的博客系统让读者了解beego开发带给你的快速。
## 目录
* 1 [静态文件支持](14.1.md)
* 2 [Session支持](14.2.md)
* 3 [表单及验证支持](14.3.md)
* 4 [用户认证](14.4.md)
* 5 [多语言支持](14.5.md)
* 6 [pprof支持](14.6.md)
* 7 [小结](14.7.md)
## links
* [目录](<preface.md>)
* 上一章: [第十三章总结](<13.6.md>)
* 下一节: [静态文件支持](<14.1.md>)

BIN
images/14.1.bootstrap2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
images/14.1.bootstrap3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -1,92 +1,93 @@
* 1.[Go环境配置](1.md)
- 1.1. [Go安装](1.1.md)
- 1.2. [GOPATH 与工作空间](1.2.md)
- 1.3. [Go 命令](1.3.md)
- 1.4. [Go开发工具](1.4.md)
- 1.5. [小结](1.5.md)
* 2.[Go语言基础](2.md)
- 2.1. [你好Go](2.1.md)
- 2.2. [Go基础](2.2.md)
- 2.3. [流程和函数](2.3.md)
- 2.4. [struct](2.4.md)
- 2.5. [面向对象](2.5.md)
- 2.6. [interface](2.6.md)
- 2.7. [并发](2.7.md)
- 2.8. [小结](2.8.md)
* 3.[Web基础](3.md)
- 3.1 [web工作方式](3.1.md)
- 3.2 [Go搭建一个简单的web服务](3.2.md)
- 3.3 [Go如何使得web工作](3.3.md)
- 3.4 [Go的http包详解](3.4.md)
- 3.5 [小结](3.5.md)
* 4.[表单](4.md)
- 4.1 [处理表单的输入](4.1.md)
- 4.2 [验证表单的输入](4.2.md)
- 4.3 [预防跨站脚本](4.3.md)
- 4.4 [防止多次递交表单](4.4.md)
- 4.5 [处理文件上传](4.5.md)
- 4.6 [小结](4.6.md)
* 5.[访问数据库](5.md)
- 5.1 [database/sql接口](5.1.md)
- 5.2 [使用MySQL数据库](5.2.md)
- 5.3 [使用SQLite数据库](5.3.md)
- 5.4 [使用PostgreSQL数据库](5.4.md)
- 5.5 [使用beedb库进行ORM开发](5.5.md)
- 5.6 [NOSQL数据库操作](5.6.md)
- 5.7 [小结](5.7.md)
* 6.[session和数据存储](6.md)
- 6.1 [session和cookie](6.1.md)
- 6.2 [Go如何使用session](6.2.md)
- 6.3 [session存储](6.3.md)
- 6.4 [预防session劫持](6.4.md)
- 6.5 [小结](6.5.md)
* 7.[文本处理](7.md)
- 7.1 [XML处理](7.1.md)
- 7.2 [JSON处理](7.2.md)
- 7.3 [正则处理](7.3.md)
- 7.4 [模板处理](7.4.md)
- 7.5 [小结](7.5.md)
* 8.[Web服务](8.md)
- 8.1 [Socket编程](8.1.md)
- 8.2 [WebSocket](8.2.md)
- 8.3 [REST](8.3.md)
- 8.4 [RPC](8.4.md)
- 8.5 [小结](8.5.md)
* 9.[安全与加密](9.md)
- 9.1 [预防CSRF攻击](9.1.md)
- 9.2 [确保输入过滤](9.2.md)
- 9.3 [避免XSS攻击](9.3.md)
- 9.4 [避免SQL注入](9.4.md)
- 9.5 [存储密码](9.5.md)
- 9.6 [加密和解密数据](9.6.md)
- 9.7 [小结](9.7.md)
* 10.[国际化和本地化](10.md)
- 10.1 [设置默认地区](10.1.md)
- 10.2 [本地化资源](10.2.md)
- 10.3 [国际化站点](10.3.md)
- 10.4 [小结](10.4.md)
* 11.[错误处理,调试和测试](11.md)
- 11.1 [错误处理](11.1.md)
- 11.2 [使用GDB调试](11.2.md)
- 11.3 [Go怎么写测试用例](11.3.md)
- 11.4 [小结](11.4.md)
* 12.[部署与维护](12.md)
- 12.1 [应用日志](12.1.md)
- 12.2 [网站错误处理](12.2.md)
- 12.3 [应用部署](12.3.md)
- 12.4 [备份和恢复](12.4.md)
- 12.5 [小结](12.5.md)
* 13.[如何设计一个Web框架](13.md) 
- 13.1 [项目规划](13.1.md) 
- 13.2 [自定义路由器设计](13.2.md)
- 13.3 [controller设计](13.3.md)
- 13.4 [日志和配置设计](13.4.md)
- 13.5 [实现博客的增删改](13.5.md)
- 13.6 [小结](13.6.md) 
* 14.[扩展Web框架](14.md)
- 14.1 [静态文件支持](14.1.md)
- 14.2 [Session支持](14.2.md)
- 14.3 [表单支持](14.3.md)
- 14.4 [用户认证](14.4.md)
- 14.5 [多语言支持](14.5.md)
- 14.6 [小结](14.6.md)
* 1.[Go环境配置](1.md)
- 1.1. [Go安装](1.1.md)
- 1.2. [GOPATH 与工作空间](1.2.md)
- 1.3. [Go 命令](1.3.md)
- 1.4. [Go开发工具](1.4.md)
- 1.5. [小结](1.5.md)
* 2.[Go语言基础](2.md)
- 2.1. [你好Go](2.1.md)
- 2.2. [Go基础](2.2.md)
- 2.3. [流程和函数](2.3.md)
- 2.4. [struct](2.4.md)
- 2.5. [面向对象](2.5.md)
- 2.6. [interface](2.6.md)
- 2.7. [并发](2.7.md)
- 2.8. [小结](2.8.md)
* 3.[Web基础](3.md)
- 3.1 [web工作方式](3.1.md)
- 3.2 [Go搭建一个简单的web服务](3.2.md)
- 3.3 [Go如何使得web工作](3.3.md)
- 3.4 [Go的http包详解](3.4.md)
- 3.5 [小结](3.5.md)
* 4.[表单](4.md)
- 4.1 [处理表单的输入](4.1.md)
- 4.2 [验证表单的输入](4.2.md)
- 4.3 [预防跨站脚本](4.3.md)
- 4.4 [防止多次递交表单](4.4.md)
- 4.5 [处理文件上传](4.5.md)
- 4.6 [小结](4.6.md)
* 5.[访问数据库](5.md)
- 5.1 [database/sql接口](5.1.md)
- 5.2 [使用MySQL数据库](5.2.md)
- 5.3 [使用SQLite数据库](5.3.md)
- 5.4 [使用PostgreSQL数据库](5.4.md)
- 5.5 [使用beedb库进行ORM开发](5.5.md)
- 5.6 [NOSQL数据库操作](5.6.md)
- 5.7 [小结](5.7.md)
* 6.[session和数据存储](6.md)
- 6.1 [session和cookie](6.1.md)
- 6.2 [Go如何使用session](6.2.md)
- 6.3 [session存储](6.3.md)
- 6.4 [预防session劫持](6.4.md)
- 6.5 [小结](6.5.md)
* 7.[文本处理](7.md)
- 7.1 [XML处理](7.1.md)
- 7.2 [JSON处理](7.2.md)
- 7.3 [正则处理](7.3.md)
- 7.4 [模板处理](7.4.md)
- 7.5 [小结](7.5.md)
* 8.[Web服务](8.md)
- 8.1 [Socket编程](8.1.md)
- 8.2 [WebSocket](8.2.md)
- 8.3 [REST](8.3.md)
- 8.4 [RPC](8.4.md)
- 8.5 [小结](8.5.md)
* 9.[安全与加密](9.md)
- 9.1 [预防CSRF攻击](9.1.md)
- 9.2 [确保输入过滤](9.2.md)
- 9.3 [避免XSS攻击](9.3.md)
- 9.4 [避免SQL注入](9.4.md)
- 9.5 [存储密码](9.5.md)
- 9.6 [加密和解密数据](9.6.md)
- 9.7 [小结](9.7.md)
* 10.[国际化和本地化](10.md)
- 10.1 [设置默认地区](10.1.md)
- 10.2 [本地化资源](10.2.md)
- 10.3 [国际化站点](10.3.md)
- 10.4 [小结](10.4.md)
* 11.[错误处理,调试和测试](11.md)
- 11.1 [错误处理](11.1.md)
- 11.2 [使用GDB调试](11.2.md)
- 11.3 [Go怎么写测试用例](11.3.md)
- 11.4 [小结](11.4.md)
* 12.[部署与维护](12.md)
- 12.1 [应用日志](12.1.md)
- 12.2 [网站错误处理](12.2.md)
- 12.3 [应用部署](12.3.md)
- 12.4 [备份和恢复](12.4.md)
- 12.5 [小结](12.5.md)
* 13.[如何设计一个Web框架](13.md) 
- 13.1 [项目规划](13.1.md) 
- 13.2 [自定义路由器设计](13.2.md)
- 13.3 [controller设计](13.3.md)
- 13.4 [日志和配置设计](13.4.md)
- 13.5 [实现博客的增删改](13.5.md)
- 13.6 [小结](13.6.md) 
* 14.[扩展Web框架](14.md)
- 14.1 [静态文件支持](14.1.md)
- 14.2 [Session支持](14.2.md)
- 14.3 [表单支持](14.3.md)
- 14.4 [用户认证](14.4.md)
- 14.5 [多语言支持](14.5.md)
- 14.6 [pprof支持](14.6.md)
- 14.7 [小结](14.7.md)