静态页面
最初的网页只是作为静态资源的展示,其实,和画黑板报一个意思,只是一下信息的展示,供大家浏览,缺少了交互。
缺点:缺少动态交互CGI
CGI,Common Gateway Interface,公共网关接口,其实思想,就是把交互的代码放到服务器上,代码可以使用各种java, c, 等;CGI分三个模块,环境变量,标准输入,标准输出;
每一次请求到来,从环境变量中读取数据,标准输入就是GET,POST发送的数据,然后,启动CGI程序,注意,这里是启动一个进程。然后处理逻辑代码,将生成的HTML代码,发送到标准输出,返回。显然
缺点:一次请求就要启动一个进程。Applet
是一种java程序,运行在支持java的web 浏览器内,有专门的HTML标签<applet>
支持,一次请求后,Applet程序和HTML页面一起返回给客户端。既然是java程序,那必须要JVM才能运行,所以在运行含有Applet的HTML页面时,要么是浏览器的JVM插件,要么有独立的运行环境,也就是所谓的“沙箱”。Applet,继承了 java.applet.Applet 类,定义了5个方法:
init:初始化方法,只调用一次;
start:每次用户跳转到含有Applet的页面时,调用一次;
stop:当用户从含有Applet的页面移除时,调用;
destroy:当浏览器关闭时,调用;
paint:在start方法调用后,立即被调用,相当于service方法。缺点:需要浏览器支持JVM,Applet运行需要的jar包,需要从服务器下载。
Servlet
从名字上可以看出,与Applet是对应的,Applet是运行在浏览器上的java程序,而Servlet,是运行在web 服务器上的java程序。Servlet吸收了CGI和Applet的特点,把java代码放在了服务器端,并且做到了,一次请求只启动一个线程,这样大大减少了开销,提高了处理能力。大家通常谈论的Servlet,是javax包里的一个接口,其实,Servlet应该看做是一个协议约定,它规定了:
init:初始化的时候,应该做些什么;
service:具体的逻辑处理部分,也就是核心的业务逻辑代码;
destroy:程序销毁的时候,应该做些什么。原理上,Servlet应该能处理各种协议的请求,但是现在大部分都是用来处理HTTP请求了。
缺点:对web容器具有依赖性JSP
JSP,java server pages,算是基于Servlet的一个补充优化,因为只有servlet的话,你需要单独编写servlet,HTML页面,然后通过HTML调用,合成最终页面。JSP也称为动态页面,其实就是,在HTML页面里,嵌入java代码,通过这样,达到页面动态改变的功能。JSP在处理的时候,其实也是,先通过web server的JSP引擎,转换为servlet,执行servlet,然后将结果合成一个HTML页面,返回给客户端。
这篇只是大概描述了一下,java web的发展过程,虽然我们有了servlet,但是我一次HTTP请求后,如何调用到具体的servlet程序,他是如何执行,并返回结果的?
留下这些疑问,下一篇里,再叙。