亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

可簡化生成JScript過程的自定義標簽庫

2019-11-18 13:17:24
字體:
來源:轉載
供稿:網友

  菜單是軟件應用的重要組件。實現靜態菜單相對來說比較簡單――僅需一次性的自定義分類和功能即可。對于一個動態菜單,由于每個用戶的資料和參數都不盡相同,實現起來既具有挑戰性,又顯得十分棘手。
  java程序語言內置了創建基本菜單的架構,而jsp缺少此項支持。Web應用必須使用Java applets或javascript來實現菜單結構。許多web應用開發人員偏愛于Javascript(它比applets更易開發)。本文將講述一個可簡化生成動態javascript過程的自定義標簽庫,包括標簽庫的設計和實現等內容。
  
  設計方案
  我們的設計目標是一個可以實現等級分類的對象模型,包括產生javascript的方法。
  在實現等級分類的菜單系統中,每個菜單都包括一個或多個菜單項或子菜單,子菜單又可以展開包括菜單項和子菜單。菜單提供了實現程序具體功能的入口。不管菜單是何種類型,菜單對象都應該可以產生適當的javascript。
  在基于復合物的設計模式上,simple menu在葉層次上實現了菜單,composite menu在菜單架構上實現了子菜單組和simple menu。換句話說:Composite可以包含SimpleMenu對象和其他CompositeMenu對象的列表。Menu抽象類聲明了menu,定義了render方法供子類提供各自的實現。
  
  下圖描述了此復合物的設計模式:
  
