<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 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    瀏覽器客戶端js中調(diào)用java代碼

    Posted on 2011-03-09 01:15 penngo 閱讀(5810) 評(píng)論(1)  編輯  收藏 所屬分類: Java
    上一篇是直接在客戶端調(diào)用服務(wù)器端的方法,不過(guò)其實(shí)可以直接在客戶端調(diào)用java代碼。以前寫過(guò)一篇用javascript編寫swing程序,不過(guò)這種方式是需要java的腳本引擎。在瀏覽器中也可以使用js來(lái)調(diào)用java,不過(guò)需要借助applet,applet可以直接調(diào)用js代碼,js也可以直接調(diào)用applet代碼,只要在applet中實(shí)現(xiàn)一個(gè)例實(shí)例化的接口或直接把實(shí)例化后的類返回給js,這樣在js中就可以調(diào)用java代碼。下面開(kāi)始測(cè)試代碼。
    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(){
            
        }
    }

    測(cè)試被調(diào)用的代碼
    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;
            }
        }
    }

    測(cè)試頁(yè)面
    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">
    //直接調(diào)用MD5加密類
    function md5(){
        var md5 
    = engine.classInstance("com.agent.util.MD5");
        alert(md5.Md5(
    "這是MD5測(cè)試!"));
    }
    //直接調(diào)用Applet方法
    function AppletMessage(){
        engine.showMessage(
    "這是測(cè)試數(shù)據(jù),AppletMessage!");
    }
    //直接調(diào)用swing組件
    function initJOptionPane(){
        var file 
    = engine.classInstance("javax.swing.JOptionPane");
        file.showMessageDialog(
    null"這是直接在js中調(diào)用java代碼方法!""測(cè)試確認(rèn)窗口",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>

    運(yùn)行效果:


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


    評(píng)論

    # re: 瀏覽器客戶端js中調(diào)用java代碼  回復(fù)  更多評(píng)論   

    2011-03-09 11:32 by HiMagic!
    applet幾乎絕跡了
    主站蜘蛛池模板: 久久久久亚洲精品男人的天堂| 免费视频中文字幕| 亚洲精品无码久久一线| 国产成人1024精品免费| 国产黄色一级毛片亚洲黄片大全| 爱爱帝国亚洲一区二区三区| 日韩高清在线免费看| 国产午夜亚洲精品不卡| avtt亚洲天堂| 99re6在线视频精品免费| 亚洲AV永久无码精品一百度影院| 日韩视频在线观看免费| 亚洲精品国产专区91在线| 大学生一级毛片免费看| 亚洲欧美乱色情图片| 亚洲高清免费视频| 免费无码H肉动漫在线观看麻豆| 亚洲国产高清在线| 97免费人妻无码视频| 亚洲AV女人18毛片水真多| 亚洲无码黄色网址| 久久久久久夜精品精品免费啦| 亚洲国产午夜精品理论片 | 亚洲乱码无人区卡1卡2卡3| 好爽好紧好大的免费视频国产| 亚洲免费视频一区二区三区| 亚洲国产成人一区二区精品区 | 亚洲av日韩综合一区久热| 亚洲国产成人精品女人久久久| 中文字幕免费在线看电影大全| 亚洲的天堂av无码| 国产成人无码免费视频97 | 6080午夜一级毛片免费看| 亚洲色偷精品一区二区三区 | 精品亚洲成a人片在线观看| 性一交一乱一视频免费看| 色费女人18女人毛片免费视频| 亚洲精品无码MV在线观看| 99在线视频免费观看视频| 四虎永久在线精品免费一区二区 | 99精品视频免费在线观看|