• go搭建服务器基础


    goweb应用工作原理(用于个人学习)

    ​ 客户端发送请求给多路复用器,多路复用器根据请求------->处理器处理器-------->模型------->数据库

    数据库找到相应的数据反馈给模型,模型将数据封装发给处理器 ,处理器给模板引擎然后生成模板

    在这里插入图片描述

    go里面有相应的http的包直接调用即可,这一点比java相对方便很多,下面有几种方式可以搭建服务器

    hanglerFunc方式

    package main    //声明包
     
    import (      //导入包    
    	"fmt"     //打印使用
    	"net/http"  //  http服务使用
    )
    //处理器
    func hangler(w http.ResponseWriter, r *http.Request) {     //名称可以随意命名   函数的参数不可随意命名
    	fmt.Fprintln(w, "hello goweb", r.URL.Path)   //写到前台页面上去
    
    }
    
    func main() {
    	http.HandleFunc("/", hangler)     //更具web原理  添加路径 添加处理器   将路径和处理器产生关联
    	http.ListenAndServe(":8080", nil)  // 端口号   
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    Mux多路复用方式

    package main
    
    import (
    	"fmt"
    	"net/http"
    )
    
    func hangler(w http.ResponseWriter, r *http.Request) {
    	fmt.Fprintln(w, "hello goweb", r.URL.Path)
    
    }
    
    func main() {
    	mux := http.NewServeMux()  //多路服务器处理请求
    	http.HandleFunc("/", hangler)
    	http.ListenAndServe(":8080", mux)
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    handle

    package main  //声明包
    
    import (
    	"fmt"     // 打印
    	"net/http"// http
    	"time"
    )
    
    type Myhangdler struct{}  //定义结构体
    
    func (m *Myhangdler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    	fmt.Fprintln(w, "通过自己创建的处理器处理请求自定义hangler")
    }
    
    func main() {
    	myhangdler := Myhangdler{}    //实例化接工体
    	server := http.Server{
    		Addr:        ":8080",   //声明端口
    		Handler:     &myhangdler,  //声明处理器
    		ReadTimeout: 2 * time.Second,  //读取时间设置
    	}
    	server.ListenAndServe()   // 应用到监听中去
    
    	//http.Handle("/myhangler", &myhangdler)
    	//http.ListenAndServe(":8080", nil)
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
  • 相关阅读:
    MySQL中都有哪些锁?
    Referer和Referrer Policy及图片防盗链
    垃圾收集器ParNew&CMS与底层三色标记算法
    Python 工匠:一个关于模块的小故事
    时间同步产品(NTP北斗时钟服务器)如何完成网络同步的?
    wu-framework-parent 项目明细
    分析概览 文章管理 草稿管理 图片管理 站点管理 主站 关于 登出 手写操作系统项目----进程
    ribbon负载均衡
    Qt之自定义事件QEvent
    深入了解线程:并发编程的核心要点和应用
  • 原文地址:https://blog.csdn.net/weixin_43878062/article/details/125470087