Tree(后端工作)代码:
(1)创建权限表
/*权限表(菜单表)*/
create table tb_promission
(
id number primary key,--权限id
text varchar2(100) not null,--权限名称
pid number not null,--权限父级id
icon varchar2(100),--菜单显示的icon
url varchar2(100),--权限资源路径
state number,--状态;该记录是否有效1:有效、0:无效
sort number--排序码
)
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(1,'店铺管理',-1,'','',1,1);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(2,'图书分类管理',-1,'','',1,2);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(3,'图书管理',-1,'','',1,3);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(4,'订单管理',-1,'','',1,4);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(5,'系统设置',-1,'','',1,5);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(6,'店铺添加',1,'','/addshop.jsp',1,6);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(7,'店铺列表',1,'','/shopList.jsp',1,7);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(8,'图书分类添加',2,'','/addBookType.jsp',1,8);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(9,'图书分类列表',2,'','/addBookTypeList.jsp',1,9);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(10,'图书添加',3,'','/addBook.jsp',1,10);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(11,'图书列表',3,'','',1,11);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(12,'所有图书',11,'','/addBookList.jsp',1,12);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(13,'未上架',11,'','/notAvailableBook.jsp',1,13);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(14,'已上架',11,'','/listedBook.jsp',1,14);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(15,'已下架',11,'','/removedBook.jsp',1,15);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(16,'所有订单',4,'','/orderList.jsp',1,16);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(17,'未付款订单',4,'','/UnpaidOrder.jsp',1,17);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(18,'已付款订单',4,'','/PaidOrder.jsp',1,18);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(19,'未收货订单',4,'','/UnconscionedOrder.jsp',1,19);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(20,'已完成订单',4,'','/DoneOrder.jsp',1,20);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(21,'系统设置',5,'','/SystemSettings.jsp',1,21);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(22,'菜单管理',5,'','/MenuManagement.jsp',1,22);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(23,'权限管理',5,'','/PermissionManagement.jsp',1,23);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(24,'用户管理',5,'','/UserManagement.jsp',1,24);
commit
--module promission menu
select * from tb_promission;
select *from tb_promission where pid = -1
select * from tb_promission where pid =
(
select id from tb_promission where pid = -1 and id = 1
)
select id,text,pid,icon,url,state,sort from tb_promission where pid = 1 order by sort asc;
update tb_promission set pid = 11 where id = 11
(2).写一个实现类
@WebServlet("/moduleServlet")
public class ModelServlet extends HttpServlet {
private IModuleService service = new ModuleService();
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
doPost(req, resp);
}
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("application/json; charset=utf-8");
List<Module> list = service.listModel(-1);
PrintWriter out = resp.getWriter();
//将list对象转换为JSON格式
String str = JSON.toJSONString(list);
out.write(str);
out.flush();
out.close();
}
}
(3)编写数据访问层和业务逻辑层
1、数据访问层
@Override
public List<Promission> qurryPromissionAll(int pid) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
List<Promission> list = new ArrayList<Promission>();
Promission promission = null;
String sql = "";
try {
conn = DBHelper.getConn();
sql = "select id,text,pid,icon,url,state,sort from tb_Promission where pid =?";
ps = conn.prepareStatement(sql);
ps.setInt(1, pid);
rs = ps.executeQuery();
while (rs.next()) {
promission = new Promission();
promission.setId(rs.getInt("id"));
promission.setText(rs.getString("text"));
promission.setPid(rs.getInt("pid"));
promission.setIcon(rs.getString("icon"));
promission.setUrl(rs.getString("url"));
promission.setState(rs.getInt("state"));
promission.setSort(rs.getInt("sort"));
list.add(promission);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBHelper.myClose(conn, ps, rs);
}
return list;
}
2、业务逻辑层
package com.zking.ht.promission.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
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.ht.promission.biz.IPromissionBiz;
import com.zking.ht.promission.biz.impl.PromissionBizImpl;
import com.zking.ht.promission.entity.Promission;
@WebServlet("/promissionListServlet.do")
public class PromissionListServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/json;charset=utf-8");
IPromissionBiz ipb = new PromissionBizImpl();
List<Promission> list = ipb.qurryPromissionAll(-1);
ObjectMapper mapper = new ObjectMapper();
String reuslt = mapper.writeValueAsString(list);
PrintWriter out = response.getWriter();
System.out.println(reuslt);
out.write(reuslt);
out.flush();
out.close();
}
}
(5)jsp页面布局显示
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<%@ include file="static/common/easyuibase.jsp"%>
</head>
<body>
<div id="cc" class="easyui-layout" data-options="fit:true">
<div data-options="region:'north',title:'首页头部',split:true"
style="height: 100px;"></div>
<div data-options="region:'south',title:'版权信息',split:true"
style="height: 100px;"></div>
<div data-options="region:'west',title:'菜单栏',split:true"
style="width: 170px;">
<div id="mytree" class="easyui-accordion"
style="width: 170px; height: 500px;;"></div>
<script type="text/javascript">
$(function() {
$('#mytree').tree({
url:xPath+'/promissionListServlet.do',
onClick:function(node){
addMyTabs(node);
}
});
});
function addMyTabs(node) {
if(node.id === '-1'){
return;
}
var flag = $("#maintabs").tabs('exists',node.text);
if(flag){
$("#maintabs").tabs('select',node.text);
return;
}
$("#maintabs").tabs('add',{
title: node.text,
content:"<iframe src = 'dodo.jsp' width =100% height =100%>",
closable:true,
})
}
</script>
</div>
<div data-options="region:'center',title:'内容'"
style="padding: 5px; background: #eee;">
<div id="maintabs" class="easyui-tabs" data-options="fit:true">
</div>
</div>
</div>
</body>
</html>
六.写一个实现类(业务逻辑层)