
hello,家人们,今天份知识来了,今天我们要讲的是EaysUI——Tree的后端工作
目录
一.Tree
二.准备工作:
三.案例
一.Tree
树结构数据:分为同步加载和异步加载
二.准备工作:1.sql语句
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;
commit;
2.把解压好的文件夹复制到项目中去,如果有什么不理解的,可以看看昨天的知识:
EasyUI——基本布局_洛洛虎虎生威的博客-CSDN博客EasyUI的基本介绍以及基本布局https://blog.csdn.net/weixin_65975275/article/details/124676150?spm=1001.2014.3001.5501
三.案例我们今天既然用到了数据库,那我们肯定是要连接数据库的,让我们先来建一个DBHelper
(com.zking.util)
package com.zking.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import oracle.jdbc.driver.OracleDriver;
public class DBHelper {
static {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (Exception e) {
e.printStackTrace();
}
}
private static final String URL="jbdc:oracle:thin:@localhost:1521:orcl";
public static Connection getCon() {
try {
return DriverManager.getConnection(URL, "scott","tlt1516131462qmt");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void getClose(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();
}
}
}
接下来是实体类:
🍖🍖(com.zking.pojo) Permission
package com.zking.pojo;
public class Permission {
private Integer id;
private Integer pid;
private String text;
private String url;
public Permission() {
}
public Permission(Integer id, Integer pid, String text, String url) {
super();
this.id = id;
this.pid = pid;
this.text = text;
this.url = url;
}
public String toString() {
return "Permission [id=" + id + ", pid=" + pid + ", text=" + text + ", url=" + url + "]";
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getPid() {
return pid;
}
public void setPid(Integer pid) {
this.pid = pid;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
🥩🥩(com.zking.pojo)TreeNode
package com.zking.pojo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TreeNode {
private String id;
private String text;
private String state;
private Boolean checked = false;
private Map attributes=new HashMap<>();
private List children = new ArrayList<>();
private String parentId;
private Boolean hasParent = false;
private Boolean hasChildren = false;
public TreeNode() {
}
public TreeNode(String id, String text, String state, Boolean checked, Map attributes,
List children, String parentId, Boolean hasParent, Boolean hasChildren) {
super();
this.id = id;
this.text = text;
this.state = state;
this.checked = checked;
this.attributes = attributes;
this.children = children;
this.parentId = parentId;
this.hasParent = hasParent;
this.hasChildren = hasChildren;
}
public String toString() {
return "TreeNode [id=" + id + ", text=" + text + ", state=" + state + ", checked=" + checked
+ ", attributes=" + attributes + ", children=" + children + ", parentId=" + parentId
+ ", hasParent=" + hasParent + ", hasChildren=" + hasChildren + "]";
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public Boolean getChecked() {
return checked;
}
public void setChecked(Boolean checked) {
this.checked = checked;
}
public Map getAttributes() {
return attributes;
}
public void setAttributes(Map attributes) {
this.attributes = attributes;
}
public List getChildren() {
return children;
}
public void setChildren(List children) {
this.children = children;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public Boolean getHasParent() {
return hasParent;
}
public void setHasParent(Boolean hasParent) {
this.hasParent = hasParent;
}
public Boolean getHasChildren() {
return hasChildren;
}
public void setHasChildren(Boolean hasChildren) {
this.hasChildren = hasChildren;
}
}
哈哈🥝🥝我们再补充一个uitl类(TreeFactory)
package com.zking.util;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import com.zking.pojo.TreeNode;
@SuppressWarnings("all")
public class TreeFactory {
public static List buildList(List nodeList) {
List 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 buildList(List 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();
}
}
接下来是三层架构:
🥘🥘 (com.zking.dao) IPermissionDao
package com.zking.dao;
import java.util.List;
import com.zking.pojo.Permission;
import com.zking.pojo.TreeNode;
public interface IPermissionDao {
//查询所有
List list();
List listNodes();
}
🥧🥧(com.zking.daoimpl) PermissionDaoImpl
package com.zking.daoimpl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.zking.dao.IPermissionDao;
import com.zking.pojo.Permission;
import com.zking.pojo.TreeNode;
import com.zking.util.DBHelper;
import com.zking.util.TreeFactory;
public class PermissionDaoImpl implements IPermissionDao{
private Connection con;
private PreparedStatement ps;
private ResultSet rs;
/**
* 查询所有
*/
public List list(){
List list=new ArrayList();
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.getClose(con, ps, rs);
}
return list;
}
public List listNodes() {
List nodes = new ArrayList();
//数据库中
List 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");
}
}
🥯🥯(com.zking.biz) IPermissionBiz
package com.zking.biz;
import java.util.List;
import com.zking.pojo.Permission;
import com.zking.pojo.TreeNode;
public interface IPermissionBiz {
List list();
List listNodes();
}
🥐🥐(com.zking.bizimpl) PermissionBizImpl
package com.zking.bizimpl;
import java.util.List;
import com.zking.biz.IPermissionBiz;
import com.zking.dao.IPermissionDao;
import com.zking.daoimpl.PermissionDaoImpl;
import com.zking.pojo.Permission;
import com.zking.pojo.TreeNode;
public class PermissionBizImpl implements IPermissionBiz{
IPermissionDao permissiondao=new PermissionDaoImpl();
public List list(){
return permissiondao.list();
}
public List listNodes(){
return permissiondao.listNodes();
}
}
🥗🥗(com.zking.servlet)PermissionServlet
package com.zking.servlet;
import java.io.IOException;
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 com.fasterxml.jackson.databind.ObjectMapper;
import com.zking.biz.IPermissionBiz;
import com.zking.bizimpl.PermissionBizImpl;
@SuppressWarnings("all")
@WebServlet("/permission.do")
public class PermissionServlet extends HttpServlet{
private IPermissionBiz permissionBiz=new PermissionBizImpl();
private ObjectMapper mapper=new ObjectMapper();
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//查询所有的菜单,将菜单写出去
mapper.writeValue(resp.getOutputStream(),permissionBiz.listNodes());
}
}
接来是我们的主界面:
—— 🍓🍓index.jsp界面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
效果如下:
今天的代码就到这里结束啦~下期见
今天也要记得微笑呀.
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)