美文网首页
Go web(http)工作执行流程

Go web(http)工作执行流程

作者: 冰泡泡薄荷味 | 来源:发表于2016-12-07 22:24 被阅读188次
  • 首先调用Http.HandleFunc
    按顺序做了几件事:
    1 调用了DefaultServeMux的HandleFunc
    2 调用了DefaultServeMux的Handle
    3 往DefaultServeMux的map[string]muxEntry中增加对应的handler和路由规则
  • 其次调用http.ListenAndServe(":9090", nil)
    按顺序做了几件事情:
    1 实例化Server
    2 调用Server的ListenAndServe()
    3 调用net.Listen("tcp", addr)监听端口
    4 启动一个for循环,在循环体中Accept请求
    5 对每个请求实例化一个Conn,并且开启一个goroutine为这个请求进行服务go c.serve()
    6 读取每个请求的内容w, err := c.readRequest()
    7 判断handler是否为空,如果没有设置handler(这个例子就没有设置handler),handler就设置为DefaultServeMux
    8 调用handler的ServeHttp
    9 在这个例子中,下面就进入到DefaultServeMux.ServeHttp
    10 根据request选择handler,并且进入到这个handler的ServeHTTP
    mux.handler(r).ServeHTTP(w, r)
    11 选择handler:
    A 判断是否有路由能满足这个request(循环遍历ServerMux的muxEntry)
    B 如果有路由满足,调用这个路由handler的ServeHttp
    C 如果没有路由满足,调用NotFoundHandler的ServeHttp

相关文章

  • goweb协程

    参考Go如何使得web工作go:net/http ListenAndServe执行流程如下图,Go为了实现高并发和...

  • Go web(http)工作执行流程

    首先调用Http.HandleFunc按顺序做了几件事:1 调用了DefaultServeMux的HandleFu...

  • go web的执行流程

    Request:用户请求的信息,用来解析用户的请求信息,包括post,get,Cookie,url等信息Respo...

  • 来我们探究一下net/http 的代码流程

    [TOC] 探究一下net/http 的代码流程 net/http 是什么? 是GO的其中一个标准库,用于Web应...

  • B/S 架构及 Tomcat

    动态 Web 执行流程 直接用图片展示动态 Web 程序的执行流程,如下图所示: 自己对这个执行流程很熟悉了啊,感...

  • 118、【JavaEE】【SpringMVC】SpringMVC

    1、Java Web 典型的执行流程 1、由客户端(浏览器)发送 HTTP 请求,即浏览器自动生成 HTTP 请求...

  • Go执行流程

    如果是对源码编译后,再执行,Go 的执行流程如下图image.png 如果我们是对源码直接 执行 go run [...

  • Go 调试

    Go的pprof使用 web服务器 import _"net/http/pprof" go func() { ...

  • go web开发学习之路

    基础:go 原生web开发1、go web的工作原理2、搭建一个简单的go web站点3、go web中载入静态文...

  • java基础面试题(一)

    1、servlet执行流程 客户端发出http请求,web服务器将请求转发到servlet容器,servlet容器...

网友评论

      本文标题:Go web(http)工作执行流程

      本文链接:https://www.haomeiwen.com/subject/jbjjmttx.html