easyui.Tree后端工作

  前言:本篇文章下上一篇文章的基础上增加了一点功能,点击菜单的选项,会出现对应的内容。

目录

java代码 

jsp代码

json代码 

数据库代码


java代码 

 TreeFactory:

package com.zking.util;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

@SuppressWarnings("all")
public class TreeFactory {

    public static List<TreeNode> buildList(List<TreeNode> nodeList) {
        List<TreeNode> list = buildList(nodeList, "0");
        TreeNode root;
        if (!list.isEmpty()) {
            return list;
        } else {
            root = new TreeNode();
            root.setId("000");
            root.setParentId("-1");
            root.setHasParent(false);
            root.setHasChildren(true);
            root.setChecked(true);
            root.setChildren(list);
            root.setText("主菜单");
            root.setState("closed");
        }
        return Arrays.asList(root);
    }

    public static List<TreeNode> buildList(List<TreeNode> nodeList, String topMenuId) {
        return Optional.ofNullable(nodeList).map(list -> {
            list.forEach(item -> {
                list.stream().filter(i -> {
                    return i.getId().equals(item.getParentId());
                }).forEach(i -> {
                    i.setHasChildren(Boolean.TRUE);
                    i.getChildren().add(item);
                });
            });
            return list.stream().filter(i -> {
                return i.getParentId().equals(topMenuId);
            }).collect(Collectors.toList());
        }).get();
    }

}

 TreeNode:

package com.zking.util;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@SuppressWarnings("all")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class TreeNode {

    private String id;
    private String text;
    private String state;
    private Boolean checked = false;
    private Map<String, Object> attributes=new HashMap<>();
    private List<TreeNode> children = new ArrayList<>();
    private String parentId;
    private Boolean hasParent = false;
    private Boolean hasChildren = false;

}

DBHelper:

