知识大全 如何让applet访问网络

Posted 文件

篇首语:犀渠玉剑良家子,白马金羁侠少年。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 如何让applet访问网络相关的知识,希望对你有一定的参考价值。

  对Java Applet和Java Web Start进行数字签名

  我们知道Java Applet和Java Web Start程序在运行的时候受到安全限制 例如不能够访问本地文件系统 不能够随意访问网络 本文将演示如何对代码做数字签名 让客户在运行时选择是否信任你的签名 以使你的程序具有更多的权限 在这里我们不打算购买证书

  我的计算机环境如下

  Windows professional sp

  SUN JDK

  IE

  JAVA_HOME PATH CLASSPATH等环境变量均已设置

  客户端需求

  客户端浏览器需要安装Java插件 这里的Java插件是安装JDK时一起安装的 如果客户端不需要做Java开发 可以去下载SUN的网站下载JRE到客户端安装

  接下来看看下面这个Applet 它只有一个按钮 点击这个按钮程序就在本地建立一个文件 如果成功 弹出一个对话框显示成功消息 如果发生异常(安全异常或者IO异常) 也弹出一个显示错误的对话框 源文件如下

  源文件test\\TestApplet java

  package test;

  import java applet *;

  import java io *;

  import java awt event *;

  import javax swing *;

  public class TestApplet

  extends Applet

  public void init()

  JButton button = new JButton( Create a file );

  button addActionListener(new ActionListener()

  public void actionPerformed(ActionEvent evt)

  File file = new File( c:\\\\a txt );

  try

  file createNewFile();

  JOptionPane showMessageDialog(null 成功创建文件c:\\\\a txt

   消息 JOptionPane INFORMATION_MESSAGE );

  catch (Exception ex)

  JOptionPane showMessageDialog(

  null ex getMessage() 错误 JOptionPane ERROR_MESSAGE);

  

  

  );

  add(button);

  

  

  在与test目录的父目录编译这个Applet

  javac test\\TestApplet java

  打包 生成test jar文件

  jar cvf test jar test

  以下是使用Applet的HTML页面l

  test Applet will appear below in a Java enabled browser

  codebase =

  code = test TestApplet class

  name = TestApplet

  archive = test jar

  width =

  height =

  hspace =

  vspace =

  align = middle

  >

  现在就让我们运行一下 打开l 点击按钮 你看到了什么?非常不幸 我们没有经过数字签名的Applet在默认情况下没有写本地文件的权限 那么让我们准备签名代码吧

  首先用keytool命令产生用来签名的key 下面这个命令产生一个叫 mykey 的key 它存储在我们新建的叫 mystore 的keystore中

  keytool genkey alias mykey keystore mystore

  接下来它会问一些问题包括keystore的密码 key的密码等 如下所示

  输入keystore密码 storepass

  您的名字与姓氏是什么?

  [Unknown] AYellow

  您的组织单位名称是什么?

  [Unknown] 我的组织单位

  您的组织名称是什么?

  [Unknown] 我的组织

  您所在的城市或区域名称是什么?

  [Unknown] 北京

  您所在的州或省份名称是什么?

  [Unknown] 北京

  该单位的两字母国家代码是什么

  [Unknown] CN

  CN=AYellow OU=我的组织单位 O=我的组织 L=北京 ST=北京 C=CN 正确吗?

  [否] Y

  输入的主密码

  (如果和 keystore 密码相同 按回车) keypass

  完成后会在当前目录下生成一个叫mystore的文件 这个文件包含了我们的key 用jarsigner命令签名我们的代码test jar(需要输入keystore和key的密码)

  jarsigner keystore mystore test jar mykey

  Enter Passphrase for keystore: storepass

  Enter key password for mykey: keypass

  再次运行Applet 在Applet加载的时候会出现一个对话框 说该Applet由不可信任的发行者签名并宣称代码是安全的 是不是要对Applet授权 选择 授权于会话 然后点击我们的按钮 看看是不是成功的创建了文件?

  对于Java Web Start程序 签名jar文件的过程是一样的 但是需要在jnlp文件中做一些修改 例如在jnlp根元素下加上一下部分

  运行程序 在第一次启动的时候出现以下对话框

  选择 启动 以后启动时这个对话框再也不会出现 因为Java Web Start启动后相当于一个安装在本地的程序 既然第一次客户选择了信任 以后这个对话框就再没有必要出现了 当然 对于上面的Applet例子我们也可以选择 总是授权

cha138/Article/program/Java/hx/201311/27148

相关参考