`
pichcar
  • 浏览: 287492 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Applet与Servlet之间的通信与交互

阅读更多
                   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、数据库交互

    材料列表: 1.applet 数字签名 安全问题 2.Applet访问mysql数据库 3.Applet和Servlet利用http对象流通信 4.J2EE企业应用:Applet和Servlet的通信...等等

    java与html交互

    本文通过一个小例子演示了如何通过js与JavaApplet的交互来获取IE端的IP地址,体现了交互和调用。

    Java项目源码之聊天系统的实现(java+applet).zip

    客户端-服务器架构:系统采用客户端-服务器模式,客户端通过浏览器或Applet应用程序与服务器进行通信,服务器负责消息的转发和管理。 分层架构:系统采用类似MVC(Model-View-Controller)的架构,将业务逻辑、数据...

    Java项目源码之家庭理财系统的实现(java+applet).zip

    客户端-服务器架构:系统采用客户端-服务器模式,客户端通过浏览器或Applet应用程序与服务器进行通信,服务器负责处理用户请求和管理数据。 分层架构:系统采用MVC(Model-View-Controller)架构,将业务逻辑、数据...

    基于Java技术实现交互式个性化的远程教学系统 (2003年)

    文中提出了一个基于Java技术构建的异步远程教学系统,利用Java Applet技术实现动态客户端界面,通过HTTP协议隧道与后台服务器端Servlet通信,采用科学评价模型及全局动态规划,从而实现交互式、个性化的教学。

    学生成绩管理系统 是基于JSP技术的现代完美组合

    其中Servlet担当主要逻辑控制,通过接受Jsp传来的用户请求,调用以及初始化JavaBean,在通过Jsp传到客户端,本系统中SqlBean担当主要的与数据库的连接与通信,JavaBean在本系统中主要担当配合Jsp以及Servlet来完成...

    h_JAVA 2应用编程150例.rar

    实例139 控制Java与C++程序的通信 510 实例140 访问Windows注册表 514 第13章 Java配置与集成 523 实例141 J2SDK的安装配置 524 实例142 使用第三方包 525 实例143 安装配置Tomcat 526 实例144 安装配置Apache 528 ...

    JAVA面试题最全集

    application或者applet中与servlet/jsp通信可以采用的方式。 31.简述逻辑操作(如&,|)与条件操作(如&&,||)的区别。 32.简述 Java Server Page 和 Servlet 的联系和区别。 33.简述synchronized和java.util....

    java应用软件程序设计

    505 实例137 获取本机的Mac地址 508 实例138 获取Java系统信息 509 实例139 控制Java与C++程序的通信 510 实例140 访问Windows注册表 514 第13章 Java配置与集成 523 实例141 J2SDK的安装配置 524...

    JAVA上百实例源码以及开源项目源代码

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    Ajax基础教程(扫描版)

    第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上百实例源码以及开源项目

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    java开源包1

    public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag...

    java开源包11

    public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag...

    java开源包2

    public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag...

    java开源包3

    public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag...

    java开源包6

    public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag...

Global site tag (gtag.js) - Google Analytics