<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    瀏覽器客戶端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中實現一個例實例化的接口或直接把實例化后的類返回給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里面給客戶端調用.但如果調用一些涉及系統安全的功能,jar需要簽名才有足夠權限。
    不過這方法最大的不足是需要客戶端jre的支持,使用范圍有限制,只適合一些企業內部使用的系統。


    評論

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

    2011-03-09 11:32 by HiMagic!
    applet幾乎絕跡了
    主站蜘蛛池模板: 四虎影视久久久免费观看| 在线精品一卡乱码免费| 亚洲视频免费播放| 免费无码又爽又高潮视频| 永久免费观看黄网站| 久久亚洲日韩看片无码| 免费精品人在线二线三线区别| 粉色视频成年免费人15次| 久久91亚洲人成电影网站| 搡女人真爽免费视频大全| 精品免费久久久久国产一区 | 一级毛片a免费播放王色| 亚洲色图国产精品| 国产亚洲福利一区二区免费看| 国产精品免费观看调教网| 最新亚洲人成网站在线观看 | 国产乱妇高清无乱码免费| 91亚洲自偷在线观看国产馆| 久久精品国产精品亚洲艾草网美妙| 中文字幕乱码免费视频| 国产免费久久精品丫丫| 亚洲中文字幕无码中文| 国产亚洲一区二区三区在线观看| 日韩免费无砖专区2020狼| 19禁啪啪无遮挡免费网站| 特级毛片爽www免费版| 自拍日韩亚洲一区在线| 亚洲成AV人在线观看天堂无码| 日韩特黄特色大片免费视频| 99久9在线|免费| a级毛片免费全部播放| 老妇激情毛片免费| 亚洲va久久久久| 亚洲成a人片77777群色| 亚洲AV无码第一区二区三区| 亚洲男人的天堂一区二区| 日韩精品视频免费网址| 日韩欧毛片免费视频| 久久午夜夜伦鲁鲁片无码免费| 久久久精品国产亚洲成人满18免费网站| 亚洲欧美日韩国产精品一区|