Java EE第五周

Java Applet 

Applet 是一种 Java 程序。它通常运行在支持 Java 的 Web 浏览器内。由于它有完整的 Java API支持,因此Applet 是一个全功能的 Java 应用程序。html

以下所示是独立的 Java 应用程序和 applet 程序之间重要的不一样:java

  • Java 中 Applet 类继承了 java.applet.Applet 类。
  • Applet 类没有定义 main(),因此一个 Applet 程序不会调用 main() 方法。
  • Applet 被设计为嵌入在一个 HTML 页面。
  • 当用户浏览包含 Applet 的 HTML 页面,Applet 的代码就被下载到用户的机器上。
  • 要查看一个 Applet 须要 JVM。 JVM 能够是 Web 浏览器的一个插件,或一个独立的运行时环境。
  • 用户机器上的 JVM 建立一个 Applet 类的实例,并调用 Applet 生命周期过程当中的各类方法。
  • Applet 有 Web 浏览器强制执行的严格的安全规则,Applet 的安全机制被称为沙箱安全。
  • Applet 须要的其余类能够用 Java 归档(JAR)文件的形式下载下来

 

Applet的生命周期

Applet 类中的四个方法给你提供了一个框架,你能够再该框架上开发小程序:web

  • init: 该方法的目的是为你的 Applet 提供所需的任何初始化。在 Applet 标记内的 param 标签被处理后调用该方法。
  • start: 浏览器调用 init 方法后,该方法被自动调用。每当用户从其余页面返回到包含 Applet 的页面时,则调用该方法。
  • stop: 当用户从包含 Applet 的页面移除的时候,该方法自动被调用。所以,能够在相同的 Applet 中反复调用该方法。
  • destroy: 此方法仅当浏览器正常关闭时调用。由于 Applet 只有在 HTML 网页上有效,因此你不该该在用户离开包含 Applet 的页面后遗漏任何资源。
  • paint: 该方法在 start() 方法以后当即被调用,或者在 Applet 须要重绘在浏览器的时候调用。paint() 方法实际上继承于 java.awt。

Applet 类

每个 Applet 都是 java.applet.Applet 类的子类,基础的 Applet 类提供了供衍生类调用的方法,以此来获得浏览器上下文的信息和服务。编程

这些方法作了以下事情:小程序

  • 获得 Applet 的参数
  • 获得包含 Applet 的 HTML 文件的网络位置
  • 获得 Applet 类目录的网络位置
  • 打印浏览器的状态信息
  • 获取一张图片
  • 获取一个音频片断
  • 播放一个音频片断
  • 调整此 Applet 的大小

除此以外,Applet 类还提供了一个接口,该接口供 Viewer 或浏览器来获取 Applet 的信息,而且来控制 Applet 的执行。浏览器

Viewer 多是:安全

  • 请求 Applet 做者、版本和版权的信息
  • 请求 Applet 识别的参数的描述
  • 初始化 Applet
  • 销毁 Applet
  • 开始执行 Applet
  • 结束执行 Applet

Applet 类提供了对这些方法的默认实现,这些方法能够在须要的时候重写。服务器

"Hello,World"applet 都是按标准编写的。惟一被重写的方法是 paint 方法。网络

 

Applet 的调用

Applet 是一种 Java 程序。它通常运行在支持 Java 的 Web 浏览器内。由于它有完整的 Java API 支持,因此 Applet 是一个全功能的 Java 应用程序。app

<applet> 标签是在HTML文件中嵌入 Applet 的基础。如下是一个调用"Hello World"applet的例子;

1
2
3
4
5
6
7
8
9
< html >
< title >The Hello, World Applet</ title >
< hr >
< applet code="HelloWorldApplet.class" width="320" height="120">
If your browser was Java-enabled, a "Hello, World"
message would appear here.
</ applet >
< hr >
</ html >

  

得到applet参数

下面的例子演示了如何使用一个 Applet 响应来设置文件中指定的参数。该 Applet 显示了一个黑色棋盘图案和第二种颜色。

第二种颜色和每一列的大小经过文档中的 Applet 的参数指定。

CheckerApplet 在 init() 方法里获得它的参数。也能够在 paint() 方法里获得它的参数。然而,在 Applet 开始获得值并保存了设置,而不是每一次刷新的时候都获得值,这样是很方便,而且高效的。

Applet viewer 或者浏览器在 Applet 每次运行的时候调用 init() 方法。在加载 Applet 以后,Viewer 当即调用 init() 方法(Applet.init()什么也没作),重写该方法的默认实现,添加一些自定义的初始化代码。

Applet.getParameter() 方法经过给出参数名称获得参数值。若是获得的值是数字或者其余非字符数据,那么必须解析为字符串类型。

