package main import ( "io" "net/http" "log" "fmt" "time" ) func DrawMenu(w http.ResponseWriter){ w.Header().Set("Content-Type", "text/html") io.WriteString(w, "HOME
" + "\n") io.WriteString(w, "
Read Cookie
" + "\n") io.WriteString(w, "
Write Cookie
" + "\n") io.WriteString(w, "
Delete Cookie
" + "\n") } func IndexServer(w http.ResponseWriter, req *http.Request) { // draw menu DrawMenu(w) } func ReadCookieServer(w http.ResponseWriter, req *http.Request) { // draw menu DrawMenu(w) // read cookie var cookie,err = req.Cookie("testcookiename") if err == nil { var cookievalue = cookie.Value io.WriteString(w, "get cookie value is " + cookievalue + "\n") } } func WriteCookieServer(w http.ResponseWriter, req *http.Request) { // set cookies. expire := time.Now().AddDate(0, 0, 1) cookie := http.Cookie{Name: "testcookiename", Value: "testcookievalue", Path: "/", Expires: expire, MaxAge: 86400} http.SetCookie(w, &cookie) // // we can not set cookie after writing something to ResponseWriter // if so ,we cannot set cookie succefully. // // so we have draw menu after set cookie DrawMenu(w) } func DeleteCookieServer(w http.ResponseWriter, req *http.Request) { // set cookies. cookie := http.Cookie{Name: "testcookiename", Path: "/", MaxAge: -1} http.SetCookie(w, &cookie) // ABOUT MaxAge // MaxAge=0 means no 'Max-Age' attribute specified. // MaxAge<0 means delete cookie now, equivalently 'Max-Age: 0' // MaxAge>0 means Max-Age attribute present and given in seconds // draw menu DrawMenu(w) } func main() { http.HandleFunc("/", IndexServer) http.HandleFunc("/readcookie", ReadCookieServer) http.HandleFunc("/writecookie", WriteCookieServer) http.HandleFunc("/deletecookie", DeleteCookieServer) fmt.Println("listen on 3000") err := http.ListenAndServe(":3000", nil) if err != nil { log.Fatal("ListenAndServe: ", err) } }