可簡化生成JScript過程的自定義標簽庫

  
菜單類的UML圖

  SimpleMenu實現了帶有指向各自應用功能URL菜單項。CompositeMenu通過循環訪問子菜單列表重寫了render方法,分別調用各個的render方法。記住,列表可能既有菜單項,又有子菜單,所以菜單可能有多層。
  下面的列表顯示了CompositeMenu和SimpleMenu的render方法。這兩個方法都產生了javascript,調用dynamicmenu.js存在的方法。這個文件的方法負責在瀏覽器種生成菜單。這些功能的設計與實現不在本文探討的范圍之內。
  
  SimpleMenu的render方法
  StringBuffer sb = new StringBuffer();
  sb.append("addmenuitem(");
  sb.append("/"" + getLevelCoord() + "/",");
  sb.append("/"" + getMenuName() + "/",");
  sb.append("/"" + getUrl() + "/",");
  sb.append("/"black/",/"FAEBD7/",/"white/", /"3366CC/",/"white/",
  /"3366CC/",/"font-family:Tahoma, Verdana, Arial;
  font-size:12px;font-weight:normal,text-decoration:none;padding: 4px/");");
  sb.append("/n");
  return sb.toString();
  
  CompositeMenu的render方法
  
  StringBuffer sb = new StringBuffer();
  sb.append("addmenuitem(");
  sb.append("/"" + getLevelCoord() + "/",");
  sb.append("/"" + getMenuName() + "/",");
  if (null == getUrl())
  sb.append("null" + ",");
  else
  sb.append("/"" + getUrl() + "/",");
  sb.append("/"black/",/"FAEBD7/",/"white/",/"3366CC/",/"white/",/"3366CC/",
    /"font-family:Tahoma, Verdana, Arial; font-size:12px;
    font-weight:normal,text-decoration:none;padding: 4px/");");
  
  sb.append("/n");
  Iterator it = list.iterator();
  int i=1;
  while(it.hasNext())
  {
  Menu menu = (Menu)it.next();
  menu.setLevelCoord(getLevelCoord() + "," + i);
  sb.append(menu.render());
  i++;
  }
  return sb.toString();
  
  菜單數據源
  菜單創建者(menu builder)負責根據數據源創建菜單。菜單數據根據種類分級。它可以來自任何可支持表單等級數據的源。我們實現了創建者,分別使用兩種通用的數據源:xml數據庫。當然,你也可以很方便的根據此設計方法開發出其他的創建者。
  
  XMLMenuBuilder
  既然菜單結構和XML結構都由等級屬性,XML可方便的表達菜單數據。XMLMenuBuilder接受包含菜單定義的XML文件,解析XML文檔來創建動態菜單。XML文檔的<menu>元素可以看作是菜單項或子菜單,子菜單又可以展開包括菜單項或子菜單。
  
  JDBCMenuBuilder
  既然數據庫表格可以表示相關聯的數據,表也可以用來表達等級數據。HIERARCHYMENU表表示等級化的菜單數據。JDBCMenuBuilder接受從數據庫的信息,按照次序從HIERARCHYMENU表中選擇菜單數據。
  
  菜單標簽庫
  菜單標簽庫治理創建javascript菜單的復雜過程。菜單標簽自身是一個繼續TagSupport類的抽象類,并重寫了doStartTag和doEndTag方法。getMenu方法是一個抽象方法應該被子類重寫用來提供javascript,它可以增加在doStartTag方法中創建的菜單結構的菜單項。菜單標簽的子類重寫了getMenu方法,使用了可從數據源提取菜單數據的菜單創建者。
  其中動態菜單標簽庫包含兩個標簽:JDBCMenuTag和XMLMenuTag。JDBCMenuTag使用JDBCBuilder根據數據庫中的數據創建菜單結構,而XMLMenuTag使用XMLBuilder根據XML數據源創建菜單結構。文檔提供了具體的使用標簽庫的說明。
  這個版本的標簽庫也包含一些局限性。它沒有使用戶角色和菜單發生相關聯,每個應用對此都不盡相同。標簽庫也沒有提供對菜單項特定顏色和字體的支持。
  菜單標簽庫應用例子
  Menu-example.war文件包含了使用標簽庫的JSP頁面。在Tomcat下以一下步驟部署應用:
  (1)拷貝menu-example.war到tomcat安裝文件夾/webapps.
  (2)重啟Tomcat來展開應用。
  (3)根據環境調整xmlmenu.jsp和jdbcmenu.jsp
  (4)創建一個新的數據庫表結構,導入menu.sql文件中的數據。
  (5)訪問根據XML創建的菜單,訪問localhost:8080/menu-example/xmlmenu.jsp.
  (6)訪問根據JDBC創建大額菜單,訪問localhost:8080/menu-example/jdbcmenu.jsp.
  
  結論
  動態菜單標簽庫治理由javascript創建菜單的復雜過程,并答應web應用通過數據庫或xml源創建動態等級菜單。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久国产精品999| 日韩视频欧美视频| 日韩亚洲第一页| 日韩在线中文视频| 欧美电影免费观看高清完整| 欧美性色视频在线| 亚洲综合日韩中文字幕v在线| 最新69国产成人精品视频免费| 国产一区二区三区在线| 亚洲欧美日韩成人| 欧美国产日韩一区二区| 成人欧美在线视频| 国产精品露脸自拍| 精品丝袜一区二区三区| 欧美—级a级欧美特级ar全黄| 在线观看视频99| 午夜精品理论片| 欧美日韩第一页| 亚洲日本欧美中文幕| 这里只有精品视频在线| 欧美成人精品一区| 亚洲老头老太hd| 97视频在线观看视频免费视频| 久久久999精品免费| 亚洲男人7777| 亚洲成人a级网| 亚洲精品国产精品乱码不99按摩| 狠狠干狠狠久久| 色偷偷91综合久久噜噜| 久久成年人视频| 国产精品九九九| 国产精品一区二区久久久久| 亚洲欧洲午夜一线一品| 国产精品扒开腿做爽爽爽的视频| 久久69精品久久久久久国产越南| 亚洲区中文字幕| 精品久久久久久久久久久久久久| 欧美丰满老妇厨房牲生活| 国产一区二区在线免费视频| 欧美人与性动交| 97精品国产97久久久久久免费| 日韩欧美在线视频| 日韩免费av片在线观看| 欧美激情手机在线视频| 亚洲欧美另类自拍| 国产精品久久久久久久久| 在线观看国产精品日韩av| 欧美一区二区三区免费观看| 91视频免费网站| 91精品国产91久久久久久| 成人激情视频在线| 欧美成人四级hd版| 欧美日韩性生活视频| 欧美在线性视频| 欧美在线观看网站| 欧美激情va永久在线播放| 成人免费视频a| 亚洲缚视频在线观看| 欧美性xxxxhd| 国产精品成久久久久三级| 中文字幕欧美日韩va免费视频| 亚洲精品v欧美精品v日韩精品| 欧美激情va永久在线播放| 日韩电视剧免费观看网站| 国产精品尤物福利片在线观看| 国产精品久久久久秋霞鲁丝| 亚洲天堂男人天堂女人天堂| 日韩一区二区在线视频| 欧美精品中文字幕一区| 欧美日韩激情视频| 日韩va亚洲va欧洲va国产| 久久精品久久久久电影| 国产亚洲精品va在线观看| 欧洲成人午夜免费大片| 日韩福利视频在线观看| 国产精品国产三级国产aⅴ浪潮| 91免费电影网站| 国产成人亚洲综合| 91精品国产综合久久香蕉922| 97精品国产97久久久久久免费| 国产日韩精品综合网站| 欧美成人在线影院| 蜜月aⅴ免费一区二区三区| 国产精国产精品| 国产欧美一区二区三区久久| 97国产精品视频人人做人人爱| 成人精品久久一区二区三区| 日韩国产欧美精品在线| 欧美成人黑人xx视频免费观看| 日韩美女视频免费在线观看| 69久久夜色精品国产69| 性欧美xxxx视频在线观看| 波霸ol色综合久久| 久久久久久香蕉网| 国产精品久久久久999| 亚洲伊人一本大道中文字幕| 精品国产欧美一区二区五十路| 亚洲精品电影在线观看| 欧美日韩精品国产| 欧美色视频日本高清在线观看| 久久中文字幕一区| 欧美一二三视频| 亚洲一区av在线播放| 热久久美女精品天天吊色| 精品国产拍在线观看| 国产精品丝袜久久久久久高清| 亚洲在线免费看| 日韩欧美一区二区三区久久| 国产一区二区三区精品久久久| 日韩av成人在线观看| 欧美一性一乱一交一视频| 日本国产欧美一区二区三区| 亚洲欧美日韩网| 久久精品国产99国产精品澳门| 国产精品永久免费视频| 日韩一区视频在线| 日韩久久精品成人| 51精品在线观看| 国产精品18久久久久久首页狼| 国产精品一区专区欧美日韩| 91chinesevideo永久地址| 青草成人免费视频| 久久97精品久久久久久久不卡| 日韩电影免费在线观看中文字幕| 亚洲xxxx做受欧美| 国产精品久久中文| 国产亚洲精品美女| 日韩精品在线观| 欧美日韩国产精品一区二区不卡中文| 亚洲国产成人精品久久久国产成人一区| 亚洲国产高潮在线观看| 欧美日韩免费区域视频在线观看| 中文字幕精品—区二区| 国产欧美精品久久久| 亚洲天堂网站在线观看视频| 欧美精品一本久久男人的天堂| 国产91色在线免费| 国产噜噜噜噜久久久久久久久| 久久影院资源站| 日韩成人激情视频| 亚洲精品欧美日韩| 色婷婷综合久久久久中文字幕1| 亚洲第一网中文字幕| 国产精品免费一区| 福利视频一区二区| 77777亚洲午夜久久多人| 国产成人中文字幕| 国产一区二区三区毛片| 久久久亚洲天堂| 91免费视频国产| 成人激情视频在线| 欧美成aaa人片免费看| 国产一区二区三区直播精品电影| 在线免费看av不卡| 亚洲欧美国产视频| 亚洲欧洲一区二区三区久久| 欧美精品电影免费在线观看| 欧美高清视频免费观看| 欧美综合在线第二页| 日韩欧美精品中文字幕| 91精品啪aⅴ在线观看国产| 国产欧美日韩亚洲精品| 一区二区三区天堂av| 久久精品91久久久久久再现|