一直以后, 只知道打开浏览器, 输入网址便可以上网浏览网页, 但是当认真琢磨起这web编程的时候, 对于很多细节却是感觉很迷惑, 在慢慢的学习中, 才逐渐有了些了解。
web有client/server(客户端和服务器端), 平时我们上网所用的broswer(浏览器)就是client,当我浏览goolge、amazon等这些网站时, 这些网站都是运行在服务器上的, 所以我们才能够访问这些网站。 那么从网页到服务器到底是怎么运行起来的呢。 就那我们在在网站上进行用户登录这个例子来说:
我们首先是通过浏览器打开我们要登录的网站, 然后在表单中填入帐号和密码,点击登录,登录成功之后我们就看到了一些属于自己所拥有的东西。 我们在浏览器上所看到的网页其实是一个个的HTML文件, 我们在网页上的表单中填写的用户名和密码等数据会被浏览器通过HTTP协议传送到web服务器, 服务器则会验证用户,成功后将用户的信息和一些必要的信息生成HTML页面返回给浏览器。
那么服务器是如何要怎么处理发送过来的各种数据的呢? 答案就是CGI脚本。
CGI(Common Gateway Interfact)通用网关接口,是一种重要的互联网技术, 可以让一个客户端,从网页浏览器想执行在web服务器上的程序,请求数据。CGI描述了客户端和服务器之间传输数据的一种标准。 更多信息可以上网查阅。当然这样的说法有点太官方, 让人不太好理解。 在我的理解, 通过用一种脚本语言来编写一个CGI脚本程序, 服务器中每个脚本都是用来处理相应的数据的。 浏览器向服务器传送数据, 服务器就会用相应的CGI脚本去处理数据, 并返回一定的页面信息。 其大体流程可以用下面这幅图来简单示译。
用户通过浏览器来浏览网页, 点击一些超链接或者是填写表单信息来向服务器发送请求, 服务器通过调用CGI脚本程序来处理数据并返回用户请求的内容。 关于浏览器和服务器的之间的数据请求、响应等知识, 需要详细了解HTTP协议,《HTTP The Definitive Guide》这本书挺不错的。
CGI脚本可以通过任何脚本语言来实现, 只要这个语言可以在这个系统上运行。shell script、Python、Ruby、PHP和C都可以用来编写CGI脚本。 至于选择哪一种语言, 我感觉应该是全凭个人喜好了。
CGI脚本执行所需要的数据一方面是来自浏览器页面的请求, 另一方面就主要是来自服务器端的数据库, 像用户信息之类的数据全都是存储在数据库中的。
虽然现在的web开发已经几乎没人在用CGI脚本了, 但是想逐渐了解web编程, 我感觉还是有必要去熟悉最初的工作流程的。
这样, web编程被分为了三部分, HTML文件的编写, CGI脚本的编写和数据库的数据存储和相关接口的实现。