将客户端输入的内容转换成md5值

本例中的服务端是自己定义的,在做服务端之前,需要了解服务端如何监听客户端的请求相关的知识。没有页面,我通过将页面的信息保存在一个常量中,go语言是支持的,然后就给常量赋值给服务端向客户端返回内容的对象里面,从而返回到浏览器上是一个界面的内容。

这就是定义的包含界面信息的常量:

const HTML = `<html>
  <head>
     <title>xxt-sms test </title>
     <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
  </head>
  <body>
    <form action="/" method="post">
    	<input name="name" placeholder="请输入用户名" type="text"/>
        <input type="submit" value="提交">
    </form>
  </body>
</html>`

将字节切片类型通过Md5函数返回为字符串类型:需要导入包:"crypto/md5"

func Md5(buf []byte) string {
	hash := md5.New()
	hash.Write(buf)
	return fmt.Sprintf("%x", hash.Sum(nil))
}
服务端接收到客户端传递的请求,需要判断该请求的方式:

func indexHandle(w http.ResponseWriter, r *http.Request) {
	m := r.Method
	//判断请求的方式
	if m == "GET" {
		sendIndexPage(w, r)
	} else {
		parseIndexPost(w, r)
	}
}

通过r.Method得到客户端提交的请求。

get请求来处理页面:

func sendIndexPage(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, HTML) //这个写入到w的是输出到客户端的
}
处理post请求,需要得到浏览器上表单中的某个控件的值。注意:从表单上得到的某个控件的值,go语言默认为是[]string即字符串切片类型。

func parseIndexPost(w http.ResponseWriter, r *http.Request) {
	r.ParseForm()              //解析参数,默认是不会解析的,如果没有写这句话的话,就无法得到请求的表单上面的数据
	username := r.Form["name"] //从表单上得到字符串类型的变量的值是字符串数组,需要通过遍历得到字符串,字符串转换成字节数组的方式:[]byte(str)
	length := len(username)
	var str string
	for i := 0; i < length; i++ {
		str = str + username[i]
	}
	name := []byte(str)
	message := Md5(name)

	fmt.Fprintf(w, message) //将结果返回到客户端
}

搭建一个简单的web服务器:

http.HandleFunc("/", indexHandle)        //设置访问的路由
	err := http.ListenAndServe(":9091", nil) //设置监听的端口
	if err != nil {
		log.Fatal("listenAndServe:", err)
	}

完整代码请见文件httpmd5.go。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值