goweb应用工作原理(用于个人学习)
客户端发送请求给多路复用器,多路复用器根据请求------->处理器处理器-------->模型------->数据库
数据库找到相应的数据反馈给模型,模型将数据封装发给处理器 ,处理器给模板引擎然后生成模板
go里面有相应的http的包直接调用即可,这一点比java相对方便很多,下面有几种方式可以搭建服务器
hanglerFunc方式
package main //声明包import(//导入包 "fmt"//打印使用"net/http"// http服务使用)//处理器funchangler(w http.ResponseWriter, r *http.Request){//名称可以随意命名 函数的参数不可随意命名
fmt.Fprintln(w,"hello goweb", r.URL.Path)//写到前台页面上去}funcmain(){
http.HandleFunc("/", hangler)//更具web原理 添加路径 添加处理器 将路径和处理器产生关联
http.ListenAndServe(":8080",nil)// 端口号 }
Mux多路复用方式
package main
import("fmt""net/http")funchangler(w http.ResponseWriter, r *http.Request){
fmt.Fprintln(w,"hello goweb", r.URL.Path)}funcmain(){
mux := http.NewServeMux()//多路服务器处理请求
http.HandleFunc("/", hangler)
http.ListenAndServe(":8080", mux)}
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")}funcmain(){
myhangdler := Myhangdler{}//实例化接工体
server := http.Server{
Addr:":8080",//声明端口
Handler:&myhangdler,//声明处理器
ReadTimeout:2* time.Second,//读取时间设置}
server.ListenAndServe()// 应用到监听中去//http.Handle("/myhangler", &myhangdler)//http.ListenAndServe(":8080", nil)}
版权归原作者 出现一片乱码 所有, 如有侵权,请联系我们删除。