下例是 CheckerApplet.java 的修改:

1
2
3
4
5
6
7
8
9
10
import java.applet.*;
import java.awt.*;
public class CheckerApplet extends Applet
{
    int squareSize = 50 ; // 初始化默认大小
    public void init () {}
    private void parseSquareSize (String param) {}
    private Color parseColor (String param) {}
    public void paint (Graphics g) {}
}

  下面是 CheckerApplet 类的 init() 方法和私有的 parseSquareSize() 方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public void init ()
{
    String squareSizeParam = getParameter ( "squareSize" );
    parseSquareSize (squareSizeParam);
    String colorParam = getParameter ( "color" );
    Color fg = parseColor (colorParam);
    setBackground (Color.black);
    setForeground (fg);
}
private void parseSquareSize (String param)
{
    if (param == null ) return ;
    try {
       squareSize = Integer.parseInt (param);
    }
    catch (Exception e) {
      // 保留默认值
    }
}

  

该 Applet 调用 parseSquareSize(),来解析 squareSize 参数。parseSquareSize() 调用了库方法 Integer. parseInt() 该方法将一个字符串解析为一个整数,当参数无效的时候,Integer.parseInt() 抛出异常。

所以,parseSquareSize() 方法也是捕获异常的,并不容许 Applet 接受无效的输入。

Applet 调用 parseColor()方法将颜色参数解析为一个 Color 值。parseColor() 方法作了一系列字符串的比较,来匹配参数的值和预约义颜色的名字。你须要实现这些方法来使 Applet 工做。

 

应用程序转换成 Applet

将图形化的 Java 应用程序(是指,使用AWT的应用程序和使用 java 程序启动器启动的程序)转换成嵌入在web页面里的applet是很简单的。

下面是将应用程序转换成 Applet 的几个步骤:

  • 编写一个 HTML 页面,该页面带有能加载 applet 代码的标签。
  • 编写一个 JApplet 类的子类,将该类设置为 public。不然,Applet 不能被加载。
  • 消除应用程序的 main()方法。不要为应用程序构造框架窗口,由于你的应用程序要显示在浏览器中。
  • 将应用程序中框架窗口的构造方法里的初始化代码移到 Applet 的 init() 方法中,你没必要显示的构造 Applet 对象,浏览器将经过调用 init() 方法来实例化一个对象。
  • 移除对 setSize() 方法的调用,对于 Applet 来说,大小已经经过 HTML 文件里的 width 和 height 参数设定好了。
  • 移除对 setDefaultCloseOperation() 方法的调用。Applet 不能被关闭,它随着浏览器的退出而终止。
  • 若是应用程序调用了 setTitle() 方法,消除对该方法的调用。applet 不能有标题栏。(固然你能够给经过 html 的 title 标签给网页自身命名)
  • 不要调用 setVisible(true),Applet 是自动显示的。

 

AJAX 

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

AJAX 最大的优势是在不从新加载整个页面的状况下,能够与服务器交换数据并更新部分网页内容。

AJAX 不须要任何浏览器插件,但须要用户容许JavaScript在浏览器上执行。

 

AJAX 应用

  • 运用XHTML+CSS来表达资讯;

  • 运用JavaScript操做DOM(Document Object Model)来执行动态效果;

  • 运用XML和XSLT操做资料;

  • 运用XMLHttpRequest或新的Fetch API与网页服务器进行异步资料交换;

  • 注意:AJAX与Flash、Silverlight和Java Applet等RIA技术是有区分的。

AJAX 工做原理

 

 

AJAX是基于现有的Internet标准

AJAX是基于现有的Internet标准,而且联合使用它们:

  • XMLHttpRequest 对象 (异步的与服务器交换数据)
  • JavaScript/DOM (信息显示/交互)
  • CSS (给数据定义样式)
  • XML (做为转换数据的格式)

lamp  AJAX应用程序与浏览器和平台无关的!

 

AJAX 实例解析

上面的 AJAX 应用程序包含一个 div 和一个按钮。

div 部分用于显示来自服务器的信息。当按钮被点击时,它负责调用名为 loadXMLDoc() 的函数:

1
2
< div id="myDiv">< h2 >使用 AJAX 修改该文本内容</ h2 ></ div >
< button type="button" onclick="loadXMLDoc()">修改内容</ button >

  接下来,在页面的 head 部分添加一个 <script> 标签。该标签中包含了这个 loadXMLDoc() 函数:

1
2
3
4
5
6
7
8
< head >
< script >
function loadXMLDoc()
{
     .... AJAX 脚本执行 ...
}
</ script >
</ head >
相关文章
相关标签/搜索