定义 login 的一个方法login的路由控制,当用户端发起 get 请求来访问 /login 服务端读取模板文件,返回给用户端一个登录界面就是上面的模板文件,客户完成客户名和密码填写后提交以 post 方式表单数据给服务端时候。用户端获取r.Form获取表单数据简单打印出来。这就完成一次用户端向服务端的表单提交
注意要获取表单数据,用户端肯定要先调用r.ParseForm()方法
package mainimport( "fmt" "html/template" "log" "net/http" // "strings")func index(w http.ResponseWriter, r *http.Request){}func login(w http.ResponseWriter, r *http.Request){ fmt.Println("method: " + r.Method) r.ParseForm() if r.Method == "GET"{ t, _ := template.ParseFiles("login.gtpl") t.Execute(w, nil) }else{ fmt.Println("username: ", r.Form["username"]) fmt.Println("password: ", r.Form["password"]) }}func iconHandler(w http.ResponseWriter, r *http.Request) { }func main() { http.HandleFunc("/",index); http.HandleFunc("/login",login); server := &http.Server{ Addr:":9090", } log.Println("Listening...") err := server.ListenAndServe() if err != nil{ log.Fatal("Listen And Server ", err) }}
在 web 应用开发中,我们经常会对邮件地址、客户名、电话号码以及居民身份中进行校验,下面列出了这些常用的正则表达式。
电子邮件地址
if m, _ := regexp.MatchString(`([\w.\_]{2,10})@(\w{1,}).([a-z]{2,4})$`,"qq123@qq.com"); !m { fmt.Println("invalidated email address") }else{ fmt.Println("validated") }
手机号码
if m, _ := regexp.MatchString(`^(1[3|4|5|8][0-9]\d{4,8})$`,"13840008000"); !m { fmt.Println("invalidated phonenumber address") }else{ fmt.Println("validated phonenumber") }
匹配中文
if m, _ := regexp.MatchString("^[\\x{4e00}-\\x{{9fa5}}]+$","代码"); !m { fmt.Println("invalidated chinese") }else{ fmt.Println("validated chinese") }