212°

Go表单的提交的坑

package main

import (
   "fmt"
   "html/template"
   "log"
   "net/http"
   "strings"
)

func sayhelloName(w http.ResponseWriter, r *http.Request) {
   r.ParseForm()       //解析url传递的参数,对于POST则解析响应包的主体(request body)
   //注意:如果没有调用ParseForm方法,下面无法获取表单的数据
   fmt.Println(r.Form) //这些信息是输出到服务器端的打印信息
   fmt.Println("path", r.URL.Path)
   fmt.Println("scheme", r.URL.Scheme)
   fmt.Println(r.Form["url_long"])
   for k, v := range r.Form {
      fmt.Println("key:", k)
      fmt.Println("val:", strings.Join(v, ""))
   }
   fmt.Fprintf(w, "Hello astaxie!") //这个写入到w的是输出到客户端的
}

func login(w http.ResponseWriter, r *http.Request) {
   fmt.Println("method:", r.Method) //获取请求的方法
   if r.Method == "GET" {
      t, _ := template.ParseFiles("login.gtpl")
      log.Println(t.Execute(w, nil))
   } else {
       r.ParseForm()       //解析url传递的参数,对于POST则解析响应包的主体(request body)
        for k, v := range r.Form {
            fmt.Println("key:", k)
            fmt.Println("val:", strings.Join(v, ""))
        }
       template.HTMLEscape(w, []byte(r.Form.Get("username")))
       fmt.Println("usernamessss:", r.Form)
      //请求的是登录数据,那么执行登录的逻辑判断
      //r.ParseForm()
      //fmt.Println("username:", r.Form["username"])
      //fmt.Println("password:", r.Form["password"])


        //fmt.Fprintf(w, "dddddd!")
   }
}

func main() {
   http.HandleFunc("/", sayhelloName)       //设置访问的路由
   http.HandleFunc("/login", login)         //设置访问的路由
   err := http.ListenAndServe(":9090", nil) //设置监听的端口
   if err != nil {
      log.Fatal("ListenAndServe: ", err)
   }
}

 

问题,修改代码后不生效,一直显示不出来输入表单的值

后来发现 需要重启下服务,重新执行下go run

 

本文由【李佳顺】发布于开源中国,原文链接:https://my.oschina.net/shunshun/blog/3029853

全部评论: 0

    我有话说: