- 浏览: 143751 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
邪恶八进制:
译的还不错,其实简单说、JPA三种继承映射体系如下:1.参照父 ...
[译文]JPA的实施模式:映射继承的层次体系 -
mondayw:
卓越上有售,地址:http://www.amazon.cn/m ...
翻译的第一本书出版了 -
黑暗浪子:
哪里有订?
翻译的第一本书出版了 -
mondayw:
不好意思,没有测试过,我以为这只是示范性的代码而已。
[译文]Java EE 6中的依赖注入——第1部分(二) -
jimmy.shine:
不知道你有无测试过这范例程序,在JBoss 6.0M2中,程序 ...
[译文]Java EE 6中的依赖注入——第1部分(二)
原文:Java Applets, ASP.net - Can You Play Together?
作者:Sowmya Kannan
出处:http://java.sun.com/developer/technicalArticles/appletAspIntegration/index.html
你的web应用平台是基于ASP.net技术的吗?当用户访问你的站点时,你想利用无处不在的Java平台来提供丰富的用户体验吗?你可以使用Java和JavaFX语言来开发安全的富互联网应用(Rich Internet Application,RIA——applet和Java Web Start应用),Java客户端技术无缝地整合了ASP.net技术。在这篇文章中,我们将探讨Java applet能够与ASP.net网页交互的各种机制。
这是一段简短的截屏视频(screencast)(大概两分半钟),展示了applet如何能够与ASP.net页面交互,可通过观看这一截屏视频来更好的了解本文剩余部分涉及到的上下文环境。
(因为编辑器原因,无法播放flash,可在原文中播放。)
如下代码片段所示,使用部署工具包(Deployment Toolkit)的脚本来在ASP.net页面中部署一个applet:
Default.aspx
<body>
...
<script src="http://www.java.com/js/deployJava.js"></script>
<script>
var attributes = { width:675, height:300} ;
var parameters = { jnlp_href: 'applet/map-applet.jnlp'};
deployJava.runApplet(attributes, parameters, '1.6');
</script>
...
</body>
applet(运行在客户端)能够使用以下机制来与ASP.net页面(运行在服务器上)交互:
-
cookie——applet能够设置和检索由ASP.net页面设定的cookie。
-
更新HTML元素和ASP.net控件——applet可利用LiveConnect特性来更新所属父页面中的HTML元素和ASP.net控件的值。
-
直接调用ASP.net页面——applet可以使用java.net.URLConnection类来调用ASP.net页面,传递参数给该页面,并获取响应。
可以使用cookie来在applet和ASP.net页面之间共享数据。Applet可以获取由ASP.net页面设定的cookie,基于同理,ASP.net也可以获取由applet设定的cookie。
在接下来展示的代码段中,MapApplet类使用java.net.CookieHandler类来获取由该applet所属父页面设定的userName这一cookie,文本内容“Hello <用户名称>”会显示在该applet的左上角。
private void getUserNameFromCookie() {
try {
// 获取用于该applet所属父页面的cookie
URL docBaseUrl = this.getDocumentBase();
CookieHandler cookieHandler = CookieHandler.getDefault();
java.util.Map<String, List<String>> headers =
cookieHandler.get(docBaseUrl.toURI(),
new HashMap<String,List<String>>());
if (headers.isEmpty()) {
System.out.println("No cookies found!");
} else {
getUserNameFromHeader(headers);
}
} catch(Exception e) {
...
}
}
private void getUserNameFromHeader(java.util.Map<String, List<String>> headers) {
for (String key : headers.keySet()) {
for (String value : headers.get(key)) {
if (key.equals("Cookie") && value.startsWith("userName")) {
userName = value.split("=")[1];
}
}
}
}
注:在使用java.net.CookieHandler的时候,需要对applet签名,如果你不希望对applet签名的话,那么可以在ASP.net页面中使用JavaScript代码来获取cookie的值,applet可以以下方式之一来访问该值:
-
作为参数传递给applet,请参阅定义和使用applet参数一文以获得更多信息。
-
Applet可以利用LiveConnect特性来与JavaScript代码交互并访问cookie的值,请参阅从applet调用JavaScript代码一文以获得更多信息。
applet可以利用LiveConnect特性来与其所属父页面中的JavaScript代码交互,applet可以调用JavaScript函数以及访问JavaScript变量,以此来更新其所属父页面的内容,页面中的JavaScript代码也可以调用applet的方法。
在以下的代码片段中,MapApplet类使用netscape.javascript.JSObject类的一个实例来更新asp:TextBox ID=”addresses”这一控件的内容。
MapApplet.java
public void updateWebPage(String street, String city, String state) {
char result = invokeAspPage(street, city, state);
if (result == '1') {
window.call("writeAddressOnPage", new Object[] {street, city, state});
}
}
Default.aspx
<body>
...
<script type="text/javascript" language="javascript">
function writeAddressOnPage(street, city, state) {
var address = street + ", " + city + ", " + state;
var form = document.getElementById("addrForm");
var prevValue = form.elements["addresses"].value;
form.elements["addresses"].value = prevValue + "\n" + address;
}
</script>
<form id="addrForm" runat="server">
<div>
<p>Addresses saved to your address book:</p>
<asp:TextBox ID="addresses" TextMode="MultiLine" Rows="6"
Columns="60" runat="server" ></asp:TextBox>
</div>
</form>
...
</body>
在表单提交时,通过Request这一对象,表单各字段的值对于下一个ASP.net页面来说就变为可用的了,所以你可能也会选择使用applet的数据来更新隐藏的表单字段。
applet可以使用java.net.URLConnection类来调用ASP.net页面,在以下的代码片段中,MapApplet类打开了一个到FileWriter.aspx页面的连接,使用连接的输出流传递参数,并通过读取连接的输入流来获取结果。
MapApplet.java
public char invokeAspPage(String street, String city, String state) {
char [] result = {'0'};
...
String urlString = baseUrl + "FileWriter.aspx";
URL url = new URL(urlString);
URLConnection connection = url.openConnection();
connection.setDoOutput(true);
// 发送参数给url连接
OutputStreamWriter out = new OutputStreamWriter(
connection.getOutputStream());
out.write("addresses=" + URLEncoder.encode(address, "UTF-8"));
out.close();
//从url连接中读取响应
BufferedReader in = new BufferedReader(
new InputStreamReader(
connection.getInputStream()));
in.read(result);
in.close();
...
return result[0];
}
FileWriter.aspx页面把给定的地址信息写到位于ASP.net服务器上的userData/addresses.txt这一文本文件中,如果地址被成功写入的话,则该页面返回’1’这一字符值。
正如在本文中展示的那样,applet可通过好几种方式与ASP.net页面交互,请选择最适合你的应用的那种。我们将非常乐意听到你关于本文的反馈,如果你正在使用一些很有创意的方法来把applet和ASP.net很好地放一起工作的话,那么来与整个社区一起分享你的见解吧!
可下载ASP.net项目和Java代码(Netbeans项目)来进行更进一步的实验,点击以下链接就可以查看单个的源代码文件:
Java源代码(zip压缩文件)
ASP.net源代码(zip压缩文件)
-
Java教程中的部署途径
发表评论
-
[译文]技巧:防范代码的终结器漏洞
2011-08-02 11:11 766你的Java代码有可能会因终结操作带来的漏洞而易受到攻击,了解 ... -
[译文] 一种减少多线程Java应用的工作队列中的竞争和开销的方法
2011-06-21 10:08 1015许多的服务器应用,比如说Web服务器、应用服务器、数据库服务器 ... -
[译文]Java SE 7带来更好的资源管理:不仅仅是语法糖
2011-06-18 19:55 793本文介绍了Java Platform, Standard Ed ... -
[译文]双重检查锁定和单件模式
2011-05-06 11:50 863所有的编程语言都会有分享一些它们的惯用技法,其中的 ... -
RJC501:为周转期付出的代价有多大?
2011-04-18 16:43 835通过重载Java类(Reloading Java ... -
RJC401:HotSwap和JRebel——幕后的故事
2011-04-11 16:31 1042在本文中,我们会回顾类在没有动态类加载器情况下的重载方式;我们 ... -
RJC301:Web开发——Tomcat、GlassFish、OSGi、Tapestry等服务器和框架中的Classloader
2011-04-04 15:26 977在本文中,我们会回顾真实的服务器、容器和框架是如何使用动态的类 ... -
RJC201:ClassLoader的泄漏是如何发生的?
2011-03-28 19:58 891你如果使用Java编程已有一段时间的话,那么你就会知道内存泄漏 ... -
jQuery的.bind()、.live()和.delegate()之间的区别
2011-03-19 22:01 856.bind()、.live()和.delegate()之间的 ... -
示例:JavaScript中的后续传递风格
2011-03-19 21:57 858本文介绍了CPS所扮演的两种角色——作为JavaScript中 ... -
[译文]开发者见解系列,第3部分:编写代码的步骤(下)
2010-07-27 22:11 912原文:The Developer Insight ... -
[译文]开发者见解系列,第3部分:编写代码的步骤(上)
2010-07-27 22:05 1141原文:The Developer Insight Series ... -
[译文]开发者见解系列,第2部分:谈谈编码(下)
2010-07-14 22:31 881原文:The Developer Insight Series ... -
[译文]开发者见解系列,第2部分:谈谈编码(上)
2010-07-14 22:26 1109原文:The Developer Insight Series ... -
[译文]开发者见解系列,第1部分:编写傻瓜代码——来自四位首席Java开发者的建议(下)
2010-06-28 12:32 854原文:The Developer Insight Series ... -
[译文]开发者见解系列,第1部分:编写傻瓜代码——来自四位首席Java开发者的建议(上)
2010-06-28 12:25 1449原文:The Developer Insight Series ... -
[译文] Java EE 6中的DataSource资源的定义
2010-05-20 12:29 1961原文:DataSource Resource Definiti ... -
[译文]使用Java编写你的第一个Google Wave机器人(下)
2010-01-25 21:03 1086原文:Write Your First Google Wave ... -
[译文]使用Java编写你的第一个Google Wave机器人(上)
2010-01-25 21:02 1351原文:Write Your First Google Wave ... -
[译文]一些Java并发技巧
2009-12-20 18:25 1051原文:Some Java Concurrency Tips ...
相关推荐
传统的 ASP 技术不支持画图表,需要利用 ActiveX 或 Java Applets 来实现这个功能。但是,新近出现的 ASP.NET 解决了这个问题,只要利用 ASP.NET 中关于图像显示的类,就能够画出丰富、动态的图表。 在 ASP.NET 中...
这个压缩包文件"Applets1"很可能是包含了一些Java Applet的源代码示例,供初学者进行学习和调试。 Java Applets的工作原理基于Java插件,该插件允许Web浏览器解析和执行Java字节码。当用户访问包含Java Applet的...
ASP.NET是微软推出的一种基于.NET框架的Web应用开发技术,具有事件驱动和基于控件的特性。Web窗体是ASP.NET中的核心概念,提供了丰富的控件库,使得开发者能构建用户界面,并通过代码声明块实现功能。Web窗体工作...
- **Java Security API**:Java Security API提供了一组接口和类,可以用来实现各种安全功能,包括认证、授权和加密等。 ##### 3. Java Applets与密码学 - **Java Applets的概念**:Java Applets是一种小型应用...
Java Applets是Java技术在早期Web开发中的一种应用方式,主要用于在浏览器中运行小型的Java程序,以增强网页的功能和交互性。标题中的"java_applets.rar"表明这是一个与Java Applets相关的压缩文件,可能包含了用于...
Java Applets Java Applets 是 Java 程序的一种类型,它们可以在浏览器中运行。它们与独立应用程序和 Servlet programs 相比,具有不同的特点和限制。 什么是 Java Applets? Java Applets 是一种 Java 程序,...
Java认证课程旨在帮助学员深入理解和掌握Java编程语言的核心概念与技术,特别关注Java应用程序(Java Applications)和Java小应用程序(Java Applets)的面向对象编程方法。本课程将引导学习者从基础到高级,逐步...
applets-program.rar_java”显然包含了一个关于Java Applets的详细讲解资源,特别是“java applets program.ppt”,这是一个PowerPoint演示文稿,可能涵盖了Applets的基础知识、工作原理以及如何开发和部署。...
Asprise Java/C#,VB.NET OCR (optical character recognition) and barcode recognition SDK offers a high performance API library for you to equip your Java applications (Java applets, web applications, ...
ASP.NET是微软公司推出的一种用于构建Web应用程序的框架,它基于.NET Framework,提供了丰富的功能和工具,使得开发者能够更高效地创建动态、交互式的网页和应用程序。本资源作为ASP.NET的第一章课件,主要介绍了Web...
### Asp.Net JavaScript基础知识点详解 #### 一、JavaScript简介 **JavaScript** 是一种轻量级的编程语言,被广泛应用于网页开发中,用于增强网页的互动性和动态性。JavaScript 能够直接嵌入到 HTML 文件中,也...
它在2006年发布,为开发者提供了大量新特性和改进,提升了Java平台的性能、稳定性和可扩展性。在本文中,我们将深入探讨Java API 6中的关键特性、改进以及它对Java开发领域的影响。 1. **增强的内存管理与垃圾回收*...
此外,标签还包含了"asp.net"和"java",这两个标签可能是由于Asp后来演变为Asp.NET(一种更现代的微软Web开发框架),以及可能在系统中用到的一些Java技术,如Java Applets或者JSP(JavaServer Pages)来实现部分...
总而言之,"Java数据结构和算法(第二版)+源代码+Applets"是一个全面的学习资源,涵盖了从基本到高级的数据结构和算法知识,结合源代码实践和Applet演示,使学习过程更加生动和高效。无论是对Java初学者还是经验丰富...
6. Java:虽然主要标签是ASP,但Java的提及可能意味着系统的一部分或接口使用了Java,例如,可能有Java Applets、Servlets或JSP(JavaServer Pages)用于特定功能。 7. 毕业设计:理解项目的目的和结构,如何将其...
通过IKVM.NET,开发者可以将Java类库无缝集成到他们的.NET应用中,无需进行任何代码转换。 IKVM.NET的核心是它的字节码到.NET中间语言(IL)的转换器。当一个.jar文件被引入到IKVM.NET环境中时,它会被转换成.NET...
Web小应用程序(Applets)是Java的一种早期应用形式,允许在浏览器环境中执行Java代码,为用户提供丰富的用户体验。本文将深入探讨如何使用Java来创建和部署Web小应用程序。 一、理解Web小应用程序 Web小应用程序...
### JAVA大学教程(第五版)[3]:Java Applets 入门 #### 3.1 引言 在本章中,我们将深入了解Java ...通过本章的学习,你可以掌握Java Applets的基本原理和操作流程,为进一步探索更高级的Java应用打下坚实的基础。
- C#有ASP.NET技术,用于构建Web应用程序,替代了Java Applets。ASP.NET中的Web Forms和MVC模式提供了更丰富的Web开发体验。 10. **封装(Encapsulation)** - C#也支持封装,通过访问修饰符(public、private等)...
客户端收到网络传输的字节码后,通过JRE中的JVM将字节码转化为本地码(Native code),这个过程可能涉及Java HotSpot Runtime或者Java Plug-in,前者适用于非图形环境,后者用于浏览器中运行Java Applets。...