在applet中访问本地资源

简介: 本文为原创,如需转载,请注明作者和出处,谢谢!     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文件放在/webapps/test目录中,并在test目录中建立一个applet.jsp文件,代码如下:


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

ln -s /jre/plugin/i386/ns7/libjavaplugin_oji.so

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



目录
相关文章
【刷题记录】尼科彻斯定理、数对、环形结构
【刷题记录】尼科彻斯定理、数对、环形结构
|
安全 程序员 C++
C++一分钟之-原子操作与线程安全
【6月更文挑战第27天】**C++的`std::atomic`提供线程安全的原子操作,解决多线程数据竞争。涵盖原子操作概念、应用、问题与对策。例如,用于计数器、标志位,但选择数据类型、内存顺序及操作组合需谨慎。正确使用能避免锁,提升并发性能。代码示例展示自旋锁和线程安全计数。了解并恰当运用原子操作至关重要。**
272 1
|
API Python
记录openai官网关于Setup your API key for a single project(为单个项目设置API 可以)的错误(2023/11/24)
记录openai官网关于Setup your API key for a single project(为单个项目设置API 可以)的错误(2023/11/24)
438 0
|
监控 C#
.NET】聊聊 IChangeToken 接口
【7月更文挑战第2天】‘IChangeToken`接口在.NET Core中用于提供变更通知服务,包括`hasChanged`属性来检查是否已变更,`activeChangeCallbacks`属性确认是否执行回调,以及`registerChangeCallback`方法用于注册变更时执行的回调函数。示例代码展示了如何监视文件变化并响应。`ChangeToken.OnChange`方法允许持续监控并每次变更时触发回调。`IChangeToken`和相关实现广泛用于监听配置变化或其他动态数据更新的场景。
147 6
|
运维 前端开发 JavaScript
关于跨域,和跨域问题的完整解决方案
关于跨域,和跨域问题的完整解决方案
119 0
|
关系型数据库 MySQL
MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法
MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法
595 0
|
关系型数据库 MySQL Windows
|
前端开发 API 容器
Vue2使用vant实现_网易云音乐案例(可跟做练手项目)(二)
Vue2使用vant实现_网易云音乐案例(可跟做练手项目)(二)
476 0
Vue2使用vant实现_网易云音乐案例(可跟做练手项目)(二)
|
存储 人工智能 算法
|
Java 测试技术 Apache
Bean拷贝常用框架使用姿势与性能对比
当业务量不大时,不管选择哪个框架都没什么问题,只要功能支持就ok了;但是当数据量大的时候,可能就需要考虑性能问题了;再实际的项目中,正好遇到了这个问题,不仅慢,还发现会有锁竞争,这特么就尼普了
473 0
Bean拷贝常用框架使用姿势与性能对比

热门文章

最新文章