上次我们是从JSON中拿到的数据,今天从数据库拿
tree属性每个节点都具备以下属性:
-
id:节点ID,对加载远程数据很重要。
-
text:显示节点文本。
-
state:节点状态,'open' 或 'closed',默认:'open'。如果为'closed'的时候,将不自动展开该节点。
-
checked:表示该节点是否被选中。
-
attributes: 被添加到节点的自定义属性。
-
children: 一个节点数组声明了若干节点。
根据以上属性,实体类的属性就可以确定了
在数据库中建一个 tb_module 功能模块表
实体类:package com.zking.entity;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class Module implements Serializable{
private static final long serialVersionUID = 1L;
private int id;
private int pid;
private String text;
private String iconCls;
private String url;
private int sort;
private List children=new ArrayList();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getIconCls() {
return iconCls;
}
public void setIconCls(String iconCls) {
this.iconCls = iconCls;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
public List getChildren() {
return children;
}
public void setChildren(List children) {
this.children = children;
}
public Module() {
// TODO Auto-generated constructor stub
}
public Module(int id, int pid, String text, String iconCls, String url, int sort, List children) {
this.id = id;
this.pid = pid;
this.text = text;
this.iconCls = iconCls;
this.url = url;
this.sort = sort;
this.children = children;
}
public Module(int pid, String text, String iconCls, String url, int sort, List children) {
this.pid = pid;
this.text = text;
this.iconCls = iconCls;
this.url = url;
this.sort = sort;
this.children = children;
}
@Override
public String toString() {
return "module [id=" + id + ", pid=" + pid + ", text=" + text + ", iconCls=" + iconCls + ", url=" + url
+ ", sort=" + sort + ", children=" + children + "]";
}
}
在数据库访问层中写一个方法
接口:
public List
实现类:
package com.zking.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.zking.entity.Module;
import com.zking.util.DBHelper;
public class ModuleDao implements IModuleDao{
@Override
public List getAllByPid(int pid) {
List lm=new ArrayList();
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
//获得连接
con=DBHelper.getCon();
//定义sql语句
String sql="select * from tb_module where pid=? order by sort";
//获得执行对象
ps=con.prepareStatement(sql);
//给占位符赋值
ps.setInt(1, pid);
//获得结果集
rs=ps.executeQuery();
//遍历结果集
while(rs.next()) {
//实例化module对象
Module m=new Module();
m.setId(rs.getInt(1));
m.setPid(rs.getInt(2));
m.setText(rs.getString(3));
m.setIconCls(rs.getString(4));
m.setUrl(rs.getString(5));
m.setSort(rs.getInt(6));
//加到集合
lm.add(m);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
DBHelper.myClose(con, ps, rs);
}
return lm;
}
}
在业务逻辑层封装children
package com.zking.biz;
import java.util.List;
import com.zking.dao.IModuleDao;
import com.zking.dao.ModuleDao;
import com.zking.entity.Module;
public class ModuleBiz implements IModuleBiz{
//调用数据库访问层
IModuleDao imd=new ModuleDao();
@Override
public List getAllByPid(int pid) {//-1 20
List ls = imd.getAllByPid(pid);
for (Module m : ls) {
if(m.getPid()==-1) {//说明是父节点 理应有子节点
//递归
m.setChildren(getAllByPid(m.getId()));
}
}
return ls;
}
}
Servlet:
package com.zking.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.alibaba.fastjson.JSON;
import com.zking.biz.IModuleBiz;
import com.zking.biz.ModuleBiz;
import com.zking.entity.Module;
@WebServlet("/module.do")
public class IndexServlet 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/html; charset=UTF-8");
//获取out对象
PrintWriter out = response.getWriter();
//servlet调用biz biz调用dao
IModuleBiz imb=new ModuleBiz();
//调用方法
List ls = imb.getAllByPid(-1);
//把集合转成json格式字符串
String str = JSON.toJSONString(ls);
//把响应输送到客户端
out.write(str);
out.flush();
out.close();
}
}
index.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="common/head.jsp" %>
Insert title here
©
注意:引入的公共页面是因为在其他页面封装了引入的五个类库
好啦,今天就到这里~~~


