文档章节

使用golang编写Web程序(三)

 渣渣曦
发布于 2016/09/02 22:36
字数 264
阅读 83
收藏 0

上一节我们使用go语言加载了一个纯文字的html页面,但是没有实现交互功能,我们改造一下html页面,增加两个页面代码如下:

input.html

<div>
    <form action="/output" method="POST">
        <input name="username" value="">
        <button>发送用户名</button>
    </form>
</div>

output.html

你好:{{.username}}

上面html代码通过form的POST方法发送请求数据到服务端,服务端代码如下:

main.go

package main

import (
	"fmt"
	"html/template"
	"log"
	"net/http"
)

func InputHandler(w http.ResponseWriter, r *http.Request) {
	if r.Method=="GET"{
		t, err := template.ParseFiles("input.html")
		if err != nil {
			log.Println(err)
		}
		err = t.Execute(w,nil)
		if err != nil {
			log.Println(err)
		}
	}
}

func OutputHandler(w http.ResponseWriter,r *http.Request){
	if r.Method=="POST"{
		t, err := template.ParseFiles("output.html")
		if err != nil {
			log.Println(err)
		}
		err = t.Execute(w,map[string]interface{}{"username": r.FormValue("username")})
		if err != nil {
			log.Println(err)
		}
	}
}

func main() {
    http.HandleFunc("/input",InputHandler)
	http.HandleFunc("/output",OutputHandler)
	fmt.Println("服务端口:8000")                 //控制台输出信息
	err := http.ListenAndServe(":8000", nil) //设置监听的端口
	if err != nil {
		log.Fatal("ListenAndServe: ", err)
	}
}

我们通过 http://localhost:8000/input 访问页面如下:

文本框中随意输入内容后单击“发送用户名”,页面跳转至 http://localhost:8000/output 后如下:

© 著作权归作者所有

粉丝 11
博文 33
码字总数 9701
作品 0
呼和浩特
私信 提问
Node.js与Golang使用感受与小结【一】

Node.js与Golang使用感受与小结 目录 一、互联网的基石TCP/IP协议 二、HTTP服务器编写与编程语言无关 三、构建HTTP服务器需要掌握的知识点 四、HTTP协议基础 五、Node.js简介 六、是前端选择...

念念之间
2013/05/22
0
8
年终盘点!2017年超有价值的Golang文章

年终盘点!2017年超有价值的Golang文章 鸟窝2017-12-281 阅读 Go 马上就要进入2018年了,作为年终的盘点,本文列出了一些2017年的关于Go编程的一些文章,并加上简短的介绍。 文章排名部分先后...

鸟窝
2017/12/28
0
0
Golang资料集

该资源的github地址:Qix 《Platform-native GUI library for Go》 介绍:跨平台的golang GUI库,支持Windows(xp以上),Unix,Mac OS X(Mac OS X 10.7以上) 《Gopm 快速入门》 介绍:Gopm(Go 包管...

ty4z2008
2016/03/11
0
0
Golang通过Thrift框架完美实现跨语言调用

  每种语言都有自己最擅长的领域,Golang 最适合的领域就是服务器端程序。   做为服务器端程序,需要考虑性能同时也要考虑与各种语言之间方便的通讯。采用http协议简单,但性能不高。采用...

qinerg
2013/09/29
0
19
为什么 PHPer 应当学习 Golang

熟悉我的朋友应当知道,近些年的大部分时间我的工作都会多少和 PHP 相关。随着 PHP 有着越来越深入的了解,以及遇到越来越多的不同业务时,使用 PHP 总会让我有一种莫名的无力感。当然,并不...

龙鸟
2012/11/28
0
4

没有更多内容

加载失败,请刷新页面

加载更多

Linux修改时区的正确方法【修改时间,需要修改软连接,靠谱】

CentOS和Ubuntu的时区文件是/etc/localtime,但是在CentOS7以后localtime以及变成了一个链接文件 [root@centos7 ~]# ll /etc/localtime lrwxrwxrwx 1 root root 33 Oct 12 11:01 /etc/loca......

Airship
34分钟前
0
0
《Netkiller Spring Cloud 手札》之 Master / Slave 主从数据库数据源配置

5.19.1. Master / Slave 主从数据库数据源配置 5.19.1.1. application.properties spring.datasource.master.driverClassName = com.mysql.cj.jdbc.Driverspring.datasource.master.url=j......

netkiller-
38分钟前
41
0
大数据(hadoop-HDFS的本地开发环境的配置与常见的HDFS的JAVA API)

HDFS的本地开发环境搭建 1:所需工具 1)hadoop2.7.3安装包 2)hadoop-eclipse-plugin插件 https://github.com/winghc/hadoop2x-eclipse-plugin 2:搭建过程 1:解压hadoop2.7.3文件2:下载...

这很耳东先生
49分钟前
1
0
TCP协议的定义和丢包时的重传机制

TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,...

tantexian
50分钟前
2
0
图解Tomcat类加载机制(阿里面试题)

Tomcat的类加载机制是违反了双亲委托原则的,对于一些未加载的非基础类(Object,String等),各个web应用自己的类加载器(WebAppClassLoader)会优先加载,加载不到时再交给commonClassLoader走双...

群星纪元
55分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部