`
mondayw
  • 浏览: 144106 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

[译文] Java Applets和ASP.net——你可让他们玩到一起吗?

    博客分类:
  • Java
阅读更多

原文:Java Applets, ASP.net - Can You Play Together?

作者:Sowmya Kannan

出处:http://java.sun.com/developer/technicalArticles/appletAspIntegration/index.html

 

你的web应用平台是基于ASP.net技术的吗?当用户访问你的站点时,你想利用无处不在的Java平台来提供丰富的用户体验吗?你可以使用JavaJavaFX语言来开发安全的富互联网应用(Rich Internet ApplicationRIA——appletJava Web Start应用),Java客户端技术无缝地整合了ASP.net技术。在这篇文章中,我们将探讨Java applet能够与ASP.net网页交互的各种机制。

 

 

查看appletASP.net之间的交互

   

这是一段简短的截屏视频(screencast)(大概两分半钟),展示了applet如何能够与ASP.net页面交互,可通过观看这一截屏视频来更好的了解本文剩余部分涉及到的上下文环境。

 

 (因为编辑器原因,无法播放flash,可在原文中播放。)

 

ASP.net页面中部署一个applet

   

如下代码片段所示,使用部署工具包(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>

 

ASP.net,我们需要交流

 

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

 

可以使用cookie来在appletASP.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可以以下方式之一来访问该值:

 

利用LiveConnect来更新ASP.net页面

 

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的数据来更新隐藏的表单字段。

 

调用ASP.net页面

 

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页面交互,请选择最适合你的应用的那种。我们将非常乐意听到你关于本文的反馈,如果你正在使用一些很有创意的方法来把appletASP.net很好地放一起工作的话,那么来与整个社区一起分享你的见解吧!

 

源代码

 

可下载ASP.net项目和Java代码(Netbeans项目)来进行更进一步的实验,点击以下链接就可以查看单个的源代码文件:

 

Java源代码(zip压缩文件

 

 

ASP.net源代码(zip压缩文件

 

 

资源

 

 

分享到:
评论

相关推荐

    ASP.NET画图全攻略

    传统的 ASP 技术不支持画图表,需要利用 ActiveX 或 Java Applets 来实现这个功能。但是,新近出现的 ASP.NET 解决了这个问题,只要利用 ASP.NET 中关于图像显示的类,就能够画出丰富、动态的图表。 在 ASP.NET 中...

    JAVA applets

    这个压缩包文件"Applets1"很可能是包含了一些Java Applet的源代码示例,供初学者进行学习和调试。 Java Applets的工作原理基于Java插件,该插件允许Web浏览器解析和执行Java字节码。当用户访问包含Java Applet的...

    ASP.NET编程基础

    ASP.NET是微软推出的一种基于.NET框架的Web应用开发技术,具有事件驱动和基于控件的特性。Web窗体是ASP.NET中的核心概念,提供了丰富的控件库,使得开发者能构建用户界面,并通过代码声明块实现功能。Web窗体工作...

    Java - Introduction To Cryptography With Java Applets

    - **Java Security API**:Java Security API提供了一组接口和类,可以用来实现各种安全功能,包括认证、授权和加密等。 ##### 3. Java Applets与密码学 - **Java Applets的概念**:Java Applets是一种小型应用...

    java_applets.rar_ java_applets_SSCOMV3.0_WireFusion_Player_java3

    Java Applets是Java技术在早期Web开发中的一种应用方式,主要用于在浏览器中运行小型的Java程序,以增强网页的功能和交互性。标题中的"java_applets.rar"表明这是一个与Java Applets相关的压缩文件,可能包含了用于...

    Java applets.ppt

    Java Applets Java Applets 是 Java 程序的一种类型,它们可以在浏览器中运行。它们与独立应用程序和 Servlet programs 相比,具有不同的特点和限制。 什么是 Java Applets? Java Applets 是一种 Java 程序,...

    java认证课程Java应用和Java applets的面向对象

    Java认证课程旨在帮助学员深入理解和掌握Java编程语言的核心概念与技术,特别关注Java应用程序(Java Applications)和Java小应用程序(Java Applets)的面向对象编程方法。本课程将引导学习者从基础到高级,逐步...

    java-applets-program.rar_java

    applets-program.rar_java”显然包含了一个关于Java Applets的详细讲解资源,特别是“java applets program.ppt”,这是一个PowerPoint演示文稿,可能涵盖了Applets的基础知识、工作原理以及如何开发和部署。...

    AspriseOcr java 和net Demo源码

    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, ...

    APS.NET ppt

    ASP.NET是微软公司推出的一种用于构建Web应用程序的框架,它基于.NET Framework,提供了丰富的功能和工具,使得开发者能够更高效地创建动态、交互式的网页和应用程序。本资源作为ASP.NET的第一章课件,主要介绍了Web...

    Asp.Net JavaScript基础

    ### Asp.Net JavaScript基础知识点详解 #### 一、JavaScript简介 **JavaScript** 是一种轻量级的编程语言,被广泛应用于网页开发中,用于增强网页的互动性和动态性。JavaScript 能够直接嵌入到 HTML 文件中,也...

    Java——API6

    它在2006年发布,为开发者提供了大量新特性和改进,提升了Java平台的性能、稳定性和可扩展性。在本文中,我们将深入探讨Java API 6中的关键特性、改进以及它对Java开发领域的影响。 1. **增强的内存管理与垃圾回收*...

    基于Asp的网上答疑系统源码.zip

    此外,标签还包含了"asp.net"和"java",这两个标签可能是由于Asp后来演变为Asp.NET(一种更现代的微软Web开发框架),以及可能在系统中用到的一些Java技术,如Java Applets或者JSP(JavaServer Pages)来实现部分...

    Java数据结构和算法(第二版)+源代码+Applets

    总而言之,"Java数据结构和算法(第二版)+源代码+Applets"是一个全面的学习资源,涵盖了从基本到高级的数据结构和算法知识,结合源代码实践和Applet演示,使学习过程更加生动和高效。无论是对Java初学者还是经验丰富...

    IKVM.NETv8.1

    通过IKVM.NET,开发者可以将Java类库无缝集成到他们的.NET应用中,无需进行任何代码转换。 IKVM.NET的核心是它的字节码到.NET中间语言(IL)的转换器。当一个.jar文件被引入到IKVM.NET环境中时,它会被转换成.NET...

    基于Asp的客户关系管理系统源码.zip

    6. Java:虽然主要标签是ASP,但Java的提及可能意味着系统的一部分或接口使用了Java,例如,可能有Java Applets、Servlets或JSP(JavaServer Pages)用于特定功能。 7. 毕业设计:理解项目的目的和结构,如何将其...

    Creating Web Applets With Java

    Web小应用程序(Applets)是Java的一种早期应用形式,允许在浏览器环境中执行Java代码,为用户提供丰富的用户体验。本文将深入探讨如何使用Java来创建和部署Web小应用程序。 一、理解Web小应用程序 Web小应用程序...

    JAVA大学教程(第五版)[3]

    ### JAVA大学教程(第五版)[3]:Java Applets 入门 #### 3.1 引言 在本章中,我们将深入了解Java ...通过本章的学习,你可以掌握Java Applets的基本原理和操作流程,为进一步探索更高级的Java应用打下坚实的基础。

    愿意把java白皮书的11个特性改成C#特性归类.pdf

    - C#有ASP.NET技术,用于构建Web应用程序,替代了Java Applets。ASP.NET中的Web Forms和MVC模式提供了更丰富的Web开发体验。 10. **封装(Encapsulation)** - C#也支持封装,通过访问修饰符(public、private等)...

    Java教案——3章 个人学习资料

    客户端收到网络传输的字节码后,通过JRE中的JVM将字节码转化为本地码(Native code),这个过程可能涉及Java HotSpot Runtime或者Java Plug-in,前者适用于非图形环境,后者用于浏览器中运行Java Applets。...

Global site tag (gtag.js) - Google Analytics