package com.zking.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBHelper {

    //定义链接字符串
    private static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl";

    //加载驱动
    static {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    //获得链接
    public static Connection getCon() {
        try {
            return DriverManager.getConnection(URL, "scott", "sa123");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    //关闭资源
    public static void close(Connection con, PreparedStatement ps, ResultSet rs) {
        try {
            if (con != null && !con.isClosed()) {
                con.close();
            }
            if (ps != null) {
                ps.close();
            }
            if (rs != null) {
                rs.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

Permission:

package com.zking.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@SuppressWarnings("all")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Permission {

    private Integer id;
    private Integer pid;
    private String text;
    private String url;

}

PermissionDao:

package com.zking.dao;

import com.zking.pojo.Permission;
import com.zking.util.DBHelper;
import com.zking.util.TreeFactory;
import com.zking.util.TreeNode;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class PermissionDao {

	private Connection con;
    private PreparedStatement ps;
    private ResultSet rs;

    public List<Permission> list() {
        List<Permission> list = new ArrayList<Permission>();
        try {
            con = DBHelper.getCon();
            ps = con.prepareStatement("select * from bs_permission");
            rs = ps.executeQuery();
            while (rs.next()) {
                Permission permission = new Permission();
                permission.setId(rs.getInt(1));
                permission.setPid(rs.getInt(2));
                permission.setText(rs.getString(3));
                permission.setUrl(rs.getString(4));
                list.add(permission);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            DBHelper.close(con, ps, rs);
        }
        return list;
    }

    public List<TreeNode> listNodes() {
        List<TreeNode> nodes = new ArrayList<TreeNode>();
        //数据库中
        List<Permission> list = list();
        //将permission封装成node
        for (Permission permission : list) {
            TreeNode node = new TreeNode();
            node.setId(String.valueOf(permission.getId()));
            node.setParentId(String.valueOf(permission.getPid()));
            node.setText(permission.getText());
            //把pid放到自定义属性中
            node.getAttributes().put("pid",permission.getPid());
            //把url放到自定义属性中
            node.getAttributes().put("url",permission.getUrl());
            nodes.add(node);
        }
        return TreeFactory.buildList(nodes, "0");
    }
	
}

PermissionServlet:

package com.zking.servlet;


import com.fasterxml.jackson.databind.ObjectMapper;
import com.zking.dao.PermissionDao;
import com.zking.pojo.Permission;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/permission.do")
public class PermissionServlet extends HttpServlet{

	private PermissionDao permissionDao=new PermissionDao();
    private ObjectMapper mapper = new ObjectMapper();

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    	doPost(req, resp);
    }
    
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    	  //查询所有的菜单,将菜单写出去
        mapper.writeValue(resp.getOutputStream(),permissionDao.listNodes());
    }
	
}

jsp代码

index:

<%@ page contentType="text/html;charset=UTF-8"%>
<html>
<head>
<title>Title</title>
<script
	src="${pageContext.request.contextPath}/jquery-easyui-1.5.5.2/jquery.min.js"></script>
<script
	src="${pageContext.request.contextPath}/jquery-easyui-1.5.5.2/jquery.easyui.min.js"></script>
<link rel="stylesheet" type="text/css"
	href="${pageContext.request.contextPath}/jquery-easyui-1.5.5.2/themes/default/easyui.css">
<link rel="stylesheet" type="text/css"
	href="${pageContext.request.contextPath}/jquery-easyui-1.5.5.2/themes/icon.css">
</head>
<body class="easyui-layout">
	<div data-options="region:'north',title:'网站导航栏',collapsible:false"
		style="height: 100px;"></div>
	<div data-options="region:'west',title:'菜单',split:true"
		style="width: 20%;">
		<ul id="asideMenu"></ul>
	</div>
	<div data-options="region:'center',collapsible:false,border:false"
		style="padding: 5px; background: #eee;">
		<div id="mainTab" class="easyui-tabs"
			style="width: 100%; height: 100%;"></div>
	</div>
	<script>
	    let mainTab = $('#mainTab')
	
	    $('#asideMenu').tree({
	        url: '${pageContext.request.contextPath}/permission.do', //远程数据的地址
	        method: "POST",//访问方式
	        lines: true, //显示虚线
	        onClick(node) {
	            //判断是否是父节点
	            if (!node.attributes['pid']) {
	                return
	            }
	            //判断是不是已经打开了
	            if(mainTab.tabs('exists',node.text)){
	                mainTab.tabs('select',node.text)
	                return
	            }
	            mainTab.tabs('add', {
	                id:node.id,
	                title: node.text,
	                content:"<iframe src='"+node.attributes['url']+"'></iframe>"
	                //href:node.attributes['url']
	            });
	        }
	    });
	</script>
</body>
</html>

json代码 

tree_data:

[
  {
    "id": 1,
    "text": "商品管理",
    "state": "closed",
    "attributes": {
      "pid": 0
    },
    "children": [
      {
        "id": 2,
        "text": "商品增加01",
        "attributes": {
          "pid": 1
        }
      },{
        "id": 3,
        "text": "商品增加02",
        "attributes": {
          "pid": 1
        }
      }
    ]
  },
  {
    "id": 10,
    "text": "类别管理",
    "state": "closed",
    "attributes": {
      "pid": 0
    },
    "children": [
      {
        "id": 12,
        "text": "类别增加01",
        "attributes": {
          "pid": 10
        }
      },{
        "id": 13,
        "text": "类别增加02",
        "attributes": {
          "pid": 10
        }
      }
    ]
  }
]

数据库代码

CREATE TABLE bs_permission
(
    id   number          DEFAULT NULL,
    pid  number          DEFAULT NULL,
    text varchar2(10) DEFAULT NULL,
    url  varchar2(255) DEFAULT NULL
);

create sequence seq_permission;

insert into bs_permission values(seq_permission.nextval,0,'会员管理','');
insert into bs_permission values(seq_permission.nextval,0,'商品管理','');
insert into bs_permission values(seq_permission.nextval,0,'订单管理','');
insert into bs_permission values(seq_permission.nextval,0,'数据报表','');
insert into bs_permission values(seq_permission.nextval,0,'系统管理','');

insert into bs_permission values(seq_permission.nextval,2,'会员卡充值','/manager/user/recharge.jsp');
insert into bs_permission values(seq_permission.nextval,2,'会员等级','/manager/user/level.jsp');
insert into bs_permission values(seq_permission.nextval,3,'状态管理','/manager/goods/state.jsp');
insert into bs_permission values(seq_permission.nextval,3,'类目管理','/manager/user/topic.jsp');
insert into bs_permission values(seq_permission.nextval,3,'评论管理','/manager/user/comment.jsp');

select * from bs_permission;

猜你喜欢

转载自blog.csdn.net/weixin_64938628/article/details/124707360
今日推荐