談一談applet踩過的坑

來源:互聯網
上載者:User

標籤:複製   www   使用方法   路徑   簡單   out   onclick   height   oid   

 

看完我這篇文章,你會簡單使用applet,你可以使用web項目讀取運行使用者電腦上的dll或者其他任何你想乾的事。js與直接調用applet類裡面的方法,並擷取傳回值。

不談項目背景了。直接乾貨幹起來。

但還是得談下這個技術不是麼。

先看看百度是怎麼說的:我就是applet

然後我自己用到的就是,在網頁中鑲嵌這麼個東西,然後再隨便調用下客戶機的本地dll,讀取下日誌啥的。

然後就是問題不斷啦。什嗎?你一個網站還要讀取我本地dll。想啥呢?我隱私是你隨便搞的?

尼瑪然後基本上瀏覽器都不支援這個東東了。還是得拿出我微軟大佬的ie啊。

準備工作:你是個javer ,你會寫java程式。Myeclipse工具。

下面開始吹牛之旅~~~~~~

1.開啟Myeclipse建立個web項目(此處圖省略...... 我是不是還得教下如何建項目??哈哈哈哈)

2.建立個這個叫applet的東西!!!!(這下面應該有圖!!!!!!)

 

 

然後可能你就看到了這個東西~~~產生了一個java檔案跟下面那個很長的html檔案!!!!

2.下面我們該寫一下這個類的內容了了了吧!!!!(直接複製!!!對的複製我下面這個方法!)

1 public void paint(Graphics g)  {  2      super.paint(g);  3      g.drawRect(0, 0, 499, 149);  4      g.drawString("我是你的第一個applet程式啊!QAQ", 5, 70);5 }  

其實不想解釋這個東西是啥意思,嗯那就不解釋這個是啥意思。等會我們看看效果就好了啊。(就是這麼任性,該導包的導導包!!!!!)

3.下面我們搞下頁面,讓我們寫的東西能在網頁上看到啊。上面產生的html檔案直接刪掉!!我就不用html。我最牛,牛歸牛,但是還是開啟那個index.jsp吧。

<applet id="applet" alt="當前瀏覽器不支援Applet" width="400" height="200" code="com.jd.applet.jdapplet.class" codebase="<%=basePath%>applet/" ></applet>  

上面這段代碼放到你的body中。

code:是你的開機檔案包全路徑

codebase:是你的檔案跟路徑。

在WebRoot根目錄建檔案夾啊,然後把編譯好的class檔案放進去,至於如何編譯成class我就不教你,你打我啊。

我們看下結構圖

好了。基礎工作完成。我們要搞事情了!!!!!

首先向訪問到這個頁面,會要求你安裝jre。當然我們開發的一般都是配置好了的。但是也會提示一些雜七雜八的。

先開啟ie!!!!記住是IE!!!360啥的都切換成IE核心

然後開始解決各種許可權問題

問題一:

這個問題呢我們開啟控制台-程式-java然後看到:

把你的地址添加例外進去然後我們再開啟網站你就大概,或許,可能,運氣不錯看到:

 

 

 

 這時動動你的小手,點擊運行!!!!!!就看到。。噹噹噹噹

恭喜你,你的applet已成功在瀏覽器運行啦。

下面重頭戲來了!!!運行使用者電腦上的dll!!!!!!!直接開始!!!!!!!

使用jna調用第三方的dll。(我就是第三方!!!哈哈哈,java調用dll有點煩,但是不怕,有人給我們造了輪子,那我們就用呀呀呀)

那麼就先編寫個c++的dll唄:

我用的vs2012編寫的dll(跟著我左手右手一個慢動作,動起來。)

 

 

然後下一步下一選擇[email protected]@

 

然後完成。在標頭檔檔案夾,源檔案檔案夾各自建兩個檔案名稱字隨意我這邊叫mymath.h跟mymath.cpp

 

 

 mymath.h標頭檔寫以下內容

 1 #pragma once   2    3 #ifdef MATH_EXPORTS   4 #define MATH_API __declspec(dllexport)   5 #else   6 #define MATH_API __declspec(dllimport)   7 #endif   8    9 namespace Mydll10 {  11     extern "C" MATH_API int getMax(int a,int b);    //函數  12 }  

 

 mymath.cpp標頭檔寫以下內容

 

 1 #include "stdafx.h"   2 #include "mymath.h"   3    4 namespace Mydll   5 {   6     int getMax(int a, int b) //函數   7     {   8         return a > b ? a : b;   9     }  10     11 }  

 

 然後產生,再去這個項目的目錄下找到debug目錄找到你的dll!

這樣我們的dll就弄好了。複製到你想要的位置。我這邊就放到C盤根目錄

下面開始測試jna(不得不吐槽,網上全尼瑪抄一模一樣的,不是這樣你打我!!!!!!!我就要寫個不是系統內建的dll!!!!!!不吹了。我們開始。)

先把jna包導進你的項目。然後抄代碼啊!!哈哈哈哈,把以下代碼抄進你的applet那個類!!!

1  public interface Mydll extends Library {  2     Mydll Instance = (Mydll) Native.loadLibrary("C:\\Mydll.dll",Mydll.class);  3     int getMax(int a,int b); //這個是你c++dll中定義的方法 4   } 

然後寫個main方法測試測試!!!看看能不能出結果。

1 public static void main(String[] args) {2     int a = Mydll.Instance.getMax(2,50);3     System.out.println(a);4 }

我寫的這個方法是比較大小的,輸出的50.

所以我這個調用dll並使用方法完全是oj8k的。

好了,下面我們開始打個jar包。把我們的方法打個jar包

http://www.cnblogs.com/kxdblog/p/4383438.html

直接用myeclipse打jar包參考上面這個地址,不想再打字了。

然後準備工作都做好了。

然後這個dll是放在客戶那的,我們web想訪問,通過applet不是不可能,但是它需要個許可權啊!!!!不能你是個applet就能搞吧,那我電腦上200G小電影不就都被你偷走了。

然後我們就需要簽名我們剛剛弄好的jar包。

http://www.cnblogs.com/tqsummer/archive/2011/01/19/1939013.html

這個地址完美簽名的!!!!!!!!!!你們繼續照著操作。

我們簽名拿到了檔案之後。就可以嘿嘿嘿了

看項目結構。

把一開始簡曆的結構都刪掉,直接複製這幾個檔案去applet下。

然後再改下index.jsp的內容。

1  <applet id="applet" alt="當前瀏覽器不支援Applet" width="400" height="200" code="com.jd.applet.jdapplet.class" codebase="<%=basePath%>applet/" archive="applet_fat.jar"></applet>  

 我們加個屬性:archive 寫你的打包好的jar名就oj8k了。

我們再次訪問下項目看看報不報錯!!!!!。

換提示了??沒關係,接受並運行。呀,還是我們的小可愛。

下面就是展示技術的時候了,applet與js直接通訊。!!!!!!上代碼!!!!先添加個按鈕。

1 <button type="button" onclick="test()">我要與dll互動!!!</button>

然後是js

1  <script type="text/javascript">2       function test(){3         var applet = document.getElementById("applet");4         var a=applet.getmax();//這個是我們java中編寫的方法。5         alert(a);//彈出結果6       }7   </script>

 

 

我們再次訪問下項目。

 

 

 

 成功與dll互動並拿到結果。至此,恭喜你完成了。

 

談一談applet踩過的坑

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.