spring 使用 xml 配置文件 实现jsp 页面 展示动态 目录树的一个例子(亲测可用)

如果觉得写得可以 或者太差 就 评论一下或者赞一下呗,多谢支持!!


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;
    }
}


猜你喜欢

转载自blog.csdn.net/q18792880831/article/details/80611618
今日推荐