文档章节

beego的一个web程序

 七夜大魔君
发布于 2014/06/26 14:35
字数 667
阅读 60
收藏 1

最近学习golang也有一段时间了,基础差不多学了个大概,因为本人是java程序员,所以对web更感兴趣。根据《go web编程》中的例子改编一个更简单的例子,供新手参考,废话不多说,上菜:

    这个例子使用到了beego框架和beedb框架,如果是go新手beego和beedb得自己去google下载安装。

    目录结构:

index.go


01 package controllers
02
03 import (
04     "fmt"
05     "github.com/astaxie/beego"
06     "login/models"
07 )
08
09 type IndexController struct {
10     beego.Controller
11 }
12
13 func (index *IndexController) Get() {
14     sess := index.StartSession()
15     username := sess.Get("username")
16     fmt.Println(username)
17     if username == nil || username == "" {
18         index.TplNames = "index.tpl"
19     } else {
20         index.TplNames = "success.tpl"
21     }
22
23 }
24
25 func (index *IndexController) Post() {
26     sess := index.StartSession()
27     var user models.User
28     inputs := index.Input()
29     //fmt.Println(inputs)
30     user.Username = inputs.Get("username")
31     user.Pwd = inputs.Get("pwd")
32     err := models.ValidateUser(user)
33     if err == nil {
34         sess.Set("username", user.Username)
35         fmt.Println("username:", sess.Get("username"))
36         index.TplNames = "success.tpl"
37     } else {
38         fmt.Println(err)
39         index.TplNames = "error.tpl"
40     }
41 }

regist.go



01 package controllers
02
03 import (
04     "fmt"
05     "github.com/astaxie/beego"
06     "login/models"
07 )
08
09 type RegistController struct {
10     beego.Controller
11 }
12
13 func (this *RegistController) Get() {
14     this.TplNames = "regist.tpl"
15 }
16
17 func (this *RegistController) Post() {
18     var user models.User
19     inputs := this.Input()
20     //fmt.Println(inputs)
21     user.Username = inputs.Get("username")
22     user.Pwd = inputs.Get("pwd")
23     err := models.SaveUser(user)
24     if err == nil {
25         this.TplNames = "success.tpl"
26     } else {
27         fmt.Println(err)
28         this.TplNames = "error.tpl"
29     }
30 }

models.go



01 package models
02
03 import (
04     "database/sql"
05     "errors"
06     "fmt"
07     "github.com/astaxie/beedb"
08     _ "github.com/ziutek/mymysql/godrv"
09 )
10
11 type User struct {
12     Id       int `PK`
13     Username string
14     Pwd      string
15 }
16
17 func getLink() beedb.Model {
18     db, err := sql.Open("mysql", "root:root@tcp(192.168.1.81:3306)/test_my?charset=utf8")
19     if err != nil {
20         panic(err)
21     }
22     orm := beedb.New(db)
23     return orm
24 }
25
26 func SaveUser(user User) error {
27     orm := getLink()
28     fmt.Println(user)
29     err := orm.Save(&user)
30     return err
31 }
32
33 func ValidateUser(user User) error {
34     orm := getLink()
35     var u User
36     orm.Where("username=? and pwd=?", user.Username, user.Pwd).Find(&u)
37     if u.Username == "" {
38         return errors.New("用户名或密码错误!")
39     }
40     return nil
41 }

main.go


01 package main
02
03 import (
04     //"fmt"
05     "github.com/astaxie/beego"
06     "login/controllers"
07 )
08
09 type MainController struct {
10     beego.Controller
11 }
12
13 func main() {
14     beego.SessionOn = true
15     beego.RegisterController("/", &controllers.IndexController{})
16     beego.RegisterController("/regist", &controllers.RegistController{})
17     beego.Run()
18 }


error.tpl



1 <html>
2     <body>
3             error
4     </body>
5 </html>

success.tpl



1 <html>
2     <body>
3             successed
4     </body>
5 </html>

index.tpl



