在applet中访问本地资源

   applet运行在沙盒中,因此,在默认情况下无法访问本地的资源。但可以通过签名的方式打破这一限制。签名的过程很简单,读者可以按如下的步骤编写一个applet程序,该程序读取了本地C盘的a.txt文件的内容,并显示在applet上,然后压缩成jar文件,并签名后进行发布。

    下面使用的keytool和jarsigner都是JDK本身带的程序。

第1步  编写applet程序

import  java.applet. * ;
import  java.awt.Graphics;

public   class  HelloWorld  extends  Applet
{
    
private  String name;

    
public   void  paint(Graphics g)
    {
        g.drawString(name, 
20 30 );
    }

    @Override
    
public   void  init()
    {
        
super .init();
        
try
        {
            
//   a.txt文件的内容要以UTF-8格式存储
            java.io.FileInputStream fis  =   new  java.io.FileInputStream( " c://a.txt " );
            java.io.InputStreamReader isr 
=   new  java.io.InputStreamReader(fis,  " UTF-8 " );
            java.io.BufferedReader br 
=   new  java.io.BufferedReader(isr);
            name 
=  br.readLine();
        }
        
catch  (Exception e)
        {
            name 
=  e.getMessage();
        }
    }
}


第2步:  编译HelloWorld.java,并压缩成hw.jar文件

    编译HelloWorld.java后,使用如下的命令生成hw.jar

    jar cvf hw.jar HelloWorld.class


第3步:使用keytool命令生成密钥库

    使用如下的命令生成hw.store文件:

    keytool -genkey -keystore hw.store -alias helloworld  


    其中hw.store和helloworld是用户自定义的名字,读者可以起其他的名字。

    在执行上面的命令后,会要求输出一个密码(输出两次,密码长度至少为6位字符),然后会要求输出一些信息,密码是必须输入的,而其他的信息如果不想输入,直接按回车即可,最后会让你确定是否生成hw.store文件,输入“y”,按回车,又让输出主密码,如果密码与刚才输出的密码相同,直接按回车。执行完命令后,会在当前目录生成一个hw.store文件。这一过程如下图所示。

 

    使用keytool命令生成hw.store文件的默认有效期是180天,也可以使用-validity命令行参数指定有效期,单位为天,如下面的命令指定了有效期为120天:

 keytool -genkey -keystore hw.store -alias helloworld   -validity  120


    如果想查看hw.store的有效期和其他信息,可以使用如下的命令:

keytool -list -v -alias helloworld -keystore hw.store


    执行上面的命令后,将输出如下图所示的信息。

    上图显示的有效期是120天。

第4步:使用jarsigner命令对hw.jar进行签名

    执行如下的命令对hw.jar文件进行签名:

jarsigner -keystore hw.store hw.jar helloworld


第5步:发布与使用applet

    将hw.jar文件放在<Tomcat安装目录>/webapps/test目录中,并在test目录中建立一个applet.jsp文件,代码如下:

<% @ page language = " java "  contentType = " text/html; charset=UTF-8 "
    pageEncoding
= " UTF-8 " %>
< html >
    
< head >
        
< title > 第一个applet </ title >
    
</ head >
    
< body >
        
< APPLET  CODE ="HelloWorld.class"  width =200  height =200  ARCHIVE ="hw.jar" >
        
</ APPLET >
    
</ body >
</ html >


    在IE地址栏中输出如下的URL:
    http://localhost:8080/test/applet.jsp

    当第一次访问上面的URL时,会出现如下图所的对话框。

    选中对话框中的复选框,单击“运行”按钮,就可以正常运行applet了(下次再访问applet.jsp,就会会弹出这个对话框了),如果是firefox,也会弹出类似的对话框。

    要运行这个applet,客户端需要安装jdk1.3或以上版本。

    在linux下的firefox中试了一下,发现有时firefox无法正常显示applet。发生这种情况的原因是由于firefox未安装jdk插件,读者可按如下的方法为linux版的firefox安装jdk插件:

    jdk插件的库文件是libjavaplugin_oji.so,这个文件在<JDK安装目录>/jre/plugin/i386/ns7目录中,其中ns7根据当前jdk版本不同而有所差异,但前两个字母都为ns。在linux下,jdk一般都安装在/usr/java目录中。
    找到
libjavaplugin_oji.so文件后,再进行<firefox的安装目录>/plugins目录中,使用如下的命令为libjavaplugin_oji.so文件添加一个符号链接:

ln -s <jdk安装目录>/jre/plugin/i386/ns7/libjavaplugin_oji.so


    重启Firefox,再访问applet.jsp页面,就可以正常显示applet了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值