Applet、Scriptlet与Servlet - 青春念邵的博客 - 博客频道 - CSDN.NET
http://blog.csdn.net/mo_fan_qing_wa/article/details/50016575
小应用程序Applet
Applet简介
Applet是一种特殊的java程序,它本身不能单独运行(因为本身没有main()),需要嵌入在一个HTML文件中,借助浏览器或者appletviewer来解释执行。Applet不能直接用java命令运行,需要先编译成字节码文件
当用户访问这样的网页时,Applet被下载到用户的计算机上执行,但前提是用户使用的是支持Java的网络浏览器。由于Applet是在用户的计算机上执行的,所以它的执行速度不受网络带宽或者Modem存取速度的限制,用户可以更好地欣赏网页上Applet产生的多媒体效果。
Applet 小应用程序的实现主要依靠java.applet 包中的Applet类。与一般的应用程序不同,Applet应用程序必须嵌入在HTML页面中,才能得到解释执行;同时Applet可以从Web页面中获得参数,并和Web页面进行交互。
含有Applet的网页的HTML文件代码中必须带有<applet>和</applet>这样一对标记,当支持Java的网络浏览器遇到这对标记时,就将下载相应的小程序代码并在本地计算机上执行该Applet小程序。
Applet的执行的流程
1.建立applet文件。比如文件命名为Shao.java
2.进入doc。(假设Shao.java存放在E盘的applet\src中) 开始->运行->cmd-> e:->cd applet\src->javac Shao.java
javac.exe会把Shao.java文件编译成字节码文件。
3.此时 E:\applet\src中新生成了Shao.class文件。然后在E:\applet\src中建立1.html文件。
其中1.html文件中的代码为:
<applet code=Shao.class height=300width=300></applet>
4. 在cmd中输入appletviewer 1.html便可以看见你的applet了或直接把这个1.html拖入浏览器运行
Applet的演化
java早年在Web领域唯一的卖点就是Applet,有一段时间非常流行Applet做的动画、聊天室和游戏,那时的浏览器包括IE、Netscape都是包含JVM的。sun原来是和微软推applet的,后来因为一些原因,sun公司与微软闹翻了,IE中也就不再内嵌JVM了,而是把applet下降到插件级别,从此以后sun再也没把心思放到桌面设计,更多因素考虑企业设计,jre也越做越大,桌面用户也越来月不愿意装这个插件了(例如需要:装jre,下载applet本身的类,运行所需的其它类也得下载,这个下载过程越来越慢直接导致Applet失去了用户群)(后来微软以那个虚拟机技术为基础,搞了J++,后来J++不行,就从borland挖来Anders Hejlsberg,直接导致微软C#的诞生和delphi的没落)。正好此时,flash出现了。
你点一个网页提示你要安装个几M的ActiveX控件,可以接受flash和java applet各由一家公司控制,虽然他基本支持所有的浏览器,但毕竟还要安装一套运行库。在AJAX技术提出之后,javascript制作APP的能力被重新发现,不需要另外安装一套运行库就能运行良好就是最大的好处。 (特别是一些前端框架的兴起如:Jquery,Extjs等)很快的Flash被淘汰了
运行applet 需要安装java环境,这个对用户来说成本很高。不过flash也需要插件,但是由于flash的推广很成功,基本上有浏览器的都装了flash插件。html5则完全不用插件,浏览器支持!
在因特网上,ActiveX插件软件的特点是:一般软件需要用户单独下载然后执行安装,而ActiveX插件是当用户浏览到特定的网页时,IE浏览器即可自动下载并提示用户安装。 ActiveX插件安装的一个前提是必须经过用户的同意及确认
Applet运行状态控制的基本方法
Applet类中的四种基本方法用来控制其运行状态:init()、start()、stop()、destroy()
init()方法
这个方法主要是为Applet的正常运行做一些初始化工作。当一个Applet被系统调用时,系统首先调用的就是该方法。通常可以在该方法中完成从网页向Applet传递参数,添加用户界面的基本组件等操作。
start()方法
系统在调用完init()方法之后,将自动调用start()方法。而且,每当用户离开包含该Applet的主页后又再返回时,系统又会再执行一遍
start()方法。这就意味着start()方法可以被多次执行,而不像init()方法。因此,可把只希望执行一遍的代码放在init()方法中。可
以在start()方法中开始一个线程,如继续一个动画、声音等。
stop()方法
这个方法在用户离开Applet所在页面时执行,因此,它也是可以被多次执行的。它使你可以在用户并不注意Applet的时候,停止一些耗用系统资源的工作以免影响系统的运行速度,且并不需要人为地去调用该方法。如果Applet中不包含动画、声音等程序,通常也不必实现该方法。
destroy()方法
与对象的finalize()方法不同,Java在浏览器关闭的时候才调用该方法。Applet是嵌在HTML文件中的,所以destroty()方法不关心何时Applet被关闭,它在浏览器关闭的时候自动执行。在destroy()方法中一般可以要求收回占用的非内存独立资源。(如果在
Applet仍在运行时浏览器被关闭,系统将先执行stop()方法,再执行destroy()方法。
小脚本程序(Scriptlet = Script + Applet)
Live Connect提供了Java与javascript的接口,可以允许在Java
Applet小程序中使用javascript。具体步骤如下:
1) 在HTML脚本中使用〈APPLET〉标志的MAYSCRIPT属性,以允许Java
Applet小程序访问脚本;
2) 将netscape. javascript包导入Java Applet小程序;
3) 在Java
Applet小程序中用JSObject类的getWindow( )方法创建javascript窗口的句柄;
4) 在Java
Applet小程序中用JSObject类的getMember( )方法访问javascript对象;
5) 在Java
Applet小程序中用JSObject类的eval( )方法调用javascript方法。《这个不详细解释》
小服务程序(Servlet = Server + Applet)
Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
servlet是在服务器上运行的小程序。这个词是在Java applet的环境中创造的,Java
applet是一种当作单独文件跟网页一起发送的小程序,它通常用于在服务器端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务。
服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公共网关接口(CGI(Common GatewayInterface))应用程序完成的。然而,在服务器上运行Java,这种程序可使用Java编程语言实现。在通信量大的服务器上,Javaservlet的优点在于它们的执行速度更快于CGI程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。
Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:
服务器将请求信息发送至Servlet,Servlet生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求服务器将响应返回给客户端
Servlet看起来像是通常的Java程序。Servlet导入特定的属于Java
ServletAPI的包。因为是对象字节码,可动态地从网络加载,可以说Servlet对Server就如同Applet对Client一样,但是,由于Servlet运行于Server中,它们并不需要一个图形用户界面。从这个角度讲,Servlet也被称为FacelessObject。
一个servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。
详解Java Servlet与Applet比较 - yasi_xi的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/yasi_xi/article/details/22071099
Java Servlet与Applet相似之处:
◆它们不是独立的应用程序,没有main()方法。
◆它们不是由用户或程序员调用,而是由另外一个应用程序(容器)调用。
◆它们都有一个生存周期,包含init()和destroy()方法。
Java Servlet与Applet不同之处:
◆Applet具有很好的图形界面(AWT),与浏览器一起,在客户端运行。
◆Servlet 则没有图形界面,运行在服务器端。
Java Servlet 与 CGI(Common Gateway Interface) 的比较:
与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资。在未来的技术发展过程中,Servlet有可能彻底取代CGI。
◆高效
在传统的CGI中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间。而在Servlet中,每个请求由一个轻量级的Java线程处理(而不是重量级的操作系统进程)。
在传统CGI中,如果有N个并发的对同一CGI程序的请求,则该CGI程序的代码在内存中重复装载了N次;而对于Servlet,处理请求的是N个线程,只需要一份Servlet类代码。在性能优化方面,Servlet也比CGI有着更多的选择。
◆方便
Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。
◆功能强大
在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成。例如,Servlet能够直接和Web服务器交互,而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。
◆可移植性好
Servlet用Java编写,Servlet API具有完善的标准。因此,为IPlanet Enterprise Server写的Servlet无需任何实质上的改动即可移植到Apache、Microsoft IIS或者WebStar。几乎所有的主流服务器都直接或通过插件支持Servlet。
◆节省投资
Java Servlet与Applet不仅有许多廉价甚至免费的Web服务器可供个人或小规模网站使用,而且对于现有的服务器,如果它不支持Servlet的话,要加上这部分功能也往往是免费的(或只需要极少的投资)。
Java Servlet 与 JSP(JavaServer Pages) 的比较:
JavaServer Pages(JSP)是一种实现普通静态HTML和动态HTML混合编码的技术,JSP并没有增加任何本质上不能用Servlet实现的功能。但是,在 JSP中编写静态HTML更加方便,不必再用println语句来输出每一行HTML代码。更重要的是,借助内容和外观的分离,页面制作中不同性质的任务可以方便地分开:比如,由页面设计者进行HTML设计,同时留出供Servlet程序员插入动态内容的空间。
Java Servlet API 2.2 简介
Java Servlet API 2.2 的类和接口组成两个Java 包,即:javax.servlet 和 javax.servlet.http(还包括javax.servlet.jsp包,不在本篇文章讨论范围之内)。
javax.servlet 包提供了控制 Servlet 生命周期所必需的 Servlet 接口,是编写 Servlet 时必须要实现的。
javax.servlet.http 包提供了从Servlet 接口派生出的专门用于处理 HTTP 请求的抽象类和一般的工具类。所有的Servlet 对象都要实现Servlet 接口,大多数情况下是作为已经实现了Servlet 接口的javax.servlet.GenericServlet 和 javax.servlet.http.HttpServlet 这两个抽象类的子类来间接实现Servlet 接口。