Java如何改成java applet 插件,急!代码见回答一。

Java Applet程序怎样发布到WEB上,并且不需要下载控件?
[问题点数:100分,结帖人u]
Java Applet程序怎样发布到WEB上,并且不需要下载控件?
[问题点数:100分,结帖人u]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2014年3月 Linux/Unix社区大版内专家分月排行榜第二2014年1月 扩充话题大版内专家分月排行榜第二
2014年6月 扩充话题大版内专家分月排行榜第三2014年5月 扩充话题大版内专家分月排行榜第三2014年5月 Linux/Unix社区大版内专家分月排行榜第三
相关帖子推荐:
2014年9月 Java大版内专家分月排行榜第三2014年6月 Java大版内专家分月排行榜第三2014年2月 Java大版内专家分月排行榜第三2013年11月 Java大版内专家分月排行榜第三2013年10月 Java大版内专家分月排行榜第三
2014年5月 Java大版内专家分月排行榜第三
2014年3月 Linux/Unix社区大版内专家分月排行榜第二2014年1月 扩充话题大版内专家分月排行榜第二
2014年6月 扩充话题大版内专家分月排行榜第三2014年5月 扩充话题大版内专家分月排行榜第三2014年5月 Linux/Unix社区大版内专家分月排行榜第三
2014年3月 Linux/Unix社区大版内专家分月排行榜第二2014年1月 扩充话题大版内专家分月排行榜第二
2014年6月 扩充话题大版内专家分月排行榜第三2014年5月 扩充话题大版内专家分月排行榜第三2014年5月 Linux/Unix社区大版内专家分月排行榜第三
2014年5月 Java大版内专家分月排行榜第三
2014年3月 Linux/Unix社区大版内专家分月排行榜第二2014年1月 扩充话题大版内专家分月排行榜第二
2014年6月 扩充话题大版内专家分月排行榜第三2014年5月 扩充话题大版内专家分月排行榜第三2014年5月 Linux/Unix社区大版内专家分月排行榜第三
2014年5月 Java大版内专家分月排行榜第三
2014年3月 Linux/Unix社区大版内专家分月排行榜第二2014年1月 扩充话题大版内专家分月排行榜第二
2014年6月 扩充话题大版内专家分月排行榜第三2014年5月 扩充话题大版内专家分月排行榜第三2014年5月 Linux/Unix社区大版内专家分月排行榜第三
2014年3月 Linux/Unix社区大版内专家分月排行榜第二2014年1月 扩充话题大版内专家分月排行榜第二
2014年6月 扩充话题大版内专家分月排行榜第三2014年5月 扩充话题大版内专家分月排行榜第三2014年5月 Linux/Unix社区大版内专家分月排行榜第三
2014年5月 Java大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。developerWorks 社区
Applet 被设计成在“沙箱”中运行,不会对用户系统造成任何损害,因此其安全性要高于基于服务器的应用程序对等物。比方说,Java? 应用程序很容易让其他服务器的网络连接请求 Web 服务响应,applet 也能做到,只不过只能和最初发起的服务器对话。但是如果希望 applet 能够发出任意的 Web 请求,该怎么办呢?本文说明如何通过建立基于服务器的代理来解决这个问题。它还说明了如何使用 JavaScript 代码访问基于 applet 的信息。
(), 开放源代码开发和分析人员, Studio B
的作者,曾参与过许多公司网站的开发,其中包括 Lucent Technologies、Sun Microsystems、Oracle 和 Tampa Bay Buccaneers。Nick 曾经做过高中物理教师、低级放射性废弃设备管理员、在线科幻杂志的编辑、多媒体工程师以及 Oracle 教员。最近,他在担任美国佛罗里达州克利尔沃特市一家交互通信公司的首席技术官,同时,他还是几本介绍 XML 和 Web 开发的书籍的作者,其中包括
Sams)。目前,他正准备购买一座农场,打算和妻子饲养羊驼和小鸡。他很想听到读者的意见,您可以通过
与他联系。
本文将介绍如何创建一个系统,从而可以使用浏览器请求和交互任意来源的 Web 服务数据。首先创建一个基本的 applet,然后再创建从 Web 页面中提取数据的 JavaScript 代码,最后创建一个 servlet 作为非本地请求的代理。本文假设您熟悉 Java 技术和(初步了解)XML。除了 J2SE 1.4 或更高版本这样的 Java 开发环境之外,本文还需要用到几个软件。为了发送和接收 SOAP 消息,您需要 SOAP with Attachments Application Program Interface (API) for Java(SAAJ,关于如何设置它,请参阅“
”),以及 servlet 引擎,如 IBM? WebSphere? Application Server 或者 Apache Tomcat 来运行 servlet。关于所需各种软件包的链接,请参阅
一个简单的请求首先看一看最终由 applet 发出的请求。虽然这项技术适用于任何能够通过 URL 传递的数据,但本文主要讨论 Web 服务,因此我们从一个简单的 SOAP 消息开始,如清单 1 所示。清单 1. 一个简单的 SOAP 消息&SOAP-ENV:Envelope
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="urn:chaosmagnet-quote"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"&
&SOAP-ENV:Body&
&ns1:getQuoteResponse&
&return xsi:type="xsd:string"&The early bird gets the worm, but it's the
second mouse that gets the cheese...&/return&
&/ns1:getQuoteResponse&
&/SOAP-ENV:Body&
&/SOAP-ENV:Envelope&该消息允许您创建一个简单的 Java 应用程序(清单 2)来检索和解析该 URL。
清单 2. 通过 Java 应用程序访问 URLimport java.net.URLC
import java.net.URL;
import javax.xml.parsers.DocumentB
import javax.xml.parsers.DocumentBuilderF
import org.w3c.dom.D
public class SendRequest {
public static void main(String args[]){
URL url = new URL("/testsoap.php");
URLConnection urlconn = url.openConnection();
Document doc =
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
doc = db.parse(urlconn.getInputStream());
System.out.println(doc.getDocumentElement()
.getFirstChild().getNextSibling()
.getFirstChild().getNextSibling()
.getFirstChild().getNextSibling().getFirstChild().getNodeValue());
} catch (IOException e) {
System.out.println("can't find the file:"+e.getMessage());
} catch (Exception e) {
System.out.print("Problem parsing the XML.");
} catch (Exception e){
e.printStackTrace();
}首先,创建真正的
URLConnection 。在此,需要把
InputStream 提供给
DocumentBuilder ,作为构造
Document 对象的来源。我发现输出语句不是很好,但本文主要讨论如何访问数据而不是分析数据,所以我就采用了直接引用的方法。
编译该程序然后在命令行中运行就可以得到预期的结果:The early bird gets the worm, but it's the second mouse that gets the cheese...您可能奇怪我为何宁愿这么麻烦地直接处理 XML,而不去使用(比方说)SAAJ。这是因为最终要把这些代码打包成一个 applet,它要在我无法控制的计算机上运行,因此希望坚持使用作为 Java 技术本身一部分的类。创建 appletapplet 本身很简单,如清单 3 所示:清单 3. 一个简单的 appletimport java.applet.*;
import java.awt.*;
public class SendRequest extends Applet {
public void paint(Graphics g) {
g.drawRect(0, 0, 499, 149);
g.drawString("Printing...", 5, 70);
}每次打开这个 applet 时,applet 都仅仅绘制一个矩形,并在其中显示“Printing...”。保存并编译这个类,然后打开第二个文本文件创建来显示这个 applet 的 HTML 页面,如清单 4 所示。清单 4. 显示 applet 的 HTML 页面&HTML&
&TITLE&A Simple Program&/TITLE&
&APPLET CODE="SendRequest.class" WIDTH="500" HEIGHT="150"&
&/HTML&注意,通常 HTML 页面都包含用来调用 applet 代码的
APPLET 标签。将该 HTML 页面保存到
SendRequest.class 文件所在的目录中,然后在浏览器中打开它。您应该看到与图 1 类似的结果。
图 1. 简单的 applet现在添加检索 URL 的代码。从 applet 中访问响应在 applet 中添加检索 URL 的代码很简单,如清单 5 所示。清单 5. 在 applet 中添加检索 URL 的代码import java.applet.*;
import java.awt.*;
import java.net.URLC
import java.net.URL;
import javax.xml.parsers.DocumentB
import javax.xml.parsers.DocumentBuilderF
import org.w3c.dom.D
public class SendRequest extends Applet {
public void paint(Graphics g) {
g.drawRect(0, 0, 499, 149);
g.drawString(
getResponseText(), 5, 70);
public String getResponseText(){
URL url = new URL("/testsoap.php");
URLConnection urlconn = url.openConnection();
Document doc =
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
doc = db.parse(urlconn.getInputStream());
return (doc.getDocumentElement()
.getFirstChild().getNextSibling()
.getFirstChild().getNextSibling()
.getFirstChild().getNextSibling()
.getFirstChild().getNodeValue());
} catch (Exception e) {
return "Can't get the string.";
} catch (Exception e){
return "Problem accessing the response text.";
}这里包含了大量原来应用程序中的代码,只是将
main() 方法改成了
getResponseText() 方法,并在浏览器显示 applet 时输出到页面中。
一切都准备就绪,但在刷新页面时,会看到情况并非如此,如图 2 所示。(要看到变化,必须在刷新页面时按下
Ctrl键)。
图 2. 从本地文件系统中调用 applet那么,问题出在哪儿呢?前面已经提到,applet 在设计时有一些安全性限制,其中之一就是不能访问服务器,但是不包括最初下载 applet 的服务器。因此,为了从
上请求 URL,只需要把 applet 和 HTML 文件上传到那台服务器上。然后再调用 applet,就能得到预期的结果,如图 3 所示。图 3. 从适当的服务器上访问 applet现在已经获得了数据,可以从 HTML 页面中访问了。通过 JavaScript 访问 applet 数据这个过程的最终目标是使用 JavaScript 代码分析检索的数据。其中的关键是将 applet 看作一个对象,事实上,
APPLET 标签最后将被替换为
object 标签。为了替换标签,必须为其指定
id 属性,如清单 6 所示。
清单 6. 作为对象访问 applet&HTML&
&TITLE&A Simple Program&/TITLE&
&APPLET CODE="SendRequest.class" WIDTH="500" HEIGHT="150" id="TheApplet"&
&b&The returned data is:&/b&&br /&
&script type="text/javascript"&
document.write(TheApplet.getResponseText());
&/HTML&为 applet 指定一个
id 属性,从而能够将其作为简单的对象处理,并且可以直接调用 applet 的方法。如果保存该页面并刷新它,就会看到从页面中提取的信息(参见图 4)。
通过 JavaScript 访问 applet 数据现在就只剩下能够访问任意 URL 的问题了。创建代理现在万事俱备,但是因为安全性要求,您只能访问下载 applet 的服务器。如何才能访问不同的服务器呢?比方说,假设要从 Quote of the Day service 获得实时报价。由于 applet 只能连接到自己的服务器,所以您就不能直接连接到 applet。但是服务器可以连接任何事物,就是说除了直接连接到数据,您还可以连接到检索数据的 servlet。清单 7 中的代码创建了一个从 Quote of the Day service 中检索响应的 servlet。清单 7. 检索远程信息的 servletimport javax.servlet.http.*;
import javax.servlet.*;
import javax.xml.soap.SOAPConnectionF
import javax.xml.soap.SOAPC
import javax.xml.soap.MessageF
import javax.xml.soap.SOAPM
import javax.xml.soap.SOAPP
import javax.xml.soap.SOAPE
import javax.xml.soap.SOAPB
import javax.xml.soap.SOAPE
import javax.xml.transform.TransformerF
import javax.xml.transform.T
import javax.xml.transform.S
import javax.xml.transform.stream.StreamR
public class SendingServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException {
//First create the connection
SOAPConnectionFactory soapConnFactory =
SOAPConnectionFactory.newInstance();
SOAPConnection connection =
soapConnFactory.createConnection();
//Next, create the actual message
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage message = messageFactory.createMessage();
//Create objects for the message parts
SOAPPart soapPart =
message.getSOAPPart();
SOAPEnvelope envelope = soapPart.getEnvelope();
SOAPBody body =
envelope.getBody();
//Populate the body
//Create the main element and namespace
SOAPElement bodyElement =
body.addChildElement(envelope.createName("getQuote" ,
"urn:xmethods-qotd"));
//Save the message
message.saveChanges();
//Send the message and get a reply
//Set the destination
String destination =
"/bin/qotd";
//Send the message
SOAPMessage reply = connection.call(message, destination);
//Check the output
//Create the transformer
TransformerFactory transformerFactory =
TransformerFactory.newInstance();
Transformer transformer =
transformerFactory.newTransformer();
//Extract the content of the reply
Source sourceContent = reply.getSOAPPart().getContent();
resp.setHeader("Content-Type", "text/plain");
//Set the output for the transformation
StreamResult result = new StreamResult(resp.getWriter());
transformer.transform(sourceContent, result);
//Close the connection
connection.close();
} catch(Exception e) {
System.out.println(e.getMessage());
}这段脚本看起来又长又复杂,但实际上非常简单。它首先创建
SOAPConnection 和消息对象,然后根据 Quote of the Day service 的要求使用
getQuote 元素填充该对象。
创建完成请求消息之后,将其发送到服务并检索答复。将答复作为
SOAPMessage 对象返回,但是您需要把消息的实际文本传递给 servlet 的
Response 对象。为此,只需要使用以响应为目标的 XSLT 恒等转换。
编译上述 servlet,并按照一般的 servlet 方式安装它(如果需要帮助,请参阅
),然后就可以直接从浏览器中调用它,并看到图 5 所示的结果。
图 5: 本地 servlet 检索得到的远程响应现在,把远程信息放到 applet 中就与调用 servlet 一样简单了,如清单 8 所示:清单 8. 从 applet 中调用远程数据...
public void paint(Graphics g) {
g.drawRect(0, 0, 499, 149);
g.drawString(getResponseText(), 5, 70);
public String getResponseText(){
URL url = new URL("
http://localhost:8080/servlet/SendingServlet");
URLConnection urlconn = url.openConnection();
Document doc =
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
doc = db.parse(urlconn.getInputStream());
return (doc.getDocumentElement()
.getFirstChild().getFirstChild().getFirstChild()
.getFirstChild().getNodeValue());
} catch (Exception e) {
return "Can't get the string:"+e.toString();
} catch (Exception e){
return "Problem accessing the response text."+e.toString();
}注意,这里的代码基本上是相同的,只有两个地方不一样。首先,这里没有直接调用数据,而是调用检索数据的 servlet。其次,因为服务返回的消息没有断行,所以在这里稍微整理了一下。如需查看结果,可以将 applet 和 HTML 页面复制到安装 serlevt 的服务器上,然后就可以访问 applet 并察看结果了,如图 6 所示。图 6: 查看结果结束语本文介绍了如何创建一个系统,可以使浏览器访问任意的 Web 服务。JavaScript 代码在 applet 中调用了一个方法,而 applet 又调用了检索远程信息的 servlet,这样就避开了 applet
访问能力的限制。现在,您可以从几个方面来理清整个过程或者增强其功能。因为数据是被拖放入 JavaScript 代码中的,所以您不需要在页面上显示真正的 applet。您还可以修改 applet,从服务中检索多条信息,或者在单个请求中传回信息,而不必在每次用户更改窗口时发送新的请求。如果想更进一步,还可以修改 servlet 的选项,使它从 applet 中获取参数。这些参数可以决定 servlet 调用什么服务,或者传递给服务什么参数。使用这些方法(如本文中的
getResponseText() ),您甚至可以编写 JavaScript 代码,将这些参数导入 applet,让用户决定最终显示什么信息。
参考资料 您可以参阅本文在 developerWorks 全球站点上的
,查看 Web 服务相关建议的状态。
要了解如何创建和使用 SOAP 消息,请参阅“
developerWorks,2003 年 7 月)。
下载 SAAJ,它是
的一部分。
从 Apache Project 上下载 servlet 替代引擎
alphaWorks的
下载完整的 Web 服务工具箱。
阅读我们的
developerWorksand
专区可以找到大量的文章、专栏、教程和技巧,还可以订阅
developerWorks可以找到大量有关 XML 的书籍。
developerWorks: 登录
标有星(*)号的字段是必填字段。
保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件。
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
选择您的昵称
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。
您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
标有星(*)号的字段是必填字段。
(昵称长度在 3 至 31 个字符之间)
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
IBM PureSystems(TM) 系列解决方案是一个专家集成系统
通过学习路线图系统掌握软件开发技能
软件下载、试用版及云计算
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=XMLArticleID=49072ArticleTitle=使用 Java applet 访问远程 Web 服务publish-date= Java游戏开发学习情境7网络对弈程序 本文档属于精品文档、课件类技术资料,转载..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
 Java游戏开发学习情境7网络对弈程序
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口本文欢迎转载,转载请注明:转载自中国学网: []
用户还关注
可能有帮助提问回答都赚钱
> 问题详情
下面的代码实现一个简单的Applet:import java.applet.Applet;import java.awt.*;public class Sa
悬赏:0&&答案豆&&&&提问人:匿名网友&&&&提问收益:0.00答案豆&&&&&&
下面的代码实现一个简单的Applet: import java.applet.Applet; import java.awt.*; public class Sample extends Applet { private String text="Hello World"; public void init() { add(new Label(text)); } public Sample(String string) { text=string; } } 通过下面的HTML文件访问: html> title>Sample Applet/title> body> applet code="Sample.class"width=200 height=200>/applet> /body> /html> 当编译和运行该小程序时会出现什么结果,请选择正确的答案。( )A.将会出现“Hello World"B.将会产生一个运行时错误C.什么都没有D.产生一个编译时错误
发布时间:&&截止时间:
网友回答&(共0条)
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&4.00元收益
回答悬赏问题预计能赚取&4.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&10.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&4.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&6.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&5.00元收益
为你请到的专家
&&&&采纳率:76%&&&
&&采纳率:97%&&&
&&采纳率:88%&&&
&&&&采纳率:25%&&&
&&采纳率:90%&&&
[] [] [] [] [] [] [] [] [] [] [] []
请先输入下方的验证码查看最佳答案

我要回帖

更多关于 java applet 运行 的文章

 

随机推荐