文档章节

简单applet实现

ayawar
 ayawar
发布于 2015/09/20 17:47
字数 797
阅读 38
收藏 0

       在java web项目中遇到了调用本地打印机实现快速打印,通过查找资料了解到通过applet程序能够实现客户端本地操作,下面是一个简单applet程序的实现。

  1.通过myeclipse建立java web工程,创建一个HelloWorld.java类并继承Applet类,内容为:

 public class HelloWorld extends Applet {
     public void paint(Graphics g){  
         g.drawString("HelloWorld!",5,35);
     }
     public void init() {
         try {
            FileInputStream fis = new FileInputStream(new File("客户端文件绝对路径")); //本地文件路径
            FileOutputStream fos = new FileOutputStream(new File("客户端文件绝对路径"));//输出文件路径
            byte[] b = new byte[10240];
            int len; 
            while ((len = fis.read(b)) != -1){
                fos.write(b, 0, len);//b 这一次写的数据     off 这次从b的第off开始写    len 这次写的长度            
            }
                fos.flush();
                fis.close();
                fos.close();
             } catch (Exception e) {
               // TODO Auto-generated catch block
                e.printStackTrace();
           } 
       }
}

2.创建jsp页面,内容为:

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01  Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>printTest</title>
</head>
<body>
 <applet  code="HelloWorld.class"  CODEBASE = "./" width="240" height="170" alt="抱歉不支持"> </applet> <!--将编译后的HelloWorld.class文件放到与该jsp页面相同目录下,code为文件路径-->
 </body>
</html>

3.保证编译的jdk版本和客户端运行的jre版本一致,运行项目游览器页面输出“HelloWorld!”,但本地文件操作并未执行,查找资料了解到原因如下:

        用Applet写的java小程序如果没有经过签名,那么访问客户端程序下载后会受到安全限制;沙箱机制对Applet的安全性限制在浏览器或者appletviewer中运行远程主机上存放的Applet时,Java VM认为它是不可信任的,将其置于所谓sandbox的保护之下,在这样的情况下Applet的运行受到下面的限制 :

        a) Applet不能读写客户端主机上的文件 
        b) Applet不能执行JCE/JCA中的addProvider操作 
        c) 在进行网络连接时Applet只能与提供它的服务器建立连接 
        d) Applet在事件捕获、读取系统信息等其他方面受到限制 
        e) 在Netscape浏览器中,不提供java.security.*的支持,在IE浏览器中对Applet的运行做了比appletviewer中更加高的限制

 

4.那么我们要对HelloWorld.class文件进行数字签名,步骤如下:

步骤:

(1)将java小程序打包 
  jar cvf HelloWorld.jar HelloWorld.class

(2)生成名为chinani.store的密钥库,别名为chinani 
  keytool -genkey -keystore chinani.store -alias chinani
密码:123456 (根据需要自己输入) 以下根据需要输入,最后确认:y

(3)导出chinani.cer数字证书 
  keytool -export -keystore chinani.store -alias chinani -file chinani.cer
密码:123456 (根据需要自己输入)

(4)对test.jar文件进行签名 
  jarsigner -keystore chinani.store  HelloWorld.jar chinani
密码:123456 (根据需要自己输入)

5.将生成的HelloWorld.jar文件放到.jsp文件目录下

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01  Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>printTest</title>
</head>
<body>
 <applet archive="HelloWorld.jar"  code="HelloWorld.class"  CODEBASE = "./" width="240" height="170" alt="抱歉不支持"> </applet> <!--将编译后的HelloWorld.class文件放到与该jsp页面相同目录下,code为文件路径-->
 </body>
</html>

启动项目,页面输出“HelloWorld!”本地文件操作成功

 

© 著作权归作者所有

ayawar
粉丝 0
博文 1
码字总数 797
作品 0
长沙
私信 提问
加载中

评论(2)

ayawar
ayawar 博主

引用来自“何德”的评论

谢谢你的分享!!!28
HD明
HD明
谢谢你的分享!!!28
java事件适配器Adapter

首先,java中一个类只能直接继承自一个类,接口却可以实现多个。 如果一个类implements了一个MouseListner,那么就要在该类中实现所有的MouseListner中的抽象方法,但有很多抽象方法时而只需...

阮少爷
2016/04/19
33
0
《Java编程思想》读书笔记(2)

sun为何要开发出applet这个东西,究竟浏览器在客户端编程方面还存在哪些方面的不足哪?这是我开始applet这一节学习时所思考的第一个问题。Applet是嵌入到web浏览器中的小程序(它和微软的Act...

嗯哼9925
2017/12/26
0
0
web打印的几种实现方法(转载)

web打印的几种实现方法(转载) web打印,web打印控件的三种实现方法 做管理系统的时候,打印一直是个棘手的问题,做B/S的系统这个问题就更加突出了!下面举出三种常用的web打印处理方式 1、...

什么是程序员
2015/09/18
2.2K
0
运用递归算法——分形(以及Applet的配置问题)

采用递归算法来画分形图 先看下运行结果: 分析 1.首先我们需要两个点(x1,y1,x2,y2),来确定一天直线,创建一个方法randFactary 2.确定直线中点(midx,midy),在其中点垂直方向上移或下移...

fulishafulisha
2018/04/22
0
0
RIA应用开发平台--Pivot

Pivot是一套采用Java构建 RIA应用程序的开源平台。Pivot平台的定位是内嵌于浏览器的Flex和Silverlight等富客户端开发技术的直接竞争对手。 Pivot的实现借鉴了其它工具箱的一些点子(比如Swi...

匿名
2008/10/17
4.6K
1

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
1K
12
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
24
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
20
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
33
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部