用户注册
) } // 留言发布处理函数 func handlePublish(w http.ResponseWriter, r *http.Request) { if r.Method == "POST" { // 解析表单数据 r.ParseForm() message := r.PostForm.Get("message") // 插入留言记录到数据库 db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s:%d)/%s", DBUser, DBPassword, DBHost, DBPort, DBName)) if err != nil { log.Fatal(err) } defer db.Close() _, err = db.Exec("INSERT INTO messages (content) VALUES (?)", message) if err != nil { log.Fatal(err) } // 重定向到留言查看页 http.Redirect(w, r, "/messages", http.StatusFound) return } // 显示留言发布页面 fmt.Fprint(w,发布留言
) } // 留言查看处理函数 func handleMessages(w http.ResponseWriter, r *http.Request) { // 查询留言记录 db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s:%d)/%s", DBUser, DBPassword, DBHost, DBPort, DBName)) if err != nil { log.Fatal(err) } defer db.Close() rows, err := db.Query("SELECT * FROM messages") if err != nil { log.Fatal(err) } defer rows.Close() // 显示留言列表 fmt.Fprint(w,留言列表
) for rows.Next() { var content string err := rows.Scan(&content) if err != nil { log.Fatal(err) } fmt.Fprintf(w,%s
, content) } } func main() { // 注册路由和处理函数 http.HandleFunc("/register", handleRegister) http.HandleFunc("/publish", handlePublish) http.HandleFunc("/messages", handleMessages) // 启动Web服务器 log.Fatal(http.ListenAndServe(":8080", nil)) } ``` ## 总结 本文介绍了如何使用Golang编写一个留言本系统,并给出了相应的代码示例。通过阅读本文,你可以了解到如何使用Golang实现用户注册、登录和发布留言等功能。希望本文对你在Golang Web开发方面有所帮助。 ## 参考资料 - [Go语言官方文档](https://golang.org/doc/) - [Go语言标准库](https://golang.org/pkg/)