成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

基于Java Applet繪制拓撲圖總結

開發 后端
本文向您介紹使用Java Applet繪制拓撲圖的方法,包括Java Applet的部署、鏈接數據庫等基本操作。

使用Java Applet技術開發小應用程序,并最終將其部署到網頁上,使其能夠實現從數據庫中讀取節點、鏈路數據,并根據數據繪制拓撲圖的功能。繪制圖像的過程應用jgraph開源軟件實現。
 
技術要點:

1、在頁面上部署Java Applet應用程序,并調用jgraph.jar包

  1. <applet archive="AppletDemo.jar,jgraph.jar" code="org/nlsde/draw/applet/AppletDemo.class" 
    codebase="./" width="660" height="560">applet>   

在此將網頁文件和AppletDemo.jar放在同一個目錄下,由于需要引用第三方的jgraph.jar包,因此在archive屬性中一并寫上jgraph.jar

2、Java Applet應用程序訪問數據庫

由于Java Applet應用程序本身的策略限制,在默認情況下應用程序只能以http協議訪問運行此Java Applet應用程序的主機;而修改策略,需要加入數字簽名,并且瀏覽器會提示安全問題。因此在本次開發中,使用Java Applet訪問Servlet的流行方法來解決讀取數據庫的問題。

Java Applet應用程序和Servlet進行交互,可以直接在兩者間傳遞支持序列化的對象(Serializable)。在Servlet端,只需要響應doGet事件,并將處理結果以ObjectStream的形式返回即可:

  1. DefaultGraphCell[] alCells = org.nlsde.draw.data.CellHandler.getAllCells();  
  2. ObjectOutputStream out = new ObjectOutputStream(response  
  3.                   .getOutputStream());  
  4. out.writeObject(alCells);  

在Java Applet端,發起數據請求和接受結果如下:

  1. URL url = new URL(getCodeBase() + "/servlet/GetAllCells");  
  2.         URLConnection urlConn = url.openConnection();  
  3.         InputStream in = urlConn.getInputStream();  
  4.         ObjectInputStream result = new ObjectInputStream(in);  
  5.         Object obj = result.readObject();  
  6.  
  7.         DefaultGraphCell[] alCell = (DefaultGraphCell[]) obj;   

和數據庫交互的部分,被封裝到另外的類CellHandler中。)

3、利用jgraph繪制拓撲圖的過程

在jgraph中,存在頂點(vertice)、連線(edge)、端口(port)的概念,他們的關系如下:

頂點、連線、端口都被認為是GraphCell,只不過連線和端口有自己獨特的屬性。

利用jgraph繪圖的流程如下:

創建頂點集合,并指定各個頂點的屬性

  1. DefaultGraphCell c = new DefaultGraphCell(rs.getString("MAIN_IP"));  
  2. //創建頂點對象,并指定Label顯示文字  
  3. GraphConstants.setAutoSize(c.getAttributes(), true);  
  4. //設定頂點大小為自動縮放  
  5. DefaultPort p = new DefaultPort();  
  6.              c.add(p);  
  7. //為頂點添加一個端口,用以連接連線 

如果需要為頂點加入用戶自定義的屬性,可以利用jgraph提供的AttributeMap創建屬性鍵值對,***附加到頂點上:

  1. AttributeMap m = new AttributeMap();  
  2. m.applyValue("MAIN IP", rs.getString("MAIN_IP"));  
  3. c.getAttributes().applyMap(m);   

接著創建連線,并根據規則指定連線的起點和終點:

  1. DefaultEdge e = new DefaultEdge();  
  2. AttributeMap m = new AttributeMap();  
  3. m.applyValue("OBJECT_INSTANCE",rs.getString("OBJECT_INSTANCE"));  
  4. m.applyValue("SOURCE1_INSTANCE",rs.getString("SOURCE1_INSTANCE"));  
  5. m.applyValue("SOURCE2_INSTANCE",rs.getString("SOURCE2_INSTANCE"));  
  6. m.applyValue("TYPE","LINK");  
  7.  
  8. e.getAttributes().applyMap(m);   

在指定連接的起點和終點時,采用比對SOURCE1_INSTANCE和SOURCE2_INSTANCE是否和頂點中的OBJECT_INSTANCE匹配的方法,若匹配,則被比較頂點是當前連線的起點或終點:

  1. for (int i = 0; i < alLink.length; i++) {  
  2.      for (int j = 0; j < alCell.length; j++) {  
  3.           if (alCell[j].getAttributes().get("OBJECT_INSTANCE")  
  4.                  .toString().equalsIgnoreCase(  
  5.                   alLink[i].getAttributes().get(  
  6.                    "SOURCE1_INSTANCE").toString())) {  
  7.               alLink[i].setSource(alCell[j].getChildAt(0));  
  8.                                  }  
  9.           if (alCell[j].getAttributes().get("OBJECT_INSTANCE")  
  10.                   .toString().equalsIgnoreCase(  
  11.                  alLink[i].getAttributes().get(  
  12.               "SOURCE2_INSTANCE").toString())) {  
  13.       alLink[i].setTarget(alCell[j].getChildAt(0));  
  14.                                  }  
  15.                           }  
  16.                    }   

