-
服务器端记录接收到的信息:gjb 5880-2006 软件配置管理
资源介绍
图4.1 用户登录界面
我们输入用户名和密码之后发现在服务器端是不会打印出来任何输出的,为什么呢?默认情况下,Handler里面是不
会自动解析form的,必须显式的调用r.ParseForm()后,你才能对这个表单数据进行操作。我们修改一下代码,在
fmt.Println("username:", r.Form["username"])之前加一行r.ParseForm(),重新编译,再次测试输入
递交,现在是不是在服务器端有输出你的输入的用户名和密码了。
r.Form里面包含了所有请求的参数,比如URL中query-string、POST的数据、PUT的数据,所有当你在URL的query-
string字段和POST冲突时,会保存成一个slice,里面存储了多个值,Go官方文档中说在接下来的版本里面将会把
POST、GET这些数据分离开来。
现在我们修改一下login.gtpl里面form的action值http://127.0.0.1:9090/login修改为
http://127.0.0.1:9090/login?username=astaxie,再次测试,服务器的输出username是不是一个slice。
服务器端的输出如下:
图4.2 服务器端打印接受到的信息
request.Form是一个url.Values类型,里面存储的是对应的类似key=value的信息,下面展示了可以对form数据
进行的一些操作:
v := url.Values{}
v.Set("name", "Ava")
v.Add("friend", "Jess")
v.Add("friend", "Sarah")
v.Add("friend", "Zoe")
// v.Encode() == "name=Ava&friend=Jess&friend=Sarah&friend=Zoe"
fmt.Println(v.Get("name"))
fmt.Println(v.Get("friend"))
fmt.Println(v["friend"])
TipsTips: Request本身也提供了FormValue()函数来获取用户提交的参数。如r.Form["username"]也可写成
r.FormValue("username")。调用r.FormValue时会自动调用r.ParseForm,所以不必提前调用。r.FormValue只会返
回同名参数中的第一个,若参数不存在则返回空字符串。
linkslinks
目录
上一节: 表单
下一节: 验证表单的输入
103