Go基础留言板系统使用标准库实现:定义Message结构体与内存切片存储,HTML模板渲染表单及留言列表,HTTP路由处理GET展示与POST提交,提交后重定向防重复,支持XSS防护。
用 Go 构建一个基础留言板系统,核心是处理 HTTP 请求(接收表单提交)、存储数据(内存或文件暂存)、再渲染页面展示所有留言。下面以 纯标准库 + HTML 模板 实现一个可运行的最小可行版本,不依赖数据库或框架,适合初学理解流程。
先定义留言结构体,并用切片在内存中暂存(开发调试够用,生产环境应换为 SQLite/PostgreSQL):
(放在 main.go 开头)
type Message struct {
ID int `json:"id"`
Username string `json:"username"`
Content string `json:"content"`
CreatedAt time.Time `json:"created_at"`
}
var messages = make([]Message, 0)
var nextID = 1
新建 index.html 文件,放在项目根目录:
留言板 留下你的想法
暂无留言
{{end}}在 main.go 中注册两个路由:/(GET,显示页面)和 /submit(POST,接收并保存留言):
func main() {
// 加载模板
tmpl := template.Must(template.ParseFiles("index.html"))
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
if r.Method != "GET" {
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
return
}
// 渲染模板,传入所有留言
tmpl.Execute(w, messages)
})
http.HandleFunc("/submit", func(w http.ResponseWriter, r *http.Request) {
if r.Method != "POST" {
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed
)
return
}
// 解析表单
err := r.ParseForm()
if err != nil {
http.Error(w, "解析失败", http.StatusBadRequest)
return
}
username := strings.TrimSpace(r.FormValue("username"))
content := strings.TrimSpace(r.FormValue("content"))
if username == "" || content == "" {
http.Error(w, "昵称和内容不能为空", http.StatusBadRequest)
return
}
// 保存新留言
msg := Message{
ID: nextID,
Username: username,
Content: content,
CreatedAt: time.Now(),
}
messages = append(messages, msg)
nextID++
// 提交后重定向到首页,避免重复提交
http.Redirect(w, r, "/", http.StatusSeeOther)
})
fmt.Println("服务器运行中:https://www./link/cbb686245ece57c9827c4bc0d0654a8e")
http.ListenAndServe(":8080", nil)
}
go run main.go,打开 https://www./link/cbb686245ece57c9827c4bc0d0654a8e
{{.Content | html}} 是为防止 XSS,自动转义 HTML 特殊字符
# html
# js
# json
# go
# golang
# 处理器
# app
# usb
# ai
# 路由
# 表单提交
# 标准库
# red
# xss
# csrf
# 结构体
# 数据结构
# 切片
# sqlite
# postgresql
# 数据库
# http
# 表单
# 放在
# 重定向
# 暂无
# 提交后
# 如需
# 重启
# 验证码
# 首页
相关文章:
如何选择高效便捷的WAP商城建站系统?
制作表格网站有哪些,线上表格怎么弄?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
建站之星收费标准详解:套餐费用及年费价格表一览
建站为何优先选择香港服务器?
如何使用Golang安装API文档生成工具_快速生成接口文档
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
上海网站制作开发公司,上海买房比较好的网站有哪些?
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
jQuery 常见小例汇总
如何在阿里云虚拟服务器快速搭建网站?
建设网站制作价格,怎样建立自己的公司网站?
建站之星安装后界面空白如何解决?
免费视频制作网站,更新又快又好的免费电影网站?
焦点电影公司作品,电影焦点结局是什么?
如何通过IIS搭建网站并配置访问权限?
建站主机系统SEO优化与智能配置核心关键词操作指南
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
css网站制作参考文献有哪些,易聊怎么注册?
广州建站公司哪家好?十大优质服务商推荐
网页设计网站制作软件,microsoft office哪个可以创建网页?
广平建站公司哪家专业可靠?如何选择?
常州企业建站如何选择最佳模板?
如何通过万网虚拟主机快速搭建网站?
如何挑选高效建站主机与优质域名?
股票网站制作软件,网上股票怎么开户?
在线制作视频的网站有哪些,电脑如何制作视频短片?
清除minerd进程的简单方法
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
如何在IIS中配置站点IP、端口及主机头?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
h5网站制作工具有哪些,h5页面制作工具有哪些?
香港服务器租用每月最低只需15元?
动图在线制作网站有哪些,滑动动图图集怎么做?
如何通过.red域名打造高辨识度品牌网站?
为什么Go需要go mod文件_Go go mod文件作用说明
郑州企业网站制作公司,郑州招聘网站有哪些?
北京网站制作的公司有哪些,北京白云观官方网站?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
如何在橙子建站上传落地页?操作指南详解
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
Python lxml的etree和ElementTree有什么区别
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
香港服务器租用费用高吗?如何避免常见误区?
建站之星多图banner生成与模板自定义指南
如何配置FTP站点权限与安全设置?
制作宣传网站的软件,小红书可以宣传网站吗?
内部网站制作流程,如何建立公司内部网站?
C++中引用和指针有什么区别?(代码说明)
*请认真填写需求信息,我们会在24小时内与您取得联系。