Applet与Servlet之间的通信与交互
Applet的优势在于可以操作客户端的资源,一般要操作客户端的资源---如上传文件,调用客户端的应用程序,调用客户端的打印机实现本地打印等,一般都是用Applet程序实现的,并将其嵌入到网页中,通过Applet将本地资源转换成流,然后连接后台服务器的SERVLET,并达到与之交互,将客户端的资源上传到服务器中.如我最近在项目中遇到的的一个问题:需要将客户端的桌面上的文件上传到服务器上的特定文件中.
Applet小程序
import java.applet.Applet;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.swing.filechooser.FileSystemView;
public class DesktopReadJpg extends Applet{
/**
* 初始化Applet
*/
public void init()
{
FileSystemView fsv = FileSystemView.getFileSystemView();
File vFile = fsv.getHomeDirectory();
String path = vFile.getPath();
String picUrl = getParameter("PICURL");
try{
//URL url1 = new URL("http://localhost:8080/vmis/appletServlet");
URL url1 = new URL(picUrl);
HttpURLConnection conn = (HttpURLConnection) url1.openConnection();
conn.setRequestMethod("POST");
conn.setAllowUserInteraction(true);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(true);
conn.setRequestProperty("Content-Type", "application/octet-stream");
File jpgFile = new File(path+"\\ZP.JPG");
if(jpgFile.isFile()){
// 建立文件的输入流
FileInputStream fileInputStream = null;
fileInputStream = new FileInputStream(jpgFile);
BufferedInputStream bis=new BufferedInputStream(fileInputStream);
OutputStream os = conn.getOutputStream();
BufferedOutputStream bos=new BufferedOutputStream(os);
int len =0;
byte[] bty=new byte[4096];
while((len=bis.read(bty,0,4096))!=-1){
bos.write(bty, 0, len);
bos.flush();
}
bos.close();
bis.close();
System.out.println(conn.getContentType() + ": "
+ conn.getResponseCode());
}
}catch(Exception e){
e.printStackTrace();
}
}
}
其中System.out.println(conn.getContentType() + ": "+
conn.getResponseCode());,这句必须加上才能够连接上服务器上的Servlet完成上传工作
与之交互的Servlet程序:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.maslong.pub.Constants;
public class AppletServlet extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
InputStream in = request.getInputStream();
//System.out.print(request.getParameter("username"));
File f = new File(Constants.PHOTODIR+"Head.JPG");
FileOutputStream fos = new FileOutputStream(f);
byte[] b = new byte[1024 * 1024];
int bytes, sumBytes = 0;
while (true) {
bytes = in.read(b);
if (bytes <= 0)
break;
sumBytes += bytes;
fos.write(b, 0, bytes);
}
fos.close();
in.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
doGet(request, response);
}
}
分享到:
相关推荐
材料列表: 1.applet 数字签名 安全问题 2.Applet访问mysql数据库 3.Applet和Servlet利用http对象流通信 4.J2EE企业应用:Applet和Servlet的通信...等等
本文通过一个小例子演示了如何通过js与JavaApplet的交互来获取IE端的IP地址,体现了交互和调用。
客户端-服务器架构:系统采用客户端-服务器模式,客户端通过浏览器或Applet应用程序与服务器进行通信,服务器负责消息的转发和管理。 分层架构:系统采用类似MVC(Model-View-Controller)的架构,将业务逻辑、数据...
客户端-服务器架构:系统采用客户端-服务器模式,客户端通过浏览器或Applet应用程序与服务器进行通信,服务器负责处理用户请求和管理数据。 分层架构:系统采用MVC(Model-View-Controller)架构,将业务逻辑、数据...
文中提出了一个基于Java技术构建的异步远程教学系统,利用Java Applet技术实现动态客户端界面,通过HTTP协议隧道与后台服务器端Servlet通信,采用科学评价模型及全局动态规划,从而实现交互式、个性化的教学。
其中Servlet担当主要逻辑控制,通过接受Jsp传来的用户请求,调用以及初始化JavaBean,在通过Jsp传到客户端,本系统中SqlBean担当主要的与数据库的连接与通信,JavaBean在本系统中主要担当配合Jsp以及Servlet来完成...
实例139 控制Java与C++程序的通信 510 实例140 访问Windows注册表 514 第13章 Java配置与集成 523 实例141 J2SDK的安装配置 524 实例142 使用第三方包 525 实例143 安装配置Tomcat 526 实例144 安装配置Apache 528 ...
application或者applet中与servlet/jsp通信可以采用的方式。 31.简述逻辑操作(如&,|)与条件操作(如&&,||)的区别。 32.简述 Java Server Page 和 Servlet 的联系和区别。 33.简述synchronized和java.util....
505 实例137 获取本机的Mac地址 508 实例138 获取Java系统信息 509 实例139 控制Java与C++程序的通信 510 实例140 访问Windows注册表 514 第13章 Java配置与集成 523 实例141 J2SDK的安装配置 524...
Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...
第3章 与服务器通信:发送请求和处理响应 37 3.1 处理服务器响应 37 3.1.1 使用innerhtml属性创建动态内容 37 3.1.2 将响应解析为xml 40 3.1.3 使用w3c dom动态编辑页面 45 3.2 发送请求参数 52 3.2.1 请求...
Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...
public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag...
public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag...
public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag...
public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag...
public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag...