Struts-Menu使用指南
一,、介紹 Struts-menu是一個(gè)基于Struts框架的菜單生成應(yīng)用框架,它是開(kāi)源軟件,,可以從http://www.上獲得,。Struts-menu在沒(méi)有權(quán)限控制時(shí)最簡(jiǎn)單,只需配置文件就可以生成需要的菜單,;在要菜單權(quán)限控制時(shí),可以和Tomcat(或其他J2EE容器)的認(rèn)證機(jī)制結(jié)合實(shí)現(xiàn)權(quán)限控制,,也可以利用后臺(tái)數(shù)據(jù)庫(kù)的方式實(shí)現(xiàn)權(quán)限控制,。 從獲得Struts-menu后,將其解壓,,可以得到如下圖1所示的一些文件: 其中struts-menu-2.3.jar為其核心包,,struts-menu.tld為其對(duì)應(yīng)的標(biāo)簽;struts-menu.war為Struts-menu自帶的sample,;doc目錄下為幫助文檔,。 二、使用Struts-menu(無(wú)權(quán)限控制) 1. 將struts-menu.jar拷貝到WEB-INFlib目錄下; 2. 將struts-menu.tld拷貝到WEB-INF目錄下,; 3. 將struts-menu.war中的scripts,、styles、images目錄拷貝到你的應(yīng)用"/"目錄下,; 4. 此外,,Struts-menu需要Log4j的支持,因此需要將log4j的包也拷貝到WEB-INF/lib,; 5. 修改 web.xml 加入 taglib 的調(diào)用: <taglib> <taglib-uri>/WEB-INF/struts-menu.tld</taglib-uri> <taglib-location>/WEB-INF/struts-menu.tld</taglib-location> </taglib> 6. 修改struts-config.xml,,在其中添加如下plugin代碼: <plug-in className="net.sf.navigator.menu.MenuPlugIn"> <set-property property="menuConfig" value="/WEB-INF/menu-config.xml" /> </plug-in> 7. 配置menu-config.xml(此文件位于WEB-INF目錄下) <?xml version="1.0" encoding="UTF-8" ?> <MenuConfig> <Displayers> <Displayer name="CoolMenu" type="net.sf.navigator.displayer.CoolMenuDisplayer"/> <Displayer name="ListMenu" type="net.sf.navigator.displayer.ListMenuDisplayer"/> <Displayer name="DropDown" type="net.sf.navigator.displayer.DropDownMenuDisplayer"/> <Displayer name="Simple" type="net.sf.navigator.displayer.SimpleMenuDisplayer"/> <Displayer name="CoolMenu4" type="net.sf.navigator.displayer.CoolMenuDisplayer4"/> <Displayer name="MenuForm" type="net.sf.navigator.example.PermissionsFormMenuDisplayer"/> <Displayer name="TabbedMenu" type="net.sf.navigator.displayer.TabbedMenuDisplayer"/> <Displayer name="Velocity" type="net.sf.navigator.displayer.VelocityMenuDisplayer"/> </Displayers> <Menus> <!-- ==================== To Do List Menus =========================== --> <Menu name="ToDoListMenuFile" title="OPERATOR" description="this is a file menu test" width="50" > <Item name="TDLnew" title="ADMIN"> <Item name="TDLnewcase" title="GO TO ADMIN PAGE" image="images/case-new.png" location="/webModule/admin/admin.jsp"/> <Item name="TDLnewitem" title="NEW ITEM" image="images/item-new.png" location="index.jsp"/> <Item name="TDLnewparty" title="NEW PARTY" image="images/party-new.png" location="index.jsp"/> <Item name="TDLopen" title="OPEN"> <Item name="TDLopencase" title="OPEN CASE" image="images/case-open.png" location="index.jsp"/> <Item name="TDLopenitem" title="OPEN ITEM" image="images/item-open.png" location="index.jsp"/> <Item name="TDLopenparty" title="OPEN PARTY" image="images/party-open.png" location="index.jsp"/> </Item> <Item name="TDLexit" title="EXIT" image="images/exit.png" location="index.jsp"/> </Menu> <!-- ==================== To Do List Menu Edit =========================== --> <Menu name="ToDoListMenuEdit" title="EDIT"> <Item name="TDLselect" title="SELECT_ALL" image="images/select-all.png" location="index.jsp" width="100"/> <Item name="TDLprefs" title="USER_PREFERENCES" image="images/prefs.png" location="index.jsp" width="150"/> </Menu> <!-- ==================== Permissions Menu =========================== --> <Menu name="Permissions" title="Permissions"> <Item title="Change" location="permissionsForm.jsp?username=‘test‘" /> </Menu> </Menus> </MenuConfig> 注解: Ø <Displayers>與</Displayers>之間的代碼定義了菜單的格式。 Ø <Menus>與</Menus>之間的代碼定義了要顯示的菜單 Ø <Menu>與<Menu>之間的代碼具有定義一個(gè)菜單的各種屬性,,如: <Menu name="ToDoListMenuFile" title="OPERATOR" description="this is a file menu test" width="50" > 其中name指定了在JSP頁(yè)面上顯示此菜單時(shí)使用的name,,title屬性定義了菜單的顯示名稱,description屬性定義了當(dāng)鼠標(biāo)移動(dòng)到此菜單上時(shí)顯示的描述信息,,width屬性定義了此菜單所占的寬度,。 在<Menu>下的<Item/>標(biāo)記用于定義此菜單的子項(xiàng),如: <Item title="Change" location="permissionsForm.jsp?username=‘test‘" /> 其中title為子項(xiàng)顯示的名稱,,location為當(dāng)點(diǎn)擊此項(xiàng)時(shí)所要執(zhí)行的操作,,如此處當(dāng)點(diǎn)擊“Change”菜單時(shí),它將轉(zhuǎn)向permissionsForm.jsp頁(yè)面,。 8. 在JSP頁(yè)面中加入如下代碼: <menu:useMenuDisplayer name="ListMenu" bundle="org.apache.struts.action.MESSAGE"> <menu:displayMenu name="ToDoListMenuFile"/> <menu:displayMenu name="ToDoListMenuEdit"/> <menu:displayMenu name="Permissions"/> </menu:useMenuDisplayer> 注解: Ø name屬性指定要顯示菜單的外觀樣式,,由<Displayers></Displayers>中指定。 Ø bundle為顯示的菜單名稱,,必須為org.apache.struts.action.MESSAGE,。 Ø <menu:displayMenu />定義要顯示的菜單,此處的name為要顯示菜單的名稱,,由<Menu/>指定,。 此外,對(duì)于各種不同的菜單外觀,,需要引用其指定的CSS及JavaScript代碼,。 效果如下圖所示: 三、基于Tomcat的權(quán)限控制的菜單顯示 在Struts中要啟用基于容器的安全認(rèn)證: 1. 需要在web.xml中進(jìn)行配置(請(qǐng)參考Struts相關(guān)書(shū)籍): <security-constraint> <web-resource-collection> <web-resource-name>AdminPages</web-resource-name> <description>Administroat only access</description> <url-pattern>/security.jsp</url-pattern> <http-method>POST</http-method> <http-method>GET</http-method> </web-resource-collection> <auth-constraint> <role-name>tomcat</role-name> <role-name>role1</role-name> <role-name>admin</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>BASIC</auth-method> <realm-name>adminRealm</realm-name> </login-config> <security-role> <description>Administrator</description> <role-name>tomcat</role-name> </security-role> <security-role> <description>A Second Role (to prove a comma-delimited list works)</description> --------
|
|
來(lái)自: funronglei > 《我的圖書(shū)館》