当前位置: 首页 > 编程笔记 >

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

佘缪文
2023-03-14
本文向大家介绍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语言实现简单http服务的方法,包括了go语言实现简单http服务的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了go语言实现简单http服务的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Go语言程序设计有所帮助。

  • 本文向大家介绍Go语言实现简单Web服务器的方法,包括了Go语言实现简单Web服务器的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Go语言实现简单Web服务器的方法。分享给大家供大家参考。具体分析如下: 包 http 通过任何实现了 http.Handler 的值来响应 HTTP 请求: package http type Handler interface { ServeHTTP

  • 本文向大家介绍Go语言单链表实现方法,包括了Go语言单链表实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Go语言单链表实现方法。分享给大家供大家参考。具体如下: 1. singlechain.go代码如下: 2. main.go代码如下: 希望本文所述对大家的Go语言程序设计有所帮助。

  • 本文向大家介绍利用Go语言实现简单Ping过程的方法,包括了利用Go语言实现简单Ping过程的方法的使用技巧和注意事项,需要的朋友参考一下 一、准备工作 安装最新的Go 1、由于Google被墙的原因,如果没有VPN的话,就到这里下载:http://www.golangtc.com/download 2、使用任意文本编辑器,或者LiteIDE会比较方便编译和调试 二、编码 要用到的package:

  • 本文向大家介绍go语言实现sqrt的方法,包括了go语言实现sqrt的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了go语言实现sqrt的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Go语言程序设计有所帮助。

  • 本文向大家介绍JS实现简易留言板特效,包括了JS实现简易留言板特效的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了JS实现留言板特效的具体代码,供大家参考,具体内容如下 知识点 1.textarea 大段输入框 2.value获取输入框的值 3.innerHTML所用东西;innerText文本 4.insertBefore在某个标签之前插入 运行效果 代码 以上就是本文的全部内容,