Java是安全的,所以在提供了Applet对浏览器进行扩展来实现更为强大的功能的同时,又使用了沙箱安全模型(Sandbox Security Model)对Applet进行限制。在沙箱安全模型的限制下,Applet不能访问客户端机器的文件以及进行任何能够破坏客户端机器的操作,但是在安全的同时,它也相应地减弱了Applet的功能。于是为了能够发挥Applet的强大功能并且又不至于伤害到客户端机器,Java提供了对Applet进行数字签名(Digital Signature)的方法。浏览器对Applet的数字签名支持并没有一个统一的标准,但是一些闻名的浏览器如IE和Navigator对进行数字签名的Applet都可以开放大部分的权限。
1、建立一个例子文件,在这里使用Thinking in Java中一个例子的简化版,它是用来客户端机器上的一个文件,并且显示出来文件的内容:
//FileAccessApplet.java
// <applet code="FileAccessApplet" width="500" height="500"></applet>
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class FileAccessApplet extends JApplet {
private JTextField
filename = new JTextField(),
dir = new JTextField();
private JButton open = new JButton("Open");
private JEditorPane ep = new JEditorPane();
private JScrollPane jsp = new JScrollPane();
private File file;
public void init() {
JPanel p = new JPanel();
open.addActionListener(new OpenL());
p.add(open);
Container cp = getContentPane();
jsp.getViewport().add(ep);
cp.add(jsp, BorderLayout.CENTER);
cp.add(p, BorderLayout.SOUTH);
dir.setEditable(false);
ep.setContentType("text/Html");
filename.setEditable(false);
p = new JPanel();
p.setLayout(new GridLayout(2, 1));
p.add(filename);
p.add(dir);
cp.add(p, BorderLayout.NORTH);
}