随笔 - 312, 文章 - 14, 评论 - 1393, 引用 - 0

导航

<2009年2月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
1234567

公告

关注我的新浪微博

我的著作









常用链接

留言簿(126)

我参与的团队

随笔分类(818)

随笔档案(310)

文章分类(1)

文章档案(8)

相册

ADSL、3G查询

CSDN

eclipse

ibm

Java EE

Linux

Web

云服务

代理网站

关注的网站

协议

喜欢的Blog

国内广告平台

图书出版

在线培训

开发工具

微博客户端

手机铃声

操作系统

  • ReactOS
  • 一个与windowXP/2003兼容的操作系统

数学

文件格式

源码资源

移动(Mobile)

编程语言

英语学习

最新随笔

搜索

  •  

积分与排名

  • 积分 - 1969822
  • 排名 - 6

最新评论

阅读排行榜

评论排行榜

在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, 
2030);
    }

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





Android开发完全讲义(第2版)(本书版权已输出到台湾)

http://product.dangdang.com/product.aspx?product_id=22741502



Android高薪之路:Android程序员面试宝典 http://book.360buy.com/10970314.html


新浪微博:http://t.sina.com.cn/androidguy   昵称:李宁_Lining

posted on 2009-02-06 21:46 银河使者 阅读(3183) 评论(2)  编辑  收藏 所属分类: javaweb 原创linux

评论

# re: 在applet中访问本地资源  回复  更多评论   

博主:您好!
我编写的是一个public class XXX extends JApplet{}里面包含了很多其它的*.java类,第一步里就只有一个HelloWorld.java,这样的话怎么操作?谢谢!请发到邮箱。麻烦了。
2009-09-25 08:12 | 陈峰

# re: 在applet中访问本地资源[未登录]  回复  更多评论   

通过了!这帖子果断好啊~多谢博主!
2012-05-30 22:45 | sunshine

只有注册用户登录后才能发表评论。


网站导航: