求APPLET+SERVLET之间通讯简单DOME

haiyulong 2005-03-23 05:03:57
只要正确详细代码就行
越简单越好`
SERVLET用tomcat配置`
写清楚web.xml就好了
谢绝长片大论````
只要简单代码!!
多谢了`
...全文
201 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
chyocean 2005-05-07
  • 打赏
  • 举报
回复
你可以把某个记录集对象的所有字段信息,都通过流的方式返回吧。
chyocean 2005-05-07
  • 打赏
  • 举报
回复
没试过返回结果集,
我也就是通过流的方式返回过记录集中的某个字段信息而已。
haiyulong 2005-04-26
  • 打赏
  • 举报
回复
request.getParameter()是传递一个参数
我是想要返回一个结果集
这该如何
chyocean 2005-04-20
  • 打赏
  • 举报
回复
request.getParameter()方法也许对你有帮助。
haiyulong 2005-03-25
  • 打赏
  • 举报
回复
有没高手答我啊
急啊。。。
haiyulong 2005-03-25
  • 打赏
  • 举报
回复
上面一句话写错了:应该是把结果再返回给applet

haiyulong 2005-03-25
  • 打赏
  • 举报
回复
to:java小菜鸟多谢了`
从servlet传递对象给applet好实现。现在问题是我要通过applet传递一个参数给servlet
或者是一个查询语句。然后servlet根据applet传过来的查询语句去查数据库,然后把结果再返回给servlet
我想首先在客户端建立连接,然后得到OutputStream
接着用ObjectOutputSttream写对象,而servlet端则需要通过request.getInputStream()得到输入流,然后读出内容,关闭输入流,然后建立输出流,写输入流,然后关闭!而客户端要再次接收这个服务器端的输出流,读完内容后关闭。客户端即有输出流又有输入流。
现在我想请教高手如何实现代码!!
万分感谢~
dabo1980 2005-03-25
  • 打赏
  • 举报
回复
第五步,配制WebServer(我用的是Tomcat4.0)
拷贝编译后的MyServlet.class到相应目录下,
编辑对应的web.xml文件,确保下面的内容正确
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<servlet>
<servlet-name>PostToApplet</servlet-name>
<servlet-class>exapplet.MyServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>
PostToApplet
</servlet-name>
<url-pattern>
/exapplet/PostToApplet
</url-pattern>
</servlet-mapping>
</web-app>

第六步,编写html文件
呼叫更新的html
<HTML>
<HEAD>
<TITLE> New Document For Using Applet Call Servlet Update Java Object</TITLE>
</HEAD>

<BODY>
Hello This is a Test!<br>
<APPLET id="obj_applet" align=center code="exapplet.MyApplet" codeBase="." width=400 height=300 name="obj_applet" archive="BV7RFD3P.ZIP"></APPLET>
<Input type=button value="CallAppletMethod" onclick="callApplet()">
<Script language=javascript>
function callApplet()
{
obj_applet.invoke();
}
</Script>
</BODY>
</HTML>

提取对象的html
<HTML>
<HEAD>
<TITLE> New Document For Using Applet </TITLE>
</HEAD>

<BODY>
Hello This is a Test!<br>
<APPLET id="obj_applet" align=center code="exapplet.MyAppletB" codeBase="." width=400 height=300 name="obj_applet" archive="BV7RFD3P.ZIP"></APPLET>
<Input type=button value="CallAppletMethod" onclick="callApplet()">
<Script language=javascript>
function callApplet()
{
obj_applet.invoke();
}
</Script>
</BODY>
</HTML>

dabo1980 2005-03-25
  • 打赏
  • 举报
回复
第四步,实现提取对象的Applet
package exapplet;
import java.awt.*;
import java.applet.*;
import java.io.*;
import java.net.*;
import netscape.javascript.*;

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) {
}
}
}

第五步,配制WebServer(我用的是Tomcat
Queen_D 2005-03-25
  • 打赏
  • 举报
回复
UP
dabo1980 2005-03-25
  • 打赏
  • 举报
回复
第三步,实现呼叫Servlet更新对象的Applet
package exapplet;
import java.awt.*;
import java.applet.*;
import java.io.*;
import java.net.*;
import netscape.javascript.*;

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();

DataInputStream dis=new DataInputStream(urlcon.getInputStream());
String txt = dis.readLine();
dis.close();

String[] info = new String[]{txt};
JSObject.getWindow(this).call("alert",info);
} catch (Exception e) {
}
}
}

dabo1980 2005-03-25
  • 打赏
  • 举报
