go web 處理表單的輸入的說明
一 目錄結構

二 前端頁面
文件名:login.html
<!DOCTYPE html>
<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>
上面遞交表單到服務器的 /login,當用戶輸入信息點擊登陸之后,會跳轉到服務器的路由 login 里面。
三 后端處理
package main
import (
"fmt"
"html/template"
"log"
"net/http"
"strings"
)
// 處理 sayhelloName
func sayhelloName(w http.ResponseWriter, r *http.Request) {
r.ParseForm() // 解析 url 傳遞的參數(shù),對于 POST 則解析響應包的主體(request body)
// 注意: 如果沒有調用ParseForm方法,下面無法獲取表單的數(shù)據(jù)
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("src\\goweb\\demo3\\login.html") // 解析模板
t.Execute(w, nil) // 渲染模板,并發(fā)送給前端
} else {
// 請求的是登陸數(shù)據(jù),那么執(zhí)行登陸的邏輯判斷
// 解析表單
r.ParseForm()
fmt.Println("username:", r.Form["username"])
fmt.Println("password:", r.Form["password"])
}
}
func main() {
http.HandleFunc("/", sayhelloName) // 設置訪問的路由
http.HandleFunc("/login", login) // 設置訪問的路由
err := http.ListenAndServe(":9090", nil) // 設置監(jiān)聽的端口
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
獲取請求方法是通過 r.Method 來完成的,這是個字符串類型的變量,返回 GET、POST、PUT等 method 信息。
login 函數(shù)中我們根據(jù) r.Method 來判斷是顯示登錄界面還是處理登錄邏輯。
當 GET 方式請求時顯示登錄界面,其他方式請求時則處理登錄邏輯,如查詢數(shù)據(jù)庫、驗證登錄信息等。
四 測試
1 在瀏覽器里面打開 http://127.0.0.1:9090/login
2 頁面顯示為

3 輸入用戶名 admin ,密碼 123456
后臺打印如下:
method: GET
map[]
path /favicon.ico
scheme
[]
method: POST
username: [admin]
password: [123456]
map[]
path /favicon.ico
scheme
[]
五 說明
Reques 本身也提供了 FormValue() 函數(shù)來獲取用戶提交的參數(shù)。如r.Form["username"]也可寫成r.FormValue("username")。調用 r.FormValue 時會自動調用 r.ParseForm,所以不必提前調用。r.FormValue 只會返回同名參數(shù)中的第一個,若參數(shù)不存在則返回空字符串。
以上就是go web 處理表單的輸入的詳細內容,更多關于go處理表單輸入的資料請關注腳本之家其它相關文章!
相關文章
golang常用庫之字段參數(shù)驗證庫-validator使用詳解
這篇文章主要介紹了golang常用庫:字段參數(shù)驗證庫-validator使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借價值,需要的朋友可以參考下2020-10-10
go語言使用Chromedp實現(xiàn)二維碼登陸教程示例源碼
這篇文章主要為大家介紹了go語言使用Chromedp實現(xiàn)二維碼登陸示例源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04
Go語言中切片(slice)和數(shù)組(array)的區(qū)別詳解
Go語言中切片(slice)和數(shù)組(array)是兩種不同的數(shù)據(jù)結構,它們在用法和行為上有一些重要區(qū)別,所以本文就通過一些代碼示例給大家詳細的介紹一下Go語言中切片(slice)和數(shù)組(array)的區(qū)別,需要的朋友可以參考下2023-09-09

