网站交互的理解

@原创文章,转载请注明: 转载自 镜中影的技术博客
本文链接地址: 网站交互的理解)
URL:http://blog.csdn.net/linkpark1904/article/details/50790963

在工作室摸爬滚打了许久,对于网站开发还是有部分自己的心得与体会,虽然在工作室的主要职责是负责前台部分的开发以及运维等等,但是了解的方面多了之后,才发现,计算机整个学科有许多东西都是通的,有很多共同的部分,只是,一开始我们每个人的出发点和侧重点有所不同,但深入下去,必然会有交集的。

HTTP协议

http协议其实很简单,所谓协议,说白了,就是客户与服务器之间通信交流的桥梁,客户机需要服务器做些什么动作,那么就会发送一串按照既定规则编写的消息给服务器,服务器解析这则消息,同样的根据既定的规则,将回复消息回复给客户,完成客户机与服务器的通信。那么这个既定的规则就是我们的协议。

HTTP协议其实很简单,总共也就四种方法,GET,POST,PUT,DELETE。REST风格协议,不会维持客户端与服务器的状态,每次发送一条新的消息的时候就会发起一次TCP连接。一条典型的get方法的http协议如下所示:

GET / HTTP/1.1
Host: xkcd.com
Accept: text/html
User-Agent: Mozilla/5.0 (Macintosh)

相应的,服务器端在收到之后回复给客户端的协议如下:

HTTP/1.1 200 OK
Date: Sat, 02 Apr 2011 21:05:05 GMT
Server: lighttpd/1.4.19
Content-Type: text/html

<html>
    <!--html for xkcd.com-->
</html>

就是这样的你来我往,造就了我们的web服务器,据说,早先的web服务器还真就只是这个版本,网站管理员只是在后台发布html静态页面,客户端通过浏览器网址(url)来访问这些静态页面的内容,获取相应的信息,并没有今天这么多的交互。

CGI

CGI(Common Gateway Interface),公共网关接口,看起来很高端大气上档次吧。C、G、I三个字母组成起来到底是个啥玩意儿。没关系,我们网站发展的业务需求上来看CGI产生的原因。

前面说了,早先的web服务器仅仅只是提供静态页面给用户来看,但是许多用户有这样的需求:1、我需要对这篇文章进行评论。2、我需要在线下发布自己的文章内容。3、我需要注册网站账号……这样一系列的交互式的需求,在静态页面中是做不到的。

还记得http协议中有所谓的post方法吧,post方法语义是Create a resource on the server,也就是向服务器端提交资源。那么上述这些需求,是可以实现的,但是web服务器的功能仅是提供静态页面,没办法支持这些复杂的功能,于是为了丰富我们的webserver的功能,webserver在设计的时候就留了这样的一个接口,也就是CGI,说白了,CGI就是连接webserver和我们自己应用程序的标准接口,是保证webserver和外部应用程序通信的数据管道。

举个例子,像我们的平常所做的登陆流程,实际上,我们在写完用户名和密码之后,通过http的post方法,将我们的用户名密码通过http协议封装提交到服务器,服务器通过url字段判断这个消息需要发送给后面运行的哪个应用程序进行处理,于是就通过CGI,将这个协议丢给相应的应用程序做处理,应用程序做完之后,生成相应的静态html,通过CGI丢给webserver,webserver再展现给客户端,于是整个流程就完了。

举个很简单的例子,在前台,我们的form表单上可能会这么写:

<form action="index.php">
    <input name="name" type="text" />
    <input name="passwd" type="password" />
    <input type="submit">
</form>

这个时候这个action字段里面就提供了我们的应用程序index.php这个php脚本,我们的数据会提交给这个脚本进行处理,相应的,在后台,我们的index.php这个脚本可以这么写

<?php
    $name = $_POST["name"];
    $passwd = $_POST["passwd"];

    print $name;
    print passwd;
?>

简单的将你的用户名密码打印出来,生成html页面,通过CGI反馈给webserver,webserver再反馈给用户,具体流程可以看看下面这个图:
cgi流程

这样就丰富了我们的webserver的功能,当然,这里仅仅只列举了php这门脚本语言来实现CGI这个接口,能够实现CGI接口的语言很多,python呀,java呀,ruby呀之类的,甚至连c语言也能够办到,但语言不是问题,关键还是在思想。通过这些语言扩展的页面就是所谓的动态页面,能够根据执行一定的业务逻辑,生成用户想要的静态页面。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值