01 <html>
02     <body>
03         <h1>login</h1>
04         <form action="/" method="post">
05             用户名:<input type="text" name="username"><br>
06             密码:<input type="password" name="pwd"><br>
07             <input type="submit" value="登录"><br>
08             <a href="/regist">注册</a>
09         </form>
10     </body>
11 </html>

regist.tpl

01 <html>
02     <body>
03         <h1>regist</h1>
04         <form action="/regist" method="post">
05             用户名:<input type="text" name="username"><br>
06             密码:<input type="password" name="pwd"><br>
07             <input type="submit" value="注册">
08         </form>
09     </body>
10 </html>

数据库用的是mysql,建表语句

 

1 CREATE TABLE user (
2 id      INT,
3 username   VARCHAR(32),
4 pwd VARCHAR(32),
5 PRIMARY KEY(id)
6 );

  程序跑起来是没有问题,但是session老是取不到数据,求大神解释!


© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 1
码字总数 667
作品 0
济南
私信 提问
如何做到不用beego配置文件又不让系统报错

@astaxie 你好,想跟你请教个问题:本人有个服务器端的应用程序,现在想在现有的应用程序里用beego框架开发一个管理Web界面。由于该应用程序已经有XML配置文件了,所以不想要beego默认的配置...

hezhixiongbei
2015/12/25
358
0
使用 beego 搭建 web 应用之一

介绍 你是一个从PHP,Python,Ruby等动态语言转移到Go的web应用开发人员吗?想知道怎样使用Go开发基于web的应用程序吗?你想要知道怎样使用类似于已知的框架的方式进行开发,在那儿你能重复的...

astaxie
2014/06/28
4.3K
0
beego 视频教程--beegoCasts

beego的文档应该还算比较完整的,但是我还是希望通过更多地素材来推进beego的发展,视频教程应该是一个非常直观的学习方式,所以决定在发布beego1.2之后开始制作一系列的beego视频教程,主要教大...

astaxie
2014/05/18
1K
1
使用beego框架开发个人博客(一)

安装配置 需要先安装配置 Golang,然后安装配置 beego,是一个使用 Go 的思维来帮助您 构建并开发 Go 应用程序的开源Web开发框架,的中文文档很友好,请自行查看 beego 安装配置完成之后,使用...

CoderMiner
2018/07/05
0
0
mac下安装beego,使用bee创建和运行项目

安装golang就不详细说了,下载pgk包安装,默认安装安装在 /usr/local/go 目录。 程序会自动设置环境变量,go env 可查看目前的go的环境变量。 现在GO可以执行了,在命令行输入 go version可查...

东子
2016/10/20
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

Jmeter参数的AES加密使用

在Jmeter日常实践中,大家应该都遇到过接口传参需要加密的情况。以登陆为例,用户名和密码一般都需要进行加密传输,在服务端再进行解密,这样安全系数会更高,但在使用jmeter进行接口测试的时...

程序猿拿Q
刚刚
0
0
MYSQL 日期函数 Date and Time Functions

Table 12.13 Date and Time Functions Name Description ADDDATE() Add time values (intervals) to a date value ADDTIME() Add time CONVERT_TZ() Convert from one time zone to another ......

_liucui_
6分钟前
0
0
Android代码混淆ProGuard工作原理简介

ProGuard能够对Java类中的代码进行压缩(Shrink),优化(Optimize),混淆(Obfuscate),预检(Preveirfy)。    1. 压缩(Shrink): 在压缩处理这一步中,用于检测和删除没有使用的类,字段...

SuShine
9分钟前
0
0
Idea 2018激活

教程地址: https://www.52pojie.cn/thread-781394-1-1.html 亲测可用

一个不正经的程序员
14分钟前
0
0
Android组件化开发实践和案例分享

目录介绍 1.为什么要组件化 1.1 为什么要组件化 1.2 现阶段遇到的问题 2.组件化的概念 2.1 什么是组件化 2.2 区分模块化与组件化 2.3 组件化优势好处 2.4 区分组件化和插件化 2.5 applicatio...

潇湘剑雨
15分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部