一. 资源拷贝

  • 删除项目中static和view文件夹,把02资料/章节203总体页面展示中内容粘贴到项目中
  • 测试登录成功后是否可以正确显示主页面

二.代码修改

  • 确保%GOROOT%/src/github.com/下有gorilla文件夹,如果没有参照:03数据库操作和Go Web/笔记/章节4_07_restful进行配置
  • 由于在main中声明的全局对象无法被其他包调用,所以在commons文件夹下新建CommonVars.go,保证整个项目任何包都可以使这个对象进行设置Handler
  1. package commons
  2. import "github.com/gorilla/mux"
  3. var (
  4. Router = mux.NewRouter()
  5. )
  • 修改main.go中代码,称为restful风格
  1. package main
  2. import (
  3. "net/http"
  4. "html/template"
  5. "user"
  6. "commons"
  7. "github.com/gorilla/mux"
  8. )
  9. //显示登录页面
  10. func welcome(w http.ResponseWriter, r *http.Request) {
  11. t, _ := template.ParseFiles("view/login.html")
  12. t.Execute(w, nil)
  13. }
  14. //restfule风格显示页面
  15. func showPage(w http.ResponseWriter, r *http.Request) {
  16. vars := mux.Vars(r)
  17. t, _ := template.ParseFiles("view/" + vars["page"] + ".html")
  18. t.Execute(w, nil)
  19. }
  20. func main() {
  21. commons.Router.HandleFunc("/", welcome)
  22. commons.Router.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
  23. commons.Router.HandleFunc("/page/{page}", showPage)
  24. //调用所有user模块的handler
  25. user.UserHandler()
  26. http.ListenAndServe(":80", commons.Router)
  27. }
  • 修改user/UserController中UserHandler()函数
  1. //所有user模块的handler
  2. func UserHandler() {
  3. commons.Router.HandleFunc("/login", loginController)
  4. }