<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 59, comments - 244, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    瀏覽器客戶端js中調用java代碼

    Posted on 2011-03-09 01:15 penngo 閱讀(5801) 評論(1)  編輯  收藏 所屬分類: Java
    上一篇是直接在客戶端調用服務器端的方法,不過其實可以直接在客戶端調用java代碼。以前寫過一篇用javascript編寫swing程序,不過這種方式是需要java的腳本引擎。在瀏覽器中也可以使用js來調用java,不過需要借助applet,applet可以直接調用js代碼,js也可以直接調用applet代碼,只要在applet中實現(xiàn)一個例實例化的接口或直接把實例化后的類返回給js,這樣在js中就可以調用java代碼。下面開始測試代碼。
    ScriptEngine.java
    import javax.swing.JApplet;
    import javax.swing.JOptionPane;
    public class ScriptEngine extends JApplet{
        
    public void init() {
            
        }
        
    public Object classInstance(String name){
            
    try{
                Class cls 
    = Class.forName(name);
                Object obj 
    = cls.newInstance();
                
    return obj;
            }
            
    catch(Exception e){
                e.printStackTrace();
                
    return null;
            }
            
        }
        
    public void showMessage(String ale){
            JOptionPane.showMessageDialog(
    null, ale);
        }
        
    public void destroy(){
            
        }
    }

    測試被調用的代碼
    MD5.java
    import java.security.MessageDigest;
    public class MD5 {
        
    public final static String Md5(String s) {
            
    char hexDigits[] = { '0''1''2''3''4''5''6''7''8''9',
                    
    'a''b''c''d''e''f' };
            
    try {
                
    byte[] strTemp = s.getBytes();
                MessageDigest mdTemp 
    = MessageDigest.getInstance("MD5");
                mdTemp.update(strTemp);
                
    byte[] md = mdTemp.digest();
                
    int j = md.length;
                
    char str[] = new char[j * 2];
                
    int k = 0;
                
    for (int i = 0; i < j; i++) {
                    
    byte byte0 = md[i];
                    str[k
    ++= hexDigits[byte0 >>> 4 & 0xf];
                    str[k
    ++= hexDigits[byte0 & 0xf];
                }
                
    return new String(str);
            } 
    catch (Exception e) {
                
    return null;
            }
        }
    }

    測試頁面
    test.jsp
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <APPLET id="engine" CODE = "com.agent.util.ScriptEngine" JAVA_CODEBASE = "./" ARCHIVE = "Engine.jar"  WIDTH = "0" HEIGHT = "0">
    </APPLET>
    <script type="text/javascript">
    //直接調用MD5加密類
    function md5(){
        var md5 
    = engine.classInstance("com.agent.util.MD5");
        alert(md5.Md5(
    "這是MD5測試!"));
    }
    //直接調用Applet方法
    function AppletMessage(){
        engine.showMessage(
    "這是測試數據,AppletMessage!");
    }
    //直接調用swing組件
    function initJOptionPane(){
        var file 
    = engine.classInstance("javax.swing.JOptionPane");
        file.showMessageDialog(
    null"這是直接在js中調用java代碼方法!""測試確認窗口",2);
    }
    </script>
    <input type="button" onclick="md5();" value="MD5加密">
    <input type="button" onclick="AppletMessage();" value="AppletMessage">
    <input type="button" onclick="initJOptionPane();" value="JOptionPane">
    </body>
    </html>

    運行效果:


    使用這方法,可以非常方便的調用java類,我們可以把一些js不方便操作的東西,直接放在applet里面給客戶端調用.但如果調用一些涉及系統(tǒng)安全的功能,jar需要簽名才有足夠權限。
    不過這方法最大的不足是需要客戶端jre的支持,使用范圍有限制,只適合一些企業(yè)內部使用的系統(tǒng)。


    評論

    # re: 瀏覽器客戶端js中調用java代碼  回復  更多評論   

    2011-03-09 11:32 by HiMagic!
    applet幾乎絕跡了
    主站蜘蛛池模板: 亚洲综合小说久久另类区| 亚洲色偷偷偷鲁综合| 亚洲综合一区二区国产精品| 99精品视频免费| 亚洲人成亚洲人成在线观看 | 亚洲精品无码不卡在线播放HE | 久久久精品午夜免费不卡| 国产精品亚洲精品日韩电影| 一个人看的hd免费视频| 全免费毛片在线播放| 中文字幕亚洲一区二区va在线| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 亚洲精品蜜桃久久久久久| 中文字幕一区二区三区免费视频| 亚洲国产精品无码成人片久久| 一级毛片不卡片免费观看| 日本亚洲精品色婷婷在线影院| 九一在线完整视频免费观看| 国产亚洲精品精品国产亚洲综合| 你懂的免费在线观看| 亚洲经典在线观看| 大陆一级毛片免费视频观看| 欧洲美女大片免费播放器视频| 亚洲AV综合色区无码一区| 激情无码亚洲一区二区三区 | 国产v亚洲v天堂a无| 日本高清免费网站| 亚洲国产成人精品久久| 国产精品免费在线播放| 国产乱子影视频上线免费观看| 亚洲人成无码网站| 一个人免费日韩不卡视频| 亚洲国产视频久久| 久久国产免费福利永久| 亚洲乱亚洲乱妇无码| 久久亚洲精品无码播放| 1000部免费啪啪十八未年禁止观看 | 久久精品视频免费| 亚洲另类无码一区二区三区| 日韩精品亚洲aⅴ在线影院| 青草草色A免费观看在线|