设计一个 web 小应用,展示静态文件服务、js 请求支持、模板输出、表单处理、Filter 中间件设计等方面的能力。(不需要数据库支持)
编程 web 应用程序 cloudgo-io。 请在项目 README.MD 给出完成任务的证据!
基本要求
/unknown
给出开发中的提示,返回码 5xx
静态文件夹访问(显示文件夹文件列表)
静态文件访问(显示具体文件)
设置handle函数代码:
mx.PathPrefix("/static").Handler(http.StripPrefix("/static/",http.FileServer(http.Dir(webRoot+"/assets/"))))
当访问链接有/static前缀时进入静态文件访问模式。
js文件
使用jquery的异步访问,访问cloudio服务器,并且返回表格的标题。
$(document).ready(function() {
$.ajax({
url: "/getHeader"
}).then(function(data) {
alert("simple js acess: " + data);
$('#head').html(data);
});
});
go处理函数
使用http相应流返回表格标题。
func getHeader(w http.ResponseWriter, req *http.Request) {
w.Write([]byte("register"))
}
调用js文件
更新表头
用localhost:8080访问后,进入一个表格页面,该表格会提交到localhost:8080/register
中。
设置localhost:8080/register
的post方法响应
mx.HandleFunc("/register", register).Methods("POST")
响应函数
先获得post的数据,然后调用模板创建一个带参数的html文件,然后调用Execute通过w返回该html文件。
func register(w http.ResponseWriter, req *http.Request) {
req.ParseForm()
username := req.Form["username"][0]
password := req.Form["password"][0]
mail := req.Form["mail"][0]
phone := req.Form["phone"][0]
page := template.Must(template.ParseFiles("assets/info.html"))
page.Execute(w, map[string]string{
"username": username,
"password": password,
"mail": mail,
"phone": phone,
})
}
Info.html
提交表格后,进入Info页面,显示刚刚提交的数据其中使用{{.variable}}
来使用刚刚传入的参数。
Info
用户名 邮箱 电话
{{.username}} {{.mail}} {{.phone}}
填写表单
提交后显示表单
设置处理函数
mx.HandleFunc("/unknown", unKnown).Methods("GET")
处理函数中调用http中的Error函数
func unKnown(reqw http.ResponseWriter, req *http.Request) {
http.Error(reqw, "501 Unkown!", 501)
}
Gzip最初从Jean Loup Gailly和mark Adler创建,用于UNIX系统的文件压缩。我们经常使用带后缀的文件,Linux中的Gz,他们是gzip格式的。现在,他已经成为互联网上流行的文件压缩格式。
基于HTTP协议的Gzip编码是一种用于提高web应用程序性能的技术。流量大的网站经常使用gzip压缩技术来给用户感觉快。这通常是指安装在WWW服务器中的功能。当有人访问此服务器中的网站的时候,服务器中的此功能把压缩web内容并把便传输到访问的电脑浏览器以供显示。一般来说,纯文本的内容可以压缩到原始大小的40%。这样,传输会很快,效果是你单击URL,他会很快显示出来。当然,这也会增加服务器的负载,此功能模块安装在很多服务器中。