博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GO随笔-表单输入
阅读量:5989 次
发布时间:2019-06-20

本文共 1467 字,大约阅读时间需要 4 分钟。

表单的处理

对于表单form都不陌生,GO是如何处理表单的呢?

先写个例子:

用户名:
密码:

文件命名为login.gtpl(与html无异)

紧接着,需要有http服务

package mainimport (    "fmt"    "html/template"    "log"    "net/http"    "strings")func login(w http.ResponseWriter, r *http.Request) {    fmt.Println("method:", r.Method) //获取请求的方法    if r.Method == "GET" {        t, _ := template.ParseFiles("login.gtpl")        t.Execute(w, nil)    } else {        r.ParseForm()        //请求的是登陆数据,那么执行登陆的逻辑判断        fmt.Println("username:", r.Form["username"])        fmt.Println("password:", r.Form["password"])    }}func main() {    http.HandleFunc("/login", login)         //设置访问的路由    err := http.ListenAndServe(":9090", nil) //设置监听的端口    if err != nil {        log.Fatal("ListenAndServe: ", err)    }}

这就写好了一个能够完成登陆操作的功能。

用户访问http://domain:9090/login即可看到登陆界面。紧接着输入用户名和密码即可完成登陆。
中间都发生了什么事情呢?

  • 服务端绑定“/login”在Handle(login)上。
  • 服务端监听9090端口。
  • 用户访问服务端的9090端口。并且url是“/login”
  • 服务端接收到请求,解析路由后,将该请求分配给Handle(login),进入登陆逻辑。

这就是请求的过程。之后是响应过程

  • 通过r.Method拿到请求的方法
  • 判断请求的方法,若是get,则渲染模板template.ParseFiles("login.gtpl")。并且将模板响应(w)t.Execute(w, nil)给客户端,浏览器上显示登陆界面。
  • 当用户填写完信息点击登陆按钮时,将表单信息以post方法请求urlaction="/login"
  • 再次重复以上逻辑,判断方法为post时执行解析表单操作。r.ParseForm()并且将相关信息打印出来。

这里需要注意的一点是。Handler是不会自动解析表单的,需要显示的调用r.ParseForm()。才能对表单执行操作r.Form["username"]

request.Form是一个url.Values类型,里面存储的是对应的类似key=value的信息
另外Request本身提供了FormValue()来获取用户提供的参数。如r.Form["username"]也可写成r.FormValue("username")。调用r.FormValue时会自动调用r.ParseForm,所以不必提前调用。

转载地址:http://dsnlx.baihongyu.com/

你可能感兴趣的文章
iphone投屏到电脑上 苹果手机投屏流程
查看>>
超级有爱的五款APP共享 可以让你神操作
查看>>
AJPFX关于JAVA多线程实现的三种方式
查看>>
XP/win7下maven安装详解
查看>>
phoenixframework自动化测试平台环境部署(Windows)
查看>>
SqlServer系列笔记——连接查询JION
查看>>
SSH超实用分页实现!
查看>>
day5-simple ftp
查看>>
Navigator 对象
查看>>
inputStrea mOA系统错误
查看>>
【MySql】2.mysql约束
查看>>
json的一些属性用法
查看>>
直接关闭开启着键盘的Activity问题
查看>>
3个相关联的的HTML页面的简单设计
查看>>
C++用模板实现双链表和队列
查看>>
java数据库连接工具类
查看>>
windows下11g rac删除添加节点
查看>>
Centos6.5 更改mysql数据存放目录
查看>>
Spring mybaties实现数据库读写分离
查看>>
input radio check
查看>>