回复
第二步,实现Servlet
package exapplet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class MyServlet extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res)
throws ServletException,IOException
{
String fPath = "H:\\XSchool\\WorkingRoom\\exapplet\\src\\java.obj";

String act = req.getParameter("Action");
if ( act.equals("UpdateObject") ) {
//创建更新JavaObject
Person p = new Person("Liaoyuan",26);
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File(fPath)));
oos.writeObject(p);
oos.close();
DataOutputStream dos = new DataOutputStream(res.getOutputStream());
dos.writeBytes("Server Java Object Updated OK!");
dos.close();
} else if ( act.equals("GetObject") ) {
//传回对象给Applet
res.setContentType("application/octet-stream");
Person p;
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File(fPath)));
try {
p = (Person)ois.readObject();
} catch (ClassNotFoundException e) {
p = new Person();
}
ois.close();

ObjectOutputStream oos = new ObjectOutputStream(res.getOutputStream());
oos.writeObject(p);
oos.close();
}
}
public String getServletInfo()
{
return "A simple Servlet!";
}
}

dabo1980 2005-03-25
  • 打赏
  • 举报
回复
Servlet传送对象给Applet使用
前日,一位朋友与我谈论Servlet与Applet共享Java对象的问题,现发表出来与大家分享,文中瑕癖
之处甚多,望各位指教.
朋友谈论的需求是这样的:他想通过页面上一个Applet呼叫一个服务器Servlet,而从Servlet产生
一个Java对象再传给另外一个Applet,怎么样让Servlet实时地把对象传给Applet这是一个问题,有一个方
案是采用JMS(JavaMessageService),在我以后的文章中会有叙述的.这里我给大家展示一个简单的实现,那
就是让Applet主动访问Servlet,让Servlet返回Java对象.下面给出全部代码和配置,其中Applet部分涵盖
了Javascript与Applet的互相调用,对于该部分不感兴趣的朋友可以复略.
第一步,编写需要传递的对象类
/**
* 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;
}

//Serializable接口中声明的方法
private void writeObject(java.io.ObjectOutputStream out)
throws IOException {
out.defaultWriteObject();
}

//Serializable接口中声明的方法
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException {
in.defaultReadObject();
}

public static void main(String[] args) {
try {
Person p = new Person("Liaoyuan",25);
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("test.obj")));
oos.writeObject(p);
oos.close();
ObjectInputStream ois = new ObjectInputStream (new FileInputStream(new File("test.obj")));
Person q = (Person)ois.readObject();
ois.close();
System.out.println(q.getName());
System.out.println(q.getAge());
} catch(Exception exp) {
exp.printStackTrace();
}
}
}

wwwalpha 2005-03-25
  • 打赏
  • 举报
回复
applet通过bean保存数据

传递的source不是已经给出?
haiyulong 2005-03-25
  • 打赏
  • 举报
回复
有人会吗?
haiyulong 2005-03-25
  • 打赏
  • 举报
回复
上面只是从servlet传了个对象给applet并显示出来
不是一个结果集 而且也没applet传送给servlet信息
8762164 2005-03-25
  • 打赏
  • 举报
回复
上面告诉你怎么接收,你就反过来发出去不就好了么
cfsego 2005-03-24
  • 打赏
  • 举报
回复
learn
haiyulong 2005-03-24
  • 打赏
  • 举报
回复
谢谢
请问在APPLET和SERVLET两端的具体传递和接受代码怎么写?
比如我在APPLET上面输入北京
然后SERVLET能通过数据库输出一串东西再返回APPLET
wwwalpha 2005-03-24
  • 打赏
  • 举报
回复
String urlSuffix = "/foldername/" + getServletName();
URL m_urlServlet = new URL(protocol, host, port, urlSuffix);

加载更多回复(4)
1.Servlet 是什么?   Servlet是使用Java Servlet 应用程序设计接口(API)及相关类和方法的 Java 程序。除了 Java Servlet API,Servlet 还可以使用用以扩展和添加到 API 的 Java 类软件包。Servlet 在启用 Java 的 Web 服务器上或应用服务器上运行并扩展了该服务器的能力。Java servlet对于Web服务器就好象Java applet对于Web浏览器。Servlet装入Web服务器并在Web服务器内执行,而applet装入Web浏览器并在Web浏览器内执行。Java Servlet API 定义了一个servlet 和Java使能的服务器之间的一个标准接口,这使得Servlets具有跨服务器平台的特性。   Servlet 通过创建一个框架来扩展服务器的能力,以提供在 Web 上进行请和响应服务。当客户机发送请至服务器时,服务器可以将请信息发送给 Servlet,并让 Servlet 建立起服务器返回给客户机的响应。 当启动 Web 服务器或客户机第一次请服务时,可以自动装入 Servlet。装入后, Servlet 继续运行直到其它客户机发出请Servlet 的功能涉及范围很广。例如,Servlet 可完成如下功能:   (1) 创建并返回一个包含基于客户请性质的动态内容的完整的 HTML页面。   (2) 创建可嵌入到现有 HTML 页面中的一部分 HTML 页面(HTML 片段)。   (3) 与其它服务器资源(包括数据库和基于 Java 的应用程序)进行通信。   (4) 用多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上。例如,Servlet 可以是多参与者的游戏服务器。   (5) 当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至applet的新连接,并将该连 接保持在打开状态。当允许客户机和服务器简单、高效地执行会话的情况下,applet也可以启动客户浏览器和服务器之间的连接。可以通过定制协议或标准(如 IIOP)进行通信。   (6) 对特殊的处理采用 MIME 类型过滤数据,例如图像转换和服务器端包括(SSI)。   (7) 将定制的处理提供给所有服务器的标准例行程序。例如,Servlet 可以修改如何认证用户。   2.Servlet 的生命周期   Servlet 的生命周期始于将它装入 Web 服务器的内存时,并在终止或重新装入 Servlet 时结束。   (1) 初始化   在下列时刻装入 Servlet:  如果已配置自动装入选项,则在启动服务器时自动装入  在服务器启动后,客户机首次向 Servlet 发出请时  重新装入 Servlet 时装入 Servlet 后,服务器创建一个 Servlet 实例并且调用 Servlet 的 init() 方法。在初始化阶段,Servlet 初始化参数被传递给 Servlet 配置对象。   (2) 请处理   对于到达服务器的客户机请,服务器创建特定于请的一个“请”对象和一个“响应”对象。服务器调用 Servlet 的 service() 方法,该方法用于传递“请”和“响应”对象。service() 方法从“请”对象获得请信息、处理该请并用“响应”对象的方法以将响应传回客户机。service() 方法可以调用其它方法来处理请,例如 doGet()、doPost() 或其它的方法。   (3) 终止   当服务器不再需要 Servlet, 或重新装入 Servlet 的新实例时,服务器会调用 Servlet 的 destroy() 方法。   3. Java Servlet API   Java Servlet 开发工具(JSDK)提供了多个软件包,在编写 Servlet 时需要用到这些软件包。其中包括两个用于所有 Servlet 的基本软件包:javax.servlet 和 javax.servlet.http。可从sun公司的Web站点下载 Java Servlet 开发工具。 下面主要介绍javax.servlet.http提供的HTTP Servlet应用编程接口。   HTTP Servlet 使用一个 HTML 表格来发送和接收数据。要创建一个 HTTP Servlet,请扩展 HttpServlet 类, 该类是用专门的方法来处理 HTML 表格的 GenericServlet 的一个子类。 HTML 表单是由
标记定义的。表单中典型地包含输入字段(如文本输入字段、复选框、单选按钮和选择列表)和用于提交数据的按钮。当提交信息时,它们还指定服务器应执行哪一个Servlet(或其它的程序)。 HttpServlet 类包含 init()、destroy()、service() 等方法。其中 init() 和 destroy() 方法是继承的。   (1) init() 方法   在 Servlet 的生命期中,仅执行一次 init() 方法。它是在服务器装入 Servlet 时执行的。 可以配置服务器,以在启动服务器或客户机首次访问 Servlet 时装入 Servlet。 无论有多少客户机访问 Servlet,都不会重复执行 init() 。   缺省的 init() 方法通常是符合要的,但也可以用定制 init() 方法来覆盖它,典型的是管理服务器端资源。 例如,可能编写一个定制 init() 来只用于一次装入 GIF 图像,改进 Servlet 返回 GIF 图像和含有多个客户机请的性能。另一个示例是初始化数据库连接。缺省的 init() 方法设置了 Servlet 的初始化参数,并用它的 ServletConfig 对象参数来启动配置, 因此所有覆盖 init() 方法的 Servlet 应调用 super.init() 以确保仍然执行这些任务。在调用 service() 方法之前,应确保已完成了 init() 方法。   (2) service() 方法   service() 方法是 Servlet 的核心。每当一个客户请一个HttpServlet 对象,该对象的service() 方法就要被调用,而且传递给这个方法一个“请”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。 在 HttpServlet 中已存在 service() 方法。缺省的服务功能是调用与 HTTP 请的方法相应的 do 功能。例如, 如果 HTTP 请方法为 GET,则缺省情况下就调用 doGet() 。Servlet 应该为 Servlet 支持的 HTTP 方法覆盖 do 功能。因为 HttpServlet.service() 方法会检查请方法是否调用了适当的处理方法,不必要覆盖 service() 方法。只需覆盖相应的 do 方法就可以了。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