如果觉得写得可以 或者太差 就 评论一下或者赞一下呗,多谢支持!!
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;
}
}