如果觉得写得可以 或者太差 就 评论一下或者赞一下呗,多谢支持!!
1.首先 创建 配置文件 main_menu_bar.xml [ 至于这个文件放在哪里, 继续往下看 , 然后 自己研究研究吧 0.0 ]
<?xml version="1.0" encoding="utf-8"?> <root> <project name="项目1" role="0"> <function name="功能1" role="0"> <function_url>/pages/function1.html</function_url> <function_description>功能1</function_description> </function> <function name="功能2" role="0"> <function_url>/pages/function2.html</function_url> <function_description>功能2</function_description> </function> <function name="功能3" role="0"> <function_url>/pages/function3.html</function_url> <function_description>功能3</function_description> </function> <function name="功能4" role="0"> <function_url>/pages/function4.html</function_url> <function_description>功能4</function_description> </function> <function name="功能5" role="0"> <function_url>/pages/function5.html</function_url> <function_description>功能5</function_description> </function> </project> <project name="项目2" role="0"> <function name="功能6" role="0"> <function_url>/pages/function1.html</function_url> <function_description>功能6</function_description> </function> <function name="功能7" role="0"> <function_url>/pages/function2.html</function_url> <function_description>功能7</function_description> </function> <function name="功能8" role="0"> <function_url>/pages/function3.html</function_url> <function_description>功能8</function_description> </function> <function name="功能9" role="0"> <function_url>/pages/function4.html</function_url> <function_description>功能9</function_description> </function> <function name="功能10" role="0"> <function_url>/pages/function5.html</function_url> <function_description>功能5</function_description> </function> </project> </root>
2.jsp要展目录树的示页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> <link href="css/default.css" type="text/css" rel="stylesheet"> <style type="text/css"> #mainTree{ width: 350px; height: 600px; background-image: url("images/mainTree_bg.gif"); padding: 10px; } .branch{ } .branch a{ display: block; width: 350px; height: 30px; background-image: url("images/button_1.gif"); background-repeat: no-repeat; } .leave{ display: none; } </style> </head> <body> <div id="mainTree"> <ul id="root"> <% //输出菜单树 这里的路径 要和自己的项目一致(这个类如何写 请继续往) String treeHtml = com.xlx.utils.MainTreeUtil.getPageText(); out.write(treeHtml); %> </ul> </div> </body> <script language="JavaScript"> function getElementsByClassName (param) { var tags = tags || document.getElementsByTagName("*"); var list = []; for( var k in tags) { var tag = tags[k]; if(tag.className == param) { list.push(tag); } } return list; } var branchs = getElementsByClassName("branch"); var leaves = getElementsByClassName("leave"); function getIndexFromBranchs(branch) { for(var i=0;i<branchs.length;i++){ if(branch==branchs[i]){ return i; } } return -1; } for(var i=0;i<branchs.length;i++){ branchs[i].onclick = function () { var index = getIndexFromBranchs(this); if(leaves[index].style.display!="block"){ leaves[index].style.display="block"; }else{ leaves[index].style.display="none"; } } } </script> </html>3.后台java控制文件 MainTreeUtil.java
import com.xlx.bean.OneFunction; import com.xlx.bean.User; import org.apache.struts2.ServletActionContext; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import javax.servlet.http.HttpServletRequest; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.InputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedHashMap; public class MainTreeUtil { static Document dom; static Document subdom; static { try { //这里的main_menu_bar.xml 就是最开始时候创建的, InputStream fin = MainTreeUtil.class.getClassLoader().getResourceAsStream("main_menu_bar.xml"); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); dom = db.parse(fin); } catch (Exception e) { e.printStackTrace(); } } public static LinkedHashMap<String,ArrayList<OneFunction>> getRoot(){ LinkedHashMap<String,ArrayList<OneFunction>> result = new LinkedHashMap<String, ArrayList<OneFunction>>(); HttpServletRequest request = ServletActionContext.getRequest(); User user = (User) request.getSession().getAttribute("user"); int userRole = user.getUserType(); NodeList projects = dom.getElementsByTagName("project"); for(int i=0;i<projects.getLength(); i++){ Element project = (Element)projects.item(i); int projectRole =Integer.parseInt(project.getAttribute("role")); String projectName = project.getAttribute("name"); if(userRole>=projectRole){ ArrayList<OneFunction> oneFunctions = new ArrayList<OneFunction>(); NodeList functions = project.getElementsByTagName("function"); for(int j=0;j<functions.getLength(); j++){ Element function = (Element)functions.item(j); int functionRole =Integer.parseInt(function.getAttribute("role")); if(userRole>=functionRole){ OneFunction oneFunction = new OneFunction(); oneFunction.setFunctionName(function.getAttribute("name")); oneFunction.setFunctionUrl(function.getElementsByTagName("function_url").item(0).getTextContent().trim()); oneFunction.setFunctionDescription(function.getElementsByTagName("function_description").item(0).getTextContent().trim()); oneFunctions.add(oneFunction); } } result.put(projectName,oneFunctions); } } return result; } public static String getPageText(){ StringBuilder pageString = new StringBuilder(); LinkedHashMap<String,ArrayList<OneFunction>> menuTree = getRoot(); if(menuTree.size()!=0){ Iterator<String> iter = menuTree.keySet().iterator(); while (iter.hasNext()) { String branch = iter.next(); pageString.append("<li class=\"branch\"><a>"+branch+"</a></li>"); ArrayList<OneFunction> leaves = menuTree.get(branch); if(leaves.size()!=0){ pageString.append("<ul class=\"leave\">"); for(OneFunction temp:leaves){ pageString.append("<li><a href=\""+temp.getFunctionUrl()+"\" target=\"right_iframe\">"+temp.getFunctionName()+"</a></li>"); } pageString.append("</ul>"); } } } String pageText = pageString.toString(); return pageText; } }