博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在applet中访问本地资源
阅读量:7111 次
发布时间:2019-06-28

本文共 2614 字,大约阅读时间需要 8 分钟。

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了。

 本文转自 androidguy 51CTO博客,原文链接:http://blog.51cto.com/androidguy/215200,如需转载请自行联系原作者

你可能感兴趣的文章
Addthis分享插件后url乱码的解决办法
查看>>
arm汇编之 bne与beq
查看>>
【BZOJ】1176: [Balkan2007]Mokia
查看>>
掘金使用体验如何?
查看>>
Android AOP概述
查看>>
使用360加固保加固安卓APK
查看>>
Spring系列之AOP分析之获取Advice的过程(四)
查看>>
webpack打包ES6降级ES5
查看>>
基于animatge.css的js动画库
查看>>
分解模式 - 按业务领域分解模式划分微服务
查看>>
居中元素总结
查看>>
class与classloader的getResourceAsStream(String name)
查看>>
搭建vue脚手架---vue-cli
查看>>
【算法学习笔记】87. 枚举路径 SJTU OJ 1999 二哥找宝藏
查看>>
Getting to know the Q texture coordinate...
查看>>
ElasticSearch 从零到入门
查看>>
Daily scrum[2013.11.29]
查看>>
oracle维护数据的完整性
查看>>
解决 Eclipse 导入项目后 Maven Dependencies missing jar 问题
查看>>
20145237 《Java程序设计》第七周学习总结
查看>>