欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

go web 處理表單的輸入的說明

 更新時(shí)間:2021年06月08日 10:36:54   作者:chengqiuming  
今天給大家普及go表單輸入方面的知識(shí)點(diǎn),整體代碼分為前端頁(yè)面和后端處理方法,通過代碼給大家介紹的很詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

一 目錄結(jié)構(gòu)

二 前端頁(yè)面

文件名: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>

上面遞交表單到服務(wù)器的 /login,當(dāng)用戶輸入信息點(diǎn)擊登陸之后,會(huì)跳轉(zhuǎn)到服務(wù)器的路由 login 里面。

三 后端處理

package main
 
import (
   "fmt"
   "html/template"
   "log"
   "net/http"
   "strings"
)
// 處理 sayhelloName
func sayhelloName(w http.ResponseWriter, r *http.Request) {
   r.ParseForm() // 解析 url 傳遞的參數(shù),對(duì)于 POST 則解析響應(yīng)包的主體(request body)
   // 注意: 如果沒有調(diào)用ParseForm方法,下面無法獲取表單的數(shù)據(jù)
   fmt.Println(r.Form) // 這些信息是輸出到服務(wù)器端的打印信息
   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!") // 這個(gè)寫入到 w 的是輸出到客戶端的
}
 
// 登錄邏輯
func login(w http.ResponseWriter, r *http.Request) {
   fmt.Println("method:", r.Method) // 獲取請(qǐng)求的方法
   if r.Method == "GET" {
      t, _ := template.ParseFiles("src\\goweb\\demo3\\login.html") // 解析模板
      t.Execute(w, nil)                                            // 渲染模板,并發(fā)送給前端
   } else {
      // 請(qǐng)求的是登陸數(shù)據(jù),那么執(zhí)行登陸的邏輯判斷
      // 解析表單
      r.ParseForm()
      fmt.Println("username:", r.Form["username"])
      fmt.Println("password:", r.Form["password"])
   }
}
 
func main() {
   http.HandleFunc("/", sayhelloName)       // 設(shè)置訪問的路由
   http.HandleFunc("/login", login)         // 設(shè)置訪問的路由
   err := http.ListenAndServe(":9090", nil) // 設(shè)置監(jiān)聽的端口
   if err != nil {
      log.Fatal("ListenAndServe: ", err)
   }
}

獲取請(qǐng)求方法是通過 r.Method 來完成的,這是個(gè)字符串類型的變量,返回 GET、POST、PUT等 method 信息。

login 函數(shù)中我們根據(jù) r.Method 來判斷是顯示登錄界面還是處理登錄邏輯。

當(dāng) GET 方式請(qǐng)求時(shí)顯示登錄界面,其他方式請(qǐng)求時(shí)則處理登錄邏輯,如查詢數(shù)據(jù)庫(kù)、驗(yàn)證登錄信息等。

四 測(cè)試

1 在瀏覽器里面打開 http://127.0.0.1:9090/login 

2 頁(yè)面顯示為

3 輸入用戶名 admin ,密碼 123456

后臺(tái)打印如下:

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")。調(diào)用 r.FormValue 時(shí)會(huì)自動(dòng)調(diào)用 r.ParseForm,所以不必提前調(diào)用。r.FormValue 只會(huì)返回同名參數(shù)中的第一個(gè),若參數(shù)不存在則返回空字符串。

以上就是go web 處理表單的輸入的詳細(xì)內(nèi)容,更多關(guān)于go處理表單輸入的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • go xorm框架的使用

    go xorm框架的使用

    xorm框架和Spring Data Jpa有點(diǎn)相似,可以對(duì)比學(xué)習(xí),對(duì)于這個(gè)框架感覺還不錯(cuò),閑暇時(shí)間學(xué)習(xí)一下
    2021-05-05
  • Go每日一庫(kù)之quicktemplate的使用

    Go每日一庫(kù)之quicktemplate的使用

    quicktemplate快速、功能強(qiáng)大、易于使用的Go模板引擎。比html/模板快20倍,本文我們就詳細(xì)的介紹一下quicktemplate的具體使用,感興趣的可以了解一下
    2021-07-07
  • GO?集合?map?使用示例小結(jié)

    GO?集合?map?使用示例小結(jié)

    Go語(yǔ)言的集合稱為映射(map),它是一種無序的鍵值對(duì)(key-value)的集合,集合是通過鍵(key)來快速檢索值(value)的,鍵(key)類似于索引,它指向值(value)的數(shù)據(jù),這篇文章主要介紹了GO集合map使用總結(jié),本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • golang指數(shù)運(yùn)算操作

    golang指數(shù)運(yùn)算操作

    這篇文章主要介紹了golang指數(shù)運(yùn)算操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 一文了解Go語(yǔ)言的并發(fā)特性

    一文了解Go語(yǔ)言的并發(fā)特性

    本文主要介紹了一文了解Go語(yǔ)言的并發(fā)特性,通過輕量級(jí)線程、通道及選擇語(yǔ)句,使得并發(fā)編程變得既簡(jiǎn)單又高效,下面就來具體了解一下如何使用,感興趣的可以了解一下
    2024-02-02
  • GO語(yǔ)言異常處理機(jī)制panic和recover分析

    GO語(yǔ)言異常處理機(jī)制panic和recover分析

    這篇文章主要介紹了GO語(yǔ)言異常處理機(jī)制panic和recover,分析了捕獲運(yùn)行時(shí)發(fā)生錯(cuò)誤的方法,是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-12-12
  • golang常用庫(kù)之字段參數(shù)驗(yàn)證庫(kù)-validator使用詳解

    golang常用庫(kù)之字段參數(shù)驗(yàn)證庫(kù)-validator使用詳解

    這篇文章主要介紹了golang常用庫(kù):字段參數(shù)驗(yàn)證庫(kù)-validator使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借價(jià)值,需要的朋友可以參考下
    2020-10-10
  • go語(yǔ)言使用Chromedp實(shí)現(xiàn)二維碼登陸教程示例源碼

    go語(yǔ)言使用Chromedp實(shí)現(xiàn)二維碼登陸教程示例源碼

    這篇文章主要為大家介紹了go語(yǔ)言使用Chromedp實(shí)現(xiàn)二維碼登陸示例源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • Go語(yǔ)言中切片(slice)和數(shù)組(array)的區(qū)別詳解

    Go語(yǔ)言中切片(slice)和數(shù)組(array)的區(qū)別詳解

    Go語(yǔ)言中切片(slice)和數(shù)組(array)是兩種不同的數(shù)據(jù)結(jié)構(gòu),它們?cè)谟梅ê托袨樯嫌幸恍┲匾獏^(qū)別,所以本文就通過一些代碼示例給大家詳細(xì)的介紹一下Go語(yǔ)言中切片(slice)和數(shù)組(array)的區(qū)別,需要的朋友可以參考下
    2023-09-09
  • 詳解Golang官方中的一致性哈希組件

    詳解Golang官方中的一致性哈希組件

    這篇文章主要為大家詳細(xì)介紹了Golang官方中的一致性哈希組件的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-04-04

最新評(píng)論