Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 265|回复: 0

[Swing学习]养在深闺人未识:Applet与DOM

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-11-5 23:56:06 | 显示全部楼层 |阅读模式
    java Applet是如此的平常以至于几乎任何Java的入门书籍中都有它的详细描述,但这里要展示的是它不平常的另一面:Applet既是一个Java Class, 又是Web页面DOM结构的一个节点,具有操纵DOM从而修改页面的强大能力。
                                                                                        
          我们看到的浏览器中的千变万化的页面在浏览器内部表达为文档对象模型(DOM),对它的修改会直接影响页面的外观。时下流行的AJAX的基本技术就是用JavaScript从网上取得数据来局部地修改页面的DOM,已达到流畅的客户体验的目的。

            其实,Java Applet 很早就可以存取其所在页面的DOM,只是由于这方面的文档或例子比较少,甚至java.sun.com上 Java 教程中都没有提及这个强大的特性,以至于很多人没有意识到它。
    与Java应用程序相比,Java 小程序并不小,它除去可以具有普通Java应用程序的所有功能外,还可以访问浏览器中的服务,包括DOM。
      
      
      
       
              对DOM的操纵有两种方法,一种是通过 netscape.javascript.JSObject,这在一些JavaScript的书中可以看到;第二种方法是通过Common DOM API,这个API包含了大量的类,是DOM标准的一种Java语言绑定的实现,与第一种方法相比具有更强的类型安全性。
       

       
            这里举一个小例子来通过Java Applet来修改DOM,以隐藏/显示页面。简单地说,是修改body元素的style属性。当然,Applet可以修改DOM 的任何部分,包括插入/删除/修改节点和其属性。
       
         
    // TestDom.java,在jdk1.5下编译通过。
         
    import javax.swing.*;
         
    import java.awt.event.*;
         
    import com.sun.java.browser.dom.*;
         
    import org.w3c.dom.*;
         
    import org.w3c.dom.HTML.*;
         
    import org.w3c.dom.css.*;
         

         
    public class TestDom extends JApplet implements ActionListener {
         
         public void init(){
         
             JButton btn = new JButton("Test");
         
             btn.addActionListener(this);
         
             add(btn);
         
         }
         

         
         public void actionPerformed(ActionEvent ae) {
         
             try{
         
                 DOMService ds = DOMService.getService(this);
         
                 final JApplet applet = this;
         

         
                 HTMLDocument doc = (HTMLDocument)ds.invokeAndWait(
         
                   new DOMAction(){
         
                     public Object run(DOMAccessor accessor){
         
                         return accessor.getDocument(applet);
         
                     }
         
                   });
         
                 HTMLBodyElement body = (HTMLBodyElement)doc.getBody();
         
                 CSSStyleDeclaration style = ((ElementCSSInlineStyle)body).getStyle();
         
                 style.setProperty("visibility", "hidden", null);
         
                 Thread.sleep(3000);
         
                 style.setProperty("visibility", "visible", null);
         
             } catch (Exception e) {
         
                 e.printStackTrace();
         
             }
         
         }
         
    }
         

         将下面一行嵌入某个页面中,按下按钮,就可以隐藏那个页面3秒。注意MAYSCRIPT,这个例子需要它才能在Mozilla/Firefox中工作。 IE不需要。
       

       
    <applet codeE = "TestDom.class" width = 100 height = 20 mayscript></APPLET>
       

       
         事实上,我们可以用Java Applet来实现AJAX,与其它实现方式相比,它具有Java平台的强大功能,如网络连接,安全等等。在Internet上Java Applet可以用HTTP来和服务器端通信,而在Intranet或局域网中可以使用更快捷的方式如Socket.
       

       
         Applet还可以实现RIA(Rich Internet Application),这已经属于Web 2.0的技术了。有兴趣的开发者可以看看http://www.nexaweb.com所用的jRex. 它实质上是在客户端用Applet作为引擎来解释以XML来表述的UI。
       

       
         Java技术与浏览器技术的结合,随着Web的发展越来越得到认同。Applet技术将会扮演一个越来越重要的角色。
       

       


       
         
         
          
          

            
          

            
          
         
       

      


    源码下载:http://file.javaxxz.com/2014/11/5/235606671.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 13:44 , Processed in 0.405470 second(s), 49 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表