需求是這樣的:他想通過頁面上一個Applet呼叫一個服務器Servlet,而從Servlet產生 一個java對象再傳給另外一個Applet,怎么樣讓Servlet實時地把對象傳給Applet這是一個問題,有一個方 案是采用JMS(JavaMessageService),在我以后的文章中會有敘述的.這里我給大家展示一個簡單的實現,那 就是讓Applet主動訪問Servlet,讓Servlet返回Java對象.下面給出全部代碼和配置,其中Applet部分涵蓋 了javascript與Applet的互相調用,對于該部分不感愛好的朋友可以復略. <pre> 第一步,編寫需要傳遞的對象類 /** * 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 {//必須實現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) { } } }