问题:
由于安全性的限制applet在向客户端读写文件的时候需要证书验证,而考虑到BS结构不方便给在所有用户上安装证书认证,所以产生了问题。
解决方案:
1. Applet生成文件流;
2. Applet将文件流通过url连接传给服务器端;
3. 服务器端将文件流保存成服务器端指定目录的文件,为了防止文件名冲突,以当前时间的微秒数new Date().getTime()命名文件;
4. 服务器端将文件名回传给Applet;
5. Applet调用java Script 打开新的浏览器页面调用下载指定文件的url;
6. 利用smartUpload实现服务器端指定文件名文件的下载。
部分代码示例:
--------------------------------------------------------------------------------------------------------------------------------------
Applet端代码;
--------------------------------------------------------------------------------------------------------------------------------------
public void doOutPic(){
try{
Image image=null;
BufferedImage imageBuffer = graph.getImage(Color.WHITE,10);
URL url = new URL(getCodeBase(),"/unuba/dayActionGraphPicAction.do");
URLConnection con = url.openConnection();
con.setUseCaches(false);
con.setDoOutput(true);
con.setRequestProperty("Content-type", "application/octest-stream");
// 写入对象
OutputStream out = con.getOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(imageBuffer);
out.flush();
out.close();
DataInputStream in = new DataInputStream(con.getInputStream());
ObjectInputStream objStream;
objStream = new ObjectInputStream(in);
String fileName = (String) objStream.readObject();
try {
//getAppletContext().showDocument(new URL("javascript:doAlert(\"" + fileName +"\")"));
URL destination=new URL(getCodeBase(),"/unuba/uba/downloadDayActionGraph.jsp?fileName="+fileName);
getAppletContext().showDocument(destination,"_blank");
}
catch (MalformedURLException me) {
me.printStackTrace();
}
}catch(Exception e){
e.printStackTrace();
}
}
----------------------------------------------------------------------------------------------------------------------------------------
服务器端代码:
----------------------------------------------------------------------------------------------------------------------------------------
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
//response.setContentType("application/octest-stream");
InputStream input=null;
FileOutputStream output=null;
byte[] buffer = new byte[1024];
try{
input=request.getInputStream();
Date now =new Date();
String fileName=now.getTime()+".jpg";
String path=request.getRealPath("/graphpic")+"/"+fileName;
this.outPutFileName(response,fileName);
output = new FileOutputStream(path);
int b;
while (true) {
if (input.available() < 1024) {
while ((b = input.read()) != -1) {
output.write(b);
}
break;
} else {
input.read(buffer);
output.write(buffer);
}
}
input.close();
//output.flush();
output.close();
}catch(Exception e) {
logger.error("can not get BufferedImage");
e.printStackTrace();
return null;
}
return null;
}
// output the graph picture file name
private void outPutFileName(HttpServletResponse response,String fileName){
try {
if (fileName == null) {
return;
}
OutputStream out;
ObjectOutputStream objStream;
out = response.getOutputStream();
objStream = new ObjectOutputStream(out);
objStream.writeObject((Object) fileName);
} catch (Exception e) {
logger.error("write output stream exception ", e);
}
}
----------------------------------------------------------------------------------------------------------------------------------------
smartUpload下载文件的代码:
----------------------------------------------------------------------------------------------------------------------------------------
<%@ page contentType="text/html; charset=UTF-8" import="com.jspsmart.upload.*" %>
<%
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 初始化
su.initialize(pageContext);
// 设定contentDisposition为null以禁止浏览器自动打开文件,
//保证点击链接后是下载文件。
su.setContentDisposition(null);
// 下载文件
String fileName=request.getParameter("fileName");
if(fileName!=null){
su.downloadFile("/graphpic/"+fileName);
}
%>
分享到:
- 2007-08-16 16:22
- 浏览 3321
- 评论(0)
- 论坛回复 / 浏览 (0 / 3708)
- 查看更多
相关推荐
(java+applet) 实现 图片浏览小程序(java+applet) 实现 图片浏览小程序(java+applet) 实现 图片浏览小程序(java+applet) 实现 图片浏览小程序(java+applet) 实现 图片浏览小程序(java+applet) 实现 图片浏览小程序...
本文将深入探讨Applet与图片处理的相关知识,包括如何在Applet中显示图片以及实现动态图片效果。 首先,让我们了解什么是Applet。Applet是Java的早期特性之一,它允许开发者创建能在客户端浏览器上执行的Java小程序...
总结起来,Java小程序Applet通过继承`Applet`类并利用`ImageIO`和`Graphics`类可以实现图片的显示。尽管Applet已逐渐被淘汰,但学习它的原理有助于理解早期的Web交互技术和Java图形处理基础。同时,了解现代替代技术...
本文将深入探讨如何利用Java Applet来实现屏幕截图功能,并将其保存到客户端。 首先,我们需要理解Java Applet的工作原理。Applet是在HTML页面中嵌入的Java代码,由Java虚拟机(JVM)在用户的Web浏览器上执行。通过...
3. 用户交互:Applet支持事件监听,我们可以添加`MouseListener`和`MouseMotionListener`来处理用户的点击和拖动操作,实现图片的切换和缩放功能。 4. 图片处理:如果需要进行图片的裁剪、缩放等操作,可以使用`...
Applet图片扫描程序是一种基于Java Web的技术,用于在网页中实现图像的扫描和展示功能。Applet是Java的一种特殊类型的应用程序,它可以在用户的Web浏览器中运行,为用户提供交互式的体验,比如处理图像、视频或者...
1. Java源代码文件(.java):实现Applet类,包括鸭子的移动逻辑和双缓存的使用。 2. 图片资源文件(.gif或.png):用于表示鸭子的图形。 3. HTML文件(.html):包含Applet的嵌入代码,用于在浏览器中展示Applet。 ...
在这个"java+applet 图片浏览小程序.zip"压缩包中,我们可以预见到一个使用Java Applet技术实现的图片浏览程序。 1. **Java Applet基础知识**: - Java Applet是一种基于Java的小程序,它嵌入到HTML页面中,由Java...
简单的一个Java Applet的动态显示图片的小程序。将资源内的图片放置到E盘根目录下。如果想换图片,记得修改width和heigh的初始值,值为图片的宽和高。如果你对动画有兴趣,可以试着稍微修改一下本程序(程序里有相关...
我把class文件放入web-inf/class/中,html中的代码... ...web-inf是一个特殊的目录,不能把applet放入其中,但可以在顶层建一个目录, 如 good/applet/,然后CODEBASE = "good/applet/" 同时把class所在的包拷入这个目录
本篇文章将详细介绍如何在Java Applet中实现透明图片的功能。 首先,我们来看`applet6.java`这个文件,它很可能是我们的主Applet类。在Java Applet中,通常会重写`paint()`或`paintComponent()`方法来绘制图形,...
"Applet综合案例_files"目录可能包含这些案例所需的资源文件,如图片、字体或其他外部数据,这些资源对于Applet的正常运行至关重要。 学习Java Applet编程,你需要掌握Java基础,包括面向对象编程、异常处理、IO流...
在本文中,我们将深入探讨如何使用Java连接到SQL Server 2005数据库,并通过Applet实现图片的百叶窗效果。这两个主题都是Java开发中的重要知识点,对于理解和实践Java Web应用程序开发至关重要。 首先,让我们关注...
【标题】:“图片浏览小程序(java+applet)”项目解析 【描述】中提到的这个项目是一个基于Java技术的图片浏览应用程序,它结合了Java Applet技术,为用户提供了一个方便、直观的方式来查看和管理图片。该项目不仅...
含有Applet的网页的HTML文件代码中部带有<applet...在Java Applet中,可以实现图形绘制,字体和颜色控制,动画和声音的插入,人机交互及网络交流等功能。 Applet还提供了名为抽象窗口工具箱(Abstract Window Toolkit)
最近用APPLET写了一个可以实现ckeditor中粘贴word图片且图片自动上传的插件,大家看看怎么样: 演示地址: http://test.reremouse.com/wordimg/ 插件使用JAVA APPLET技术开发,需要配合JavaScript使用,可以...
基于java+applet实现的图片浏览小程序 完整源码分享
另外,Applet还可以通过`AppletContext`接口与浏览器交互,实现如打开URL、弹出对话框等功能。 总的来说,Java Applet是Java早期为Web增强交互性而设计的技术,虽然现代Web开发中已经较少使用,但理解Applet的工作...
一个简单的图片浏览小程序可以包括以下功能: 图片展示功能:该功能用于...实现图片展示功能:使用Java Applet技术,实现图片列表的显示和原图预览功能,支持手势缩放、拖动等操作。 实现图片管理功能:使用Java A
图片浏览小程序是一个基于Java和Applet技术实现的简单图片查看器,旨在提供用户浏览本地图片的功能。以下是该小程序的一些关键特点和功能: 系统架构: 单机应用:该小程序为单机应用,不涉及客户端-服务器通信,...