77.html
来自「写给JSP初级程序员的书」· HTML 代码 · 共 265 行 · 第 1/2 页
HTML
265 行
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="description" content="Java,JDBC,EJB,Open Source,jdk,rmi">
<meta name="Keywords"
content="Java, servlets, Java servlet, Javascript, ActiveX, VRML,
applet, applets, directory, news, jdbc, applications,
Java applications, Java developer, Java development, developer,
classes, Jars.com, Jars, intranet, Java applet, Javabeans,
Java products, JDK, Java development kit, java development environment, JIT,
JavaPlan, enterprise tools, JVM, Java Virtual Machine, Java resources,
SUN, CGI, Perl, database, network, html,
xml, dhtml, rating, ratings, review, jars, cgi, programming,
software review, software rating">
<title>csdn_Applet与Servlet通讯的四种方法及其比较</title>
<style>
.news { BACKGROUND: #007cd3; font-family: "宋体"; font-size: 9pt }
.t { font-family: "宋体"; font-size: 9pt }
.t1 { color:#007cd3; font-family: "宋体"; font-size: 9pt }
.white { font-family: "宋体"; font-size: 9pt;color:#FFFFFF }
.red { font-family: "宋体"; font-size: 9pt;color:#FF0000 }
A:visited {color:#0000FF}
A:hover {color: #ff6666; text-decoration: none}
.text {font-size: 12px; line-height: 160%; font-family: "宋体"}
.text1 {color:#000000; font-size: 12px; line-height: 130%; font-family: "宋体"; text-decoration: none}
.text1:visited {color:#000000}
.text1:hover {color: #000000}
.text2 {color:#000000; font-size: 12px; line-height: 130%; font-family: "宋体"; text-decoration: none}
.text2:visited {color:#000000}
.text2:hover {color: #000000}
.text3 {font-size: 12px; line-height: 100%; font-family: "宋体"; text-decoration: none}
.large {font-size: 14.8px; line-height: 130%}
</style>
</head>
<body
<center>
<tr>
<td WIDTH="100%" VALIGN="TOP">
<tr>
<td WIDTH="100%" CLASS="white"></td>
</tr>
<tr>
<td WIDTH="50%" bordercolor="#FFFFFF" CLASS="t1" bgcolor="#F0F0F0" align="center" nowrap>Applet与Servlet通讯的四种方法及其比较 </td>
</tr>
<tr> <td WIDTH="100%" bordercolor="#FFFFFF" CLASS="t" bgcolor="#F0F0F0" colspan="2">
<blockquote>
<p> Applet与Servlet之间的联系一般是间接的,即页面请求由浏览器发送给Servlet,作为回答,Servlet将结果生成HTML文档发送给浏览器。很多时候在Servlet与Applet之间建立直接的联系是没有必要的,但如果要显示一些实时的动态数据,如聊天室窗口、新闻显示、股市行情等,建立两者之间的直接联系就很有用了。特别地,在较为复杂的分布式Java应用中,这种通讯更是必不可少。在客户端Java程序与服务器端Java程序之间建立这种复杂的交互方式仅仅使用Servlet与Applet API是不够的,本文为你介绍和比较四种通讯方式:通过HTML页面传递参数,用java.net包的网络功能建立直接网络连接,远程方法调用(RMI)与CORBA。 <br>
一、通过HTML页面传递Applet参数 <br>
<br>
通过HTML页面传递参数是在Servlet与Applet之间建立联系最为常用的方法。Servlet只要把传递给Applet的参数写入HTML页面就可以了。这种通讯是单向的,用于实现Servlet对Applet的控制。其实现方法类如: <br>
// doGet()方法生成一个包含Applet的HTML页面, <br>
// 该Applet需要一个Data参数 <br>
<br>
public void doGet(HttpServletRequest request,HttpServletResponse response) <br>
throws ServletException, IOException { <br>
response.setContentType("text/html"); <br>
PrintWriter out = new PrintWriter ( response.getOutputStream()); <br>
out.write("< HTML>< HEAD>< TITLE> HTML Example< /TITLE> < /HEAD>< BODY>"); <br>
out.write("Servlet通过PARAM标记传递参数给Applet. "); <br>
out.write("< APPLET code=\"SimpleApplet\" width=\"225\" height=\"149\">"); <br>
// 写入PARAM标记 <br>
out.write("< param name=\"Data\" value=\""); <br>
out.write(java.text.DateFormat.getDateInstance().format(new java.util.Date())); <br>
out.write("\">< /APPLET>< /BODY>< /HTML>"); <br>
out.close(); <br>
} <br>
<br>
这种方法很简单,但它有两个缺点。首先,所有参数都是静态的,即一旦HTML页面发送完成,要更新其中部分数据就很困难了。虽然可以使用HTTP的刷新机制,但这种刷新需要重新下载整个页面,效率是很低的。第二,如果需要传递给Applet的数据量很大或数据结构很复杂,就会使得HTML页面过于庞大或复杂了。 <br>
<br>
二、用java.net包建立双向通讯 <br>
<br>
第二种方法是利用java.net包提供的网络能力。以有连接流通讯方式为例,在服务器端的操作为一般为: <br>
<br>
⑴ 创建一个ServerSocket对象,在指定端口监听客户端发来的请求。 <br>
<br>
⑵ 在接收到请求时accept()方法将返回一个Socket对象。 <br>
<br>
⑶ 用上述Socket对象创建输入、输出流对象。 <br>
<br>
⑷ 通过输入、输出流与客户交互。 <br>
<br>
⑸ 交互完毕,关闭输入、输出流与Socket。 <br>
<br>
⑹ 服务程序运行结束,关闭ServerSocket。 <br>
<br>
实现代码代码类如: <br>
<br>
try{ <br>
<br>
boolean flag=true; <br>
Socket clientSocket=null; <br>
<br>
ServerSocket serverSocket = new ServerSocket(0); <br>
System.out.println("Server listen on: " +serverSocket.getLocalPort()); <br>
while(flag){ <br>
clientSocket=serverSocket.accept(); <br>
DataInputStream is=new DataInputStream( new bufferedInputStream(clientSocket.getInputStream())); <br>
PrintStream os=new PrintStream( new bufferedOutputStream(clientSocket.getOutputStream())); <br>
// 处理Applet请求 <br>
os.close(); <br>
is.close(); <br>
clientSocket.close(); <br>
} <br>
serverSocket.close(); <br>
}catch( IOException e){ <br>
System.err.println(" Exception: "+e); <br>
} <br>
<br>
在客户端的操作为: <br>
<br>
⑴ 创建Socket对象建立与服务器的连接。 <br>
<br>
⑵ 用该Socket对象创建输入、输出流。 <br>
<br>
⑶ 与服务器交互。 <br>
<br>
⑷ 交互完毕,关闭输入、输出流与Socket。 <br>
<br>
实现代码类如: <br>
try { <br>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?