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 接口。

Applet、Scriptlet与Servlet的更多相关文章

  1. CGI servlet Applet Scriptlet Scriptlet JSP data layer(数据层),business layer(业务层), presentation layer(表现层)

    https://en.wikipedia.org/wiki/Common_Gateway_Interface In computing, Common Gateway Interface (CGI) ...

  2. JavaWeb — Servlet(Server Applet)

    Servlet(Server Applet) 全称Java Servlet,未有中文译文.是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web内容. 狭义的Servle ...

  3. 我的Java之旅 第三课 从Applet到JSP

    一.Applet   Applet是一种特殊的Java程序,它本身不能单独运行(因为本身没有main()),需要嵌入在一个HTML文件中,借助浏览器或者appletviewer来解释执行.   App ...

  4. Servlet技术

    Java Applet和Java Servlet都有一个共同特点: 它们都不是独立的应用程序,都没有main( )方法: 它们都不是由用户或者程序员直接调用,而是生存在容器中,由容器管理,Applet ...

  5. 图解JSP与Servlet的关系

      Servlet是Java提供的用于开发Web服务器应用程序的一个组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容.Servlet是平台独立的Java类,编写一个Servlet, ...

  6. Servlet入门总结及第一个Servlet程序

    目录 一了解Servlet的概念 二Servlet技术功能 三 Servlet技术特点 四 Servlet生命周期 五servlet工作过程 六 Servlet与JSP区别 七Servlet代码结构 ...

  7. java-jsp与servlet

    Java Servlet 是运行在带有支持 Java Servlet 规范的解释器的 web 服务器上的 Java 类. 每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服 ...

  8. Java Servlet简介

     一.了解Servlet的概念 Servlet定义 Servlet是基于Java技术的Web组件,由容器管理并产生动态的内容.Servlet引擎作为WEB服务器的扩展提供支持Servlet的功能.Se ...

  9. J2EE的十三个技术——Servlet

    简介: 基于协议的请求/响应服务的Java类.通俗的说,Servlet是在服务器上运行的小程序.为什么叫Servlet?Applet表示小应用程序,Server+Applet即为Servlet,表示小 ...

随机推荐

  1. CodeForces1051F LCA + Floyd

    题意:给定一个10W的无向联通图,和10W的询问,每个询问求任意两点间的距离,限制条件是边数-点数不超过20 一般来说图上任意两点间的距离都会采用Floyd算法直接做,但是这个数据范围显然是不合理的, ...

  2. Go 的构建模式

    Go 的八种 Build Mode exe (静态编译) exe (动态链接 libc) exe (动态链接 libc 和非 Go 代码) pie 地址无关可执行文件(安全特性) c-archive  ...

  3. docker 基础之数据管理

    数据卷 一.将本地默认目录挂载到docker容器内指定的目录 #将本地的目录挂在到docker容器内 docker run -it --name container-test -h CONTAINER ...

  4. Java并发注解Annotation

    Java并发编程中,用到了一些专门为并发编程准备的 Annotation. 主要包括三类: 1.类 Annotation(注解) 就像名字一样,这些注解是针对类的.主有要以下三个: @Immutabl ...

  5. Java插件之Jrebel

    Jrebel是干嘛的?当你在Java Web的项目中修改一些代码的时候(成员代码),想要生效必须重启服务器.但是每次修改代码都得重启服务器?重启着时间很长的,太麻烦了. Jrebel隆重出场,它可以使 ...

  6. 利用 JMetal 实现大规模聚类问题的研究(二) JMetal代码总览

    之前完成了导入JMetal到自己的工程这一步. 在开始我们研究的问题之前,我们先对JMetal的源代码一个全局的认识. JMetal很好地利用了面向对象的特性,对所有的优化问题做了高度的抽象,建议有空 ...

  7. Sqlserver批量生成10w不重复8位数字

    项目中需要批量生成100W不重复的8位数,百度了一大把,修改成了如下Sql,做下笔记,希望对看到的朋友有帮助(下面是生成10W条,条数自己改,性能还可以) 表名:makeExtensionCode 字 ...

  8. C#设计模式(7)——适配器模式

    1.适配器模式介绍 适配器模式的作用是将一个类的接口,转换成客户端希望的另外一种接口,适配器作为原始接口(我们的类中本来具有的功能)和目标接口(客户端希望的功能)之间的桥梁.举个例子:我们知道安卓数据 ...

  9. UESTC - 1999 也许这是唯一能阻止乐爷AK的方法( Just for Fun )(回文树)

    https://vjudge.net/problem/UESTC-1999 题意 对于一个初始为空的字符串S,你可以进行以下两种操作: 1. 在S的末尾加一个小写字母. 2. 移除S的最后一个字母. ...

  10. css3实现单行文本溢出显示省略号

    文本超出一定宽度让其隐藏,以省略号替代 width:200px; white-space:nowrap; text-overflow:ellipsis; overflow:hidden; 如下图