<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 閱讀(5810) 評論(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幾乎絕跡了
    主站蜘蛛池模板: 日韩在线播放全免费| 亚洲国产精品无码久久九九大片 | 国产乱妇高清无乱码免费| 亚洲区日韩区无码区| 亚洲精品国产首次亮相| 成年美女黄网站色大免费视频| 日韩一区二区a片免费观看| 亚洲国产日产无码精品| 色噜噜的亚洲男人的天堂| 暖暖免费高清日本一区二区三区| 国产亚洲精aa成人网站| 久久亚洲私人国产精品vA | 最好看的中文字幕2019免费| 亚洲黄色网址在线观看| 国产在线观看麻豆91精品免费| 亚洲国产精品线观看不卡| 国产无遮挡色视频免费观看性色| 中文字幕亚洲不卡在线亚瑟| 国产无限免费观看黄网站| 久久亚洲私人国产精品| 一个人免费观看www视频在线| 亚洲av无码专区在线观看下载| 亚洲AV无码之日韩精品| 97无码人妻福利免费公开在线视频 | 中文在线免费视频| 成人免费毛片视频| 青青青视频免费观看| 亚洲国产精品一区第二页| 国产在线jyzzjyzz免费麻豆| 色偷偷噜噜噜亚洲男人| 亚洲乱码日产一区三区| 2019中文字幕在线电影免费| 蜜芽亚洲av无码一区二区三区 | 亚洲国产精品嫩草影院久久| 久久精品免费一区二区三区| 亚洲第一区精品日韩在线播放| 97在线免费观看视频| 国产成人精品亚洲日本在线| 亚洲成?Ⅴ人在线观看无码| 久操免费在线观看| 亚洲中文字幕无码专区|