博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Applet与javacript通信
阅读量:4158 次
发布时间:2019-05-26

本文共 5705 字,大约阅读时间需要 19 分钟。

 netscape.javascript.JSException;

 netscape.javascript.JSObject;

这两个类在c:/windows/java/package/目录下有个5M左右的zip文件里,拿出来弄成jar包即可。(jre下有个小点的jar包:plugin.jar 用这个最好)

package applet;

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.Timer;
import netscape.javascript.JSException;
import netscape.javascript.JSObject;
public class Test extends Applet implements MouseListener{
    int mouseX=0;
    int mouseY=0;
    
    JSObject win = null; ;
    JSObject doc;
    
    public void paint(Graphics g) {
        //Draw a rectangle width=250, height=100
        g.drawRect(0,0,250,100);
        //Set the color to blue
        g.setColor(Color.blue);
        //Write the message to the web page
        g.drawString("Look at me, I'm a Java ccccccc"+mouseY+"  "+mouseX,10,50);
        
        
    
        }
    
    
    public void showDialogIn() throws Exception{
        String name = JOptionPane.showInputDialog("请输入你的姓名:");
        JOptionPane.showMessageDialog(null, "输入的姓名是:"+name);
//        win.eval("javascript:alert(\""+name+"\")");
//        win.eval("javascript:showMsg(\""+name+"\")");
     try {
            win = JSObject.getWindow(this);

            win.eval("javascript:alert('bbbbbbbbbbb')");

            //这里调用js里的方法

            win.eval("javascript:showMsg('"+name+"');");
        } catch (JSException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

//        doc =(JSObject)win.getMember("document");

//         下面这里直接调用方法 不成功,页面提示 找不到方法,不知道什么原因

//        doc.call("showMsg", new Object[]{name});
    }
        
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    
    public void init() {
        System.out.println("init..........");
        this.addMouseListener(this);
        
        
    }
    public static void showTime(JLabel jlabel) {
        
    }
    public void start() {
    
    }
    public void mouseClicked(MouseEvent e) {
        JOptionPane.showMessageDialog(null,"aaa"+e.getID()+" ","提示",JOptionPane.WARNING_MESSAGE);
        
    }
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
        mouseX = e.getX();
        mouseY = e.getY();
        repaint();
        
    }
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }

}

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="0">
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="/WEB-INF/jsp/ccs/includes.jsp" %>
<%@ taglib prefix="lms" uri="/WEB-INF/tld/lms.tld" %>
<HTML>
  
<HEAD>
      <TITLE>MyFirstJavaApplet</title>
      
</HEAD>
  
<BODY>
  Here'smyfirstJavaApplet:sdfsadfa bbbbbbbbbbbbb
 <input type="button" value="go000" οnclick="showWindowIn()"/>  
bbbb
<applet  name="Test"  width="100" height="100" code="applet/Test.class" archive="netscape.jar" MAYSCRIPT>
</applet>
//以下是用htmlconverter转换后生成的
<object name="ShowTaskApplet"
        classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
        codebase="http://java.sun.com/update/1.6.0/jinstall-6u20-windows-i586.cab#Version=6,0,0,6"
        WIDTH="0" HEIGHT="0" ALT="文件上传applet小程序">
    <PARAM NAME=CODE VALUE="com.wiscom.lms.applet.FileUploadApplet.class">
    <PARAM NAME=CODEBASE VALUE="./applet">
    <PARAM NAME=ARCHIVE VALUE="uploadApplet.jar,commons-logging-1.1.1.jar,commons-net-3.0.1.jar,plugin.jar">
    <param name="type" value="application/x-java-applet;version=1.6">
    <PARAM NAME = MAYSCRIPT VALUE = "true" >
    <PARAM NAME="type" VALUE="application/x-java-applet;version=1.6">
    <PARAM NAME="scriptable" VALUE="false">
    <PARAM NAME="host" VALUE="172.16.41.27">
    <PARAM NAME="port" VALUE="21">
    <PARAM NAME="userName" VALUE="cc">
    <PARAM NAME="password" VALUE="cc">
    <PARAM NAME="acceptAllFileFilterUsed" VALUE="false">
    <PARAM NAME="isDirectorySelectionEnabled" VALUE="true">
    <PARAM NAME="ftpPath" VALUE="/aaa/bbb/">
    <comment>
        <embed id="app"
                type="application/x-java-applet;version=1.6"
        \
        CODE = "com.wiscom.lms.applet.FileUploadApplet.class" \
        JAVA_CODEBASE = "./applet" \
        ARCHIVE = "uploadApplet.jar,commons-logging-1.1.1.jar,commons-net-3.0.1.jar,plugin.jar" \
        ALT = "文件上传applet小程序" \
        WIDTH = "400" \
        HEIGHT = "300" \
        MAYSCRIPT = true \
        MAYSCRIPT = "true" \
        type ="application/x-java-applet;version=1.6" \
        scriptable ="false" \
        host ="172.16.41.27" \
        port ="21" \
        userName ="cc" \
        password ="cc" \
        acceptAllFileFilterUsed ="true" \
        isDirectorySelectionEnabled ="true" \
        isFileSelectionEnabled ="true" \
        fileNameExtension ="" \
        isFileHidingEnabled ="false" \
        isMultiSelectionEnabled ="true" \
        maxFileSize ="2147483648"
        scriptable = false
        pluginspage = "http://java.sun.com/products/plugin/index.html#download">
        <noembed>
            </xmp>
        </noembed>
        </embed>
    </comment>
</object>
<script type="text/javascript">
   var DownLoad= function(){};
   function showWindowIn(){
       try{

  //IE里用object的name   firefox里用embed  id    //调用的方法都是applet里的public方法  

var app =document.getElementById('uploadAppletApp');

        if(app==null||typeof app =='undefined'){
            window.document.ShowTaskApplet.showTaskFrame();
        }else{
            app.showTaskFrame();
        }
       }catch(e){
           alert(e);
       }
   }
   function  showMsg(s){
       alert("您输入的是:"+s);
   }
</script>
  
</BODY>
  
</HTML>

===============================================================================================

以上代码不能直接运行,只是将各个关键步骤写下来,自己修改即可

===============================================================================================

附: js调用applet方法有些限制,js调用applet方法时applet的认证会失效,相当于没有认证。

见文章:http://docs.oracle.com/javase/tutorial/deployment/applet/security.html

转载地址:http://zjyxi.baihongyu.com/

你可能感兴趣的文章
make -n(仅列出命令, 但不会执行)用于调试makefile
查看>>
makefile中“-“符号的使用
查看>>
go语言如何从终端逐行读取数据?------用bufio包
查看>>
go的值类型和引用类型------重要的概念
查看>>
求二叉树中结点的最大值(所有结点的值都是正整数)
查看>>
用go的flag包来解析命令行参数
查看>>
来玩下go的http get
查看>>
队列和栈的本质区别
查看>>
matlab中inline的用法
查看>>
如何用matlab求函数的最值?
查看>>
Git从入门到放弃
查看>>
java8采用stream对集合的常用操作
查看>>
EasySwift/YXJOnePixelLine 极其方便的画出真正的一个像素的线
查看>>
Ubuntu Linux系统下apt-get命令详解
查看>>
ubuntu 16.04 下重置 MySQL 5.7 的密码(忘记密码)
查看>>
Ubuntu Navicat for MySQL安装以及破解方案
查看>>
HTTPS那些事 用java实现HTTPS工作原理
查看>>
oracle函数trunc的使用
查看>>
MySQL 存储过程或者函数中传参数实现where id in(1,2,3,...)IN条件拼接
查看>>
java反编译
查看>>