設置起點或終點需要調用setSource()或setTarget()方法,需要注意的是此方法的參數是頂點的端口,而非頂點本身,因此參數形式是GraphCell.getChildAt(0)。由于本次開發中只為頂點創建了一個端口,因此只有getChildAt(0)有效。

4、為頂點指定圖標

要為頂點指定圖標,首先要在Java Applet應用程序中成功加載圖標文件。Java Applet僅支持gif/png/jpg格式的圖片文件,其他格式的一概設置ImageIcon對象Image Load Status=4的錯誤,表示Load出錯,但是不會提示具體錯誤。

在Java Applet中調用其他文件,應該將此文件一并封裝在Java Applet應用程序包中,并且遵循Java規范創建標準包的名稱。在此次開發中,Java Applet應用程序本身的包名為org.nlsde.draw.applet,所需要調用的圖片文件的包名為org.nlsde.draw.applet.ico。在調用圖片文件時,只需要使用getCodeBase()方法即可獲得Java Applet應用程序本身的路徑,再加上ico即可找到圖片文件:

  1. URL u = AppletDemo.class.getResource("ico/" 
  2.        + alCell[i].getAttributes().get("OBJECT_ICON")  
  3.                 .toString() + ".jpg");  
  4.    ImageIcon icon = new ImageIcon(u);  
  5.  
  6.    GraphConstants.setIcon(alCell[i].getAttributes(), icon);   

獲取圖片的ImageIcon對象后,使用jgraph內置的方法可以很容易的為頂點設置圖標。
 
5、定義數據庫連接

本次開發中數據庫連接被封裝在DBHandler類中。另外使用SystemConfig.xml文件來存儲連接數據庫的信息。在DBHandler類訪問SystemConfig.xml文件時,為SystemConfig.xml文件指定了URL路徑而非本地路徑:

private static final String _configFile = "http://192.168.15.230:8080/draw/SystemConfig.xml";

這是因為Java Web App在運行時,默認起始路徑是$TOMCAT_HOME/bin,而非Web App本身的根目錄,調用比較麻煩。

在SystemConfig.xml文件中,存儲的數據庫連接信息包括Java – Oracle連接字符串:

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.101.32)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.101.34)(PORT=1521))(LOAD_BALANCE=yes)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=nmstest)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=180)(DELAY=5))))

這是因為在Oracle端配置了負載平衡,而網站所在服務器不安裝Oracle 10g的客戶端,無法使用服務名解析數據庫連接字符串,因此直接將服務名為nmstest的連接字符串寫在這里。

 

【編輯推薦】

  1. Java Applet編程小技巧之文字顯示
  2. Java Applet編程顯示圖像
  3. 利用Java Applet編程實現動畫特技
  4. Java程序員考試中需要注意的幾點
  5. Java基礎教程之事件和監聽器
責任編輯:佚名 來源: JavaEye
相關推薦

2021-02-01 09:13:34

Zabbix5.2拓撲圖運維

2019-07-03 10:16:11

網絡監控拓撲圖

2019-09-05 11:14:12

監控系統拓撲圖

2009-03-02 16:22:18

網絡拓撲網絡管理摩卡軟件

2016-09-29 09:33:06

Html5站點地圖拓撲圖

2017-07-04 16:18:15

分布式云應用導圖

2011-07-04 16:04:20

Applet

2010-09-17 10:16:26

Java Applet

2009-06-11 08:59:35

2019-10-25 16:50:51

網絡安全網絡安全技術周刊

2009-02-10 15:38:50

網絡拓撲網絡管理摩卡

2009-07-09 10:05:55

2010-09-17 10:41:45

Java Applet

2009-07-07 17:23:08

Java Servle

2010-06-09 08:59:30

UML活動圖

2012-01-17 13:53:16

JavaSwing

2023-08-23 19:21:38

流程圖時序圖UML

2010-06-08 10:35:38

UML圖

2010-06-08 10:51:48

UML活動圖
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线超碰 | 亚洲精品一区二区三区蜜桃久 | 国产激情视频在线 | 99精品久久久久久 | 久草网免费 | 天天色av| 亚洲欧美在线视频 | 中文无吗 | 国产精品178页 | 亚洲一区二区三区四区视频 | 一区精品国产欧美在线 | 欧美一区二区三区在线观看视频 | 九九久久99 | 亚洲三级免费看 | 天天操网 | 亚洲综合视频一区 | 亚洲成人一二区 | 欧美日韩黄色一级片 | 日日摸夜夜爽人人添av | 亚洲国产一区二区三区 | 五月香婷婷| 一级全黄少妇性色生活免费看 | 一级黄色大片 | 黄色片大全在线观看 | 欧美精品一区二区三区蜜臀 | 全免费a级毛片免费看视频免费下 | 91文字幕巨乱亚洲香蕉 | 久久久噜噜噜久久中文字幕色伊伊 | 欧美一级二级视频 | 美女一级毛片 | 欧美激情五月 | 三级高清 | 国产高清免费视频 | 亚洲一区精品在线 | 亚洲午夜小视频 | 性一爱一乱一交一视频 | 国产综合精品一区二区三区 | 免费观看日韩精品 | 国产精品久久久久一区二区三区 | 婷婷在线免费 | 欧美精品日韩 |