1、注册页面

  1. 拿到浏览器传递的数据
  2. 数据处理和判断
  3. 插入数据库(数据库表User)
  4. 返回试图
  1. # vim controllers/User.go
  2. package controllers
  3. import (
  4. "classOne/models"
  5. "github.com/astaxie/beego/orm"
  6. beego "github.com/beego/beego/v2/server/web"
  7. "log"
  8. )
  9. type RegController struct {
  10. beego.Controller
  11. }
  12. func (c *RegController) ShowReg() {
  13. c.TplName = "register.html"
  14. }
  15. func (c *RegController) HandleReg() {
  16. //1.拿到浏览器传递的数据
  17. name := c.GetString("userName")
  18. password := c.GetString("password")
  19. //2.数据处理
  20. if name == "" || password == "" {
  21. log.Println("用户名和密码不能为空")
  22. c.TplName = "register.html"
  23. return
  24. }
  25. //3.插入数据库
  26. //1.获取orm对象
  27. o := orm.NewOrm()
  28. //2.获取插入对象
  29. user := models.User{}
  30. //3.插入操作
  31. user.UserName = name
  32. user.PassWord = password
  33. _, err := o.Insert(&user)
  34. if err != nil {
  35. log.Println("插入数据失败")
  36. }
  37. //4.根据结果返回登录和注册
  38. c.Ctx.WriteString("注册成功")
  39. }

2、登录的业务流程

  1. 拿到浏览器数据
  2. 数据处理
  3. 查找数据库
  4. 返回视图 ```go package controllers

import ( “classOne/models” “github.com/astaxie/beego/orm” beego “github.com/beego/beego/v2/server/web” “log” )

type RegController struct { beego.Controller }

func (c *RegController) ShowReg() { c.TplName = “register.html” }

func (c *RegController) HandleReg() { //1.拿到浏览器传递的数据 name := c.GetString(“userName”) password := c.GetString(“password”) //2.数据处理 if name == “” || password == “” { log.Println(“用户名和密码不能为空”) c.TplName = “register.html” return } //3.插入数据库 //1.获取orm对象 o := orm.NewOrm() //2.获取插入对象 user := models.User{} //3.插入操作 user.UserName = name user.PassWord = password _, err := o.Insert(&user) if err != nil { log.Println(“插入数据失败”) } //4.根据结果返回登录和注册 c.Ctx.WriteString(“注册成功”) }

#

登录业务实现

#

type LoginController struct { beego.Controller }

func (c *LoginController) ShowLogin() { c.TplName = “login.html”

}

func (c *LoginController) HandleLogin() { //1.拿到浏览器传递的数据 name := c.GetString(“userName”) password := c.GetString(“password”) //2.数据处理 if name == “” || password == “” { log.Println(“错误提示:用户名或密码不能为空”) c.TplName = “login.html” return } //3.查询数据库 //1.获取orm对象 o := orm.NewOrm() //2.获取查询对象 user := models.User{} //3.执行查询操作 user.UserName = name err := o.Read(&user, “UserName”) if err != nil || user.PassWord != password { log.Println(“用户名密码错误”) c.TplName = “login.html” return } //4.判断密码是否一致 //if user.PassWord != password { // log.Println(“密码错误”) // c.TplName = “login.html” // return //}

//5.返回视图
c.Ctx.WriteString("用户登录成功")
//else {
//    log.Printf("查询成功用户为:%s,密码为%s",name,password)
//    c.TplName="index.html"
//    return
//}

}

```

3、状态码

  1. 1xx 继续发送
  2. 2xx 200请求成功
  3. 3xx 302重定向
  4. 4xx 404请求错误
  5. 5xx 500服务器错误

    3.1 重定向和转发(渲染)

  • Redirect
    • 浏览器端的请求,浏览器再次访问了服务器端,地址改变了
    • 不能传递数据
  • C.tplname
    • 服务器端的功能,浏览器没有再次发送请求,用的还是上次的地址,地址不变
    • 传递数据