华域联盟 Golang Go语言实现简单留言板的方法

Go语言实现简单留言板的方法

本文实例讲述了Go语言实现简单留言板的方法。分享给大家供大家参考。具体实现方法如下:

复制代码 代码如下: package main

import (

    // "fmt"

    "io"

    "log"

    "net/http"

    "text/template"

    "time"

    "database/sql"

    "github.com/ziutek/mymysql/godrv"

)

   

// 留言结构

type Liuyan struct {

    Id int

    Name string

    Content string

    Time int

}

   

// 显示留言时间

func (l Liuyan) ShowTime() string {

    t := time.Unix(int64(l.Time), 0)

    return t.Format("2006-01-02 15:04:05")

}

   

func main() {

    godrv.Register("SET NAMES utf8")

   

    // 连接数据库

    db, err := sql.Open("mymysql", "tcp:127.0.0.1:3306*go/root/123456")

    if err != nil {

        panic(err)

    }

    defer db.Close()

   

    // 准备模板

    tpl, err := template.New("liuyanbook").Parse(html)

    if err != nil {

        panic(err)

    }

   

    // 显示留言页面 /

    requestList := func(w http.ResponseWriter, req *http.Request) {

        // 查询数据

        rows, err := db.Query("select * from liuyan")

        if err != nil {

            log.Fatal(err)

        }

        defer rows.Close()

   

        // 获取数据

        lys := []Liuyan{}

        for rows.Next() {

            ly := Liuyan{}

            err := rows.Scan(&ly.Id, &ly.Name, &ly.Content, &ly.Time)

            if nil != err {

                log.Fatal(err)

            }

            lys = append(lys, ly)

        }

   

        // 显示数据

        err = tpl.ExecuteTemplate(w, "list", lys)

        if err != nil {

            log.Fatal(err)

        }

    }

   

    // 留言页面 /liuyan

    requestLiuyan := func(w http.ResponseWriter, req *http.Request) {

        err := req.ParseForm()

        if err != nil{

            log.Fatal(err)

        }

   

        if "POST" == req.Method {

            if len(req.Form["name"]) < 1 {

                io.WriteString(w, "参数错误!\n")

                return

            }

            if len(req.Form["content"]) < 1 {

                io.WriteString(w, "参数错误!\n")

                return

            }

   

            name := template.HTMLEscapeString(req.Form.Get("name"))

            content := template.HTMLEscapeString(req.Form.Get("content"))

   

            // sql语句

            sql, err := db.Prepare("insert into liuyan(name, content, time) values(?, ?, ?)")

            if err != nil {

                log.Fatal(err)

            }

            defer sql.Close()

   

            // sql参数,并执行

            _, err = sql.Exec(name, content, time.Now().Unix())

            if err != nil {

                log.Fatal(err)

            }

   

            // 跳转

            w.Header().Add("Location", "/")

            w.WriteHeader(302)

   

            // 提示信息

            io.WriteString(w, "提交成功!\n")

   

            return

        }

   

        err = tpl.ExecuteTemplate(w, "liuyan", nil)

        if err != nil {

            log.Fatal(err)

        }

    }

   

    http.HandleFunc("/", requestList)

    http.HandleFunc("/liuyan", requestLiuyan)

    err = http.ListenAndServe(":12345", nil)

    if err != nil {

        log.Fatal("ListenAndServe: ", err)

    }

}

   

// 网页模板

var html string = `{{define "list"}}{{/* 留言列表页面 */}}<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

</head>

<body>

    <p><a href="/liuyan">给我留言</a></p>

    <table>

{{range .}}

    <tr>

        <td>{{.Id}}</td><td>{{.Name}}</td><td>{{.Content}}</td><td>{{.ShowTime}}</td>

    </tr>

{{end}}

    </table>

</body>

</html>{{end}}

{{define "liuyan"}}{{/* 发布留言页面 */}}<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

</head>

<body>

    <form method="post">

        姓名:<input type="text" name="name" /><br>

        内容:<input type="text" name="content" /><br>

        <input type="submit" value="提交" />

    </form>

</body>

</html>{{end}}

希望本文所述对大家的Go语言程序设计有所帮助。

本文由 华域联盟 原创撰写:华域联盟 » Go语言实现简单留言板的方法

转载请保留出处和原文链接:https://www.cnhackhy.com/109952.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们