package main import ( "fmt" "html/template" "log" "net/http" "strings" ) func sayhelloName(w http.ResponseWriter,r *http.Request){ //访问主体回应 r.ParseForm() //解析url传递的参数,对于POST则解析响应包的主体 //如果没有调用ParseForm方法则无法获取表单的数据. fmt.Println(r.Form)//输出url的参数,到服务器上 fmt.Println(r.URL.Path)//输出url的路径 fmt.Println(r.URL.Scheme)//输出方案 for k,v :=range r.Form{ fmt.Println(k) fmt.Println(strings.Join(v,""))//加入字符串输出看效果 } fmt.Fprintf(w,"hello world")//回应内容 } func login(w http.ResponseWriter,r *http.Request){ fmt.Println(r.Method)//输出客户端请求的方法 if r.Method=="GET"{ t,_:=template.ParseFiles("login.html") //解析html代码,就是那个表单 log.Println(t.Execute(w,nil)) }else{ r.ParseForm() fmt.Println(r.Form["username"]) //字典获取username的值 fmt.Println(r.Form["password"]) } } func main(){ http.HandleFunc("/",sayhelloName) //设置访问的路由 http.HandleFunc("/login",login) err:=http.ListenAndServe(":9999",nil)//设置监听端口 if err !=nil{ log.Fatal("listenandserver",err)//报错则输出错误并退出 } }
<html> <head> <title></title> </head> <body> <form action="/login" method="post"> 用户名:<input type="text" name="username"> 密码:<input type="password" name="password"> <input type="submit" value="登录"> </form> </body> </html>