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);
}
}
分享到:
相关推荐
实现这一机制的关键是采用面向对象的方法,通过封装和抽象来简化通信过程,使得Applet与Servlet之间能够进行更高效、简洁的信息交互。 面向对象方法的应用在于,将Applet和Servlet中的通信逻辑封装成独立的对象,...
材料列表: 1.applet 数字签名 安全问题 2.Applet访问mysql数据库 3.Applet和Servlet利用http对象流通信 4.J2EE企业应用:Applet和Servlet的通信...等等
"基于Java Applet与servlet通信技术的Web文本页面保护方法" 本文提出了一种基于Java Applet与servlet通信技术的Web文本页面保护方法。该方法通过使用Java Applet与servlet通信技术来保护Web文本页面,让用户无法...
7. **使用 RMI (Remote Method Invocation)**:虽然 RMI 不是为浏览器环境设计的,但在特定情况下,通过加密和隧道技术,可以实现 Applet 与 Servlet 之间的 RMI 通信。 每种通信策略都有其优缺点,开发者应根据...
标题中的“jasperreport报表模板预览 applet与servlet通信”揭示了本文将要讨论的重点,即如何在Java环境中使用JasperReport库创建报表模板,并通过Applet和Servlet进行数据交互来实现预览功能。JasperReport是一个...
- **使用URLConnection或HttpURLConnection**:Java提供了标准库,允许Applet创建HTTP请求并与Servlet通信。 - **Java Networking API**:通过Socket或HttpURLConnection实现客户端到服务器的低级别通信。 - **...
2. **Applet与Servlet通信的必要性** Applet虽然可以直接与浏览器交互,但其与服务器的通信受到同源策略的限制,因此需要通过Servlet作为中介,来实现与服务器的通信,传递数据或执行服务器端操作。 3. **通信方式...
本文将详细探讨Applet与Servlet之间的通信以及如何利用这种通信机制实现文件的打印功能。 Applet是Java的一种小程序,它可以在用户的Web浏览器中运行,为用户提供交互式体验。而Servlet则是Java Web应用中的服务器...
### Applet与Servlet通信概述 Applet是一种可以在Web页面上运行的小型Java应用程序。Servlet则是一种服务器端的技术,用于处理客户端发送的HTTP请求,并生成响应。Applet与Servlet之间的通信通常是基于HTTP协议的,...
由于浏览器的安全模型,Applet在与Servlet通信时面临一些限制。Applet只能与发布它的服务器进行通信,不能直接访问本地文件系统或执行本地程序,也不能创建或接受非源服务器的socket连接。这使得直接从Applet访问...
本篇文章将详细探讨`Applet`与`Servlet`的网络通信,以及它们如何协同工作来实现动态交互。 首先,让我们了解一下`Applet`。`Applet`是Java的一种早期Web应用形式,它是在Web浏览器中运行的小型Java程序。通过Java...
标题“applet2servlet”涉及的是Java编程领域中一种特定的交互技术,即Java小应用程序(Applet)与Servlet之间的通信。在Web应用程序开发中,Applet是一种嵌入到HTML页面中的小型Java程序,而Servlet是运行在服务器...
### Applet与Servlet通信 在早期的Java Web开发中,Applet是一种嵌入到网页中的小型应用程序,它可以实现更丰富的用户界面和功能。Servlet则作为服务器端处理请求的核心组件,可以接收HTTP请求并作出响应。Applet与...
`Employee2.2`可能是一个特定版本的Employee类,可能用于模拟用户或系统中的员工信息,参与到Servlet和Applet之间的通信中。 通过分析这个项目,开发者可以学习到如何在Servlet中创建处理请求的方法,如何在Applet...
6. **使用Java RMI(远程方法调用)**:虽然不是常见的做法,但Applet可以通过RMI与服务器上的JSP进行通信,允许在客户端和服务器之间调用方法。不过,由于RMI涉及的安全性和复杂性,这种方法在实际应用中并不常见。...
另一种方式是Applet直接通过URLConnection或HttpURLConnection与Servlet通信,发送请求并接收响应。 2. **URLConnection类**: - TestURLConnection这个文件可能是一个演示如何使用URLConnection来建立Servlet和...
本文档主要探讨的是Java Applet如何与浏览器进行通信,这是理解Web应用程序交互机制的关键部分。 一、Java Applet的基本概念 Java Applet是一种小型的Java程序,它可以被浏览器执行,提供动态的、交互式的网页内容...
本案例中,"A-S.rar_servlet applet"是一个示例项目,展示了如何利用序列化对象在Servlet和Applet之间进行通信,这对于理解Java网络编程以及Web应用程序的交互机制具有很高的学习价值。 首先,让我们深入了解一下...