本文共 5458 字,大约阅读时间需要 18 分钟。
本篇文章是杂谈兼科普类文章,讲的比较随性,尽量避免讲到技术细节部分,以免诸位睡着*_*!!
说到这里我就想提下chrome,一个web浏览器,他的代码竟然还成为笔记本的操作系统,不但卖得不错,还让google已经抛弃掉了平板市场,通过chromebook狙击了一波笔记本市场,真的是难以想象
没有网页的日子是怎样的,这个问题也可以问成:为什么需要网页?
- 首先,你需要给大量的大学和研究室问:你们有没有关于xxx的文献?
- 然后用人家的ftp服务器下载文档,用对应软件打开
- 你浏览文献的时候肯定有几个词的概念,不懂?好了重复之前的步骤 这一套下来,大家可想而知为什么科研人员头发少了吧*_*!!
- 标准输入
- 标准输出
- 环境变量
遵守这个规范编写的程序叫做CGI程序,编写语言不限,servlet就是一个CGI程序。
三个要求的内容大致是这样的:标准输入是指用户真正传递的数据,比如表单信息,文本框
标准输出:这里的输出是指返回给浏览器的输入信息的处理结果,格式不固定,通常是是html或者纯文本格式
类似于这样:fprintf(stdout, "Content-type: %s\r\n\r\n", MimeType); //输出响应头,响应头之后要加两个"\r\n" fprintf(stdout, "CGI小程序 \n"); fprintf(stdout, "由C编写的CGI小程序\n");
你可以看到很多html的标签,CGI程序返回给浏览器的就是这样的内容,这其实也是后来淘汰掉CGI的原因
环境变量:这里是指一些请求信息,和用户具体传递的数据无关,作用类似于配置文件,只是传递执行信息,比如ip地址,端口号,get还是post方法
值得一提的是,CGI中还提出了get和post的概念,在环境变量中可以指定这次传输的请求方式,post方式允许用户发送数据,而Get则无法从服务器中获取数据;不过get可以在url中附加数据比如:
http://www.mycorp.com/hello.html?name=hgq$id=1有些程序员不愿意采用GET方法,因为在他们看来,把动态信息附加在URL的末尾有
违URL的出发点:URL作为一种标准用语,一般是用作网络资源的唯一定位标示。
由此我们可以看出,CGI标准其实是规定了从浏览器发出数据到接受数据的全过程,当然这个只是提出了一个web程序的设计规范,这个规范的落实需要其他个人组织用编程语言来编写成最后可用的程序
关于CGI的详情可以看一看这个帖子:
很快的程序员们就很膈应CGI程序了,因为输出都是把HTML文档一行行的输出,工作量很恐怖,想想现在一个html页面成百上千行,随后可以嵌入部分html的技术很快就出现了
ASP是Active Server Page的缩写,意为“活动服务器网页”。ASP是微软公司开发的代替CGI脚本程序的一种应用,诞生于1996年,目的就是取代CGI这种编写模式,只要把需要改写的数据替换到原来的html文件就行了,同时PHP也采用了同样的开发方式,程序员总算从苦海中解脱了
到此web的夏商周的上古时代已经结束,web从静态到动态再到稳定可开发,用了6,7年的时间,从无到有,接下来就是动态网页的春秋战国时代了
有意思的是,java的在web领域第一步不是在后端,而是在前端,当然那个时候还么有前后端的概念。当时java程序开发方向一般分成两部分,应用程序和应用小程序。前者不用讲大家都很熟悉,比如在手机上各种java软件和游戏,而另一个就是应用小程序,这是java在web领域的首秀,一般我们称作java applet或者简称applet,而applet的中文意思也是小程序。applet作用就是给页面提供一定的动态功能,比如嵌入一个音乐播放器或者小游戏之类的,只能干些前端简单的交互功能,实现方式就是在html嵌入java代码。
网景浏览器宣布支持java,所以可以运行html文档镶嵌的java代码,从名字上看小程序肯定是比应用程序体量小,只能干些简单的任务。这也是java发布的时候着重宣传的功能
java applet其实并没有掀起多大的波澜,一个是adobe家的flash疯狂进攻,把applet打的昏头转向,一个是微软眼红于jsp在后端狙击自家的亲儿子asp,在自己家的ie浏览器中不再支持java插件,最后还有JS的强势崛起,先后把applet和flash拍在了沙滩上。
jsp诞生是爆炸性的,他的诞生迅速席卷了整个软件业,jsp借鉴了asp嵌入html文档的思路,加上本身java拥有“一次编译,到处执行”的强大优势,身出名门的ASP也只有超架之功,毫无还手之力且asp只能在本家的win server运行。当asp升级为asp.net的时,借助强大的.net,asp终于能和jsp一较高下了,但是结果就像我们现在看到的那样,jsp被各种java框架取代,前端也和java say good bye了
JSP全名为Java Server Pages,其实就是servlet加入了类似于asp动态修改页面的技术,摇身一变就成了jsp(j就是指java,asp的a是actve)
jsp的出现很快就在全球的编程界传开,一个个项目纷纷上了jsp这条大船,大家喜大普奔,办公室里充满了快活的气息。
然而好景不长,大家就笑不起来了,这玩意写的时候是挺爽的,但是一会java一会html是真的难受,维护起来也是脑壳痛,都写一起分不开了,一个页面代码也是上千行,有用没用都堆在一起,大家发现jsp和asp这种前后不分的现状是个大麻烦,不过当时这俩已经是最先进的技术了,不好你也没得选,不过技术上不够,咱们可以在开发思路上弥补不足,这样MVC开发思路就引入了web开发中来
其实MVC在70年代的时候就已经提出来了,而最早的web网页的出现要到1990年MVC并不是一个技术,而是一种解决问题的思路,MVC更不是在java时代才提出来的,MVC就是web应用开发中的“如何把大象装进冰箱”,到web应用开发就变成了“如何分离html和服务器程序代码”
可能许多人和我一样接触MVC的时候就发现有些不对劲,model view controller好像和我们真正开发项目的时候对不上,总觉得好像MVC这三个词好像并不够用,那是因为MVC这个东西本身就是C/S开发时候提出来的。
jsp,asp时代中出现的前后不分的情况,这是web开发中出现了新问题,需要程序员们找到一个解决这一问题的方法
*前后端不分离在传统软件开发中也出现过,而MVC的思想刚好可以拿试一下,当然B/S开发和C/S开发也是不同的,不能拿来主义,需要根据B/S开发中的实际情况出发,琢磨出一套适用于B/S开发,解决前后不分的思路。结果是成功了,但是MVC的名字也没改,许多教材和教程也就直接说成是web开发中提出来的,web MVC当然也是MVC在web领域的解决思路一种,但是这会给后来的学习者带来很多误解
最后怕大家乱套,我大概整理一下web整体的一个发展过程,从最开始只能发布一些公告的静态网页,到CGI支持修改页面内容成为真正的动态网页,从CGI输出千行html代码,到asp精简所需的代码,java横空出世赶上web发展大潮,诞生了serlvet,由于serlvet有CGI的缺点,sun公司根据asp开发了jsp,再从jsp到mvc思想和各种框架了。
再往后就是现在所了解的各种框架了,大家都比我了解,这里我也就不去提了,有时间我会把后面的MVC具体的发展过程整理出来,敬请期待
转载地址:http://nkppi.baihongyu.com/