beego的一个web程序
beego的一个web程序
七夜大魔君 发表于3年前
beego的一个web程序
  • 发表于 3年前
  • 阅读 27
  • 收藏 1
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

最近学习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
×
七夜大魔君
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: