需求是這樣的:他想通過(guò)頁(yè)面上一個(gè)Applet呼叫一個(gè)服務(wù)器Servlet,而從Servlet產(chǎn)生 一個(gè)java對(duì)象再傳給另外一個(gè)Applet,怎么樣讓Servlet實(shí)時(shí)地把對(duì)象傳給Applet這是一個(gè)問(wèn)題,有一個(gè)方 案是采用JMS(JavaMessageService),在我以后的文章中會(huì)有敘述的.這里我給大家展示一個(gè)簡(jiǎn)單的實(shí)現(xiàn),那 就是讓Applet主動(dòng)訪問(wèn)Servlet,讓Servlet返回Java對(duì)象.下面給出全部代碼和配置,其中Applet部分涵蓋 了javascript與Applet的互相調(diào)用,對(duì)于該部分不感愛(ài)好的朋友可以復(fù)略. <pre> 第一步,編寫(xiě)需要傳遞的對(duì)象類(lèi) /** * Class Person just a demo for translate this class to client * @author: rookie * @datetime: 2002-7-26 */ package exapplet; import java.io.*;
public class Person implements Serializable {//必須實(shí)現(xiàn)Serializable接口才能序列化 PRivate String m_Name; private int m_Age;
public Person() { this("",0); } public Person(String name,int age) { this.m_Name = name; this.m_Age = age; } public String getName() { return m_Name; } public int getAge() { return m_Age; }
public class MyApplet extends java.applet.Applet { public void init() { } public void paint(Graphics g) {}
//This method will be call in Html public void invoke() { try { URL url = new URL("http://rookie:8080/workingroom/exapplet/PostToApplet?Action=UpdateObject"); URLConnection urlcon = url.openConnection(); urlcon.connect();
public class MyAppletB extends java.applet.Applet { public void init() { } public void paint(Graphics g) {}
//This method will be call in html public void invoke() { try { URL url = new URL("http://rookie:8080/workingroom/exapplet/PostToApplet?Action=GetObject"); URLConnection urlcon = url.openConnection(); urlcon.connect(); ObjectInputStream ois=new ObjectInputStream(urlcon.getInputStream()); Person p = (Person)ois.readObject(); ois.close(); String[] info = new String[]{"Person Info/n/n-Name: "+p.getName()+"/n-Age : "+p.getAge()}; JSObject.getWindow(this).call("alert",info); } catch (Exception e) { } } }