前段时间做毕业设计用到了目录树结构,所以顺便学习了Z-Tree这个插件,官网给的api很详细,但是全是前端上的操作,没有具体在服务器实现的实例,网上也是基本没有学习实例。于是自己就琢磨学习一番,本系列的主旨就是把z-tree应用到jsp和servlet中,方便以后的人学习使用。这个学习系列大概分为4个系列,
第一个系列就是下载所需的各种工具和包之类的,数据库的设计,把我们所用的所用材料准备好。
第二个系列就是目录树删除实现,不仅仅前端显示删除成功,同时数据库中也被删除掉。
第三个系列就是目录树修改实现,节点名称修改,同时数据库中也被修改。
第四个系列就是目录树的添加,效果如上。
我用的是eclipse , mysql ,由于我用了servlet的注解功能,所以读者请注意使用servlet3.0以上版本,如果你不想用,那么就需要自行去web.xml配置你的servlet路径,这个你应该会的,我就不再赘述。
z-Tree的实现是基于jq的,所以请到官网下载jq 库文件,同时去Z-tree官网下载所需要js文件和样式表。
这三个是必须的,将来要在jsp页面引入。
样式表如下
以上所需文件的下载地址: 链接:下载地址 密码:58i0
java 定义json 格式所需的包
我用到是mysql,简单起见,表就设置3个字段,id , parent_id, province.
id是树节点的唯一标识(注意id设置成自动增长,方便添加),parent_id 则是指明父节点的id,插件我是在哪个节点的孩子。province 是我自己起的省份名字(不知道拼对了没),也就是节点的name
数据库连接采用JDBC
public class DbUtil {
public static Connection getConnection()
{
Connection conn = null;
try{
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//获取和数据库的链接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/practice?useUnicode=true&characterEncoding=utf-8","root","123456");
}catch(Exception e){
e.printStackTrace();
}
return conn;
}
public static void closeAll(Connection conn,PreparedStatement ps,ResultSet rs)
{
try{
rs.close();
ps.close();
conn.close();
}catch(Exception e){
e.printStackTrace();
}
}
public static void closeAll(Connection conn,PreparedStatement ps)
{
try{
ps.close();
conn.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
1.z-tree.jsp 起始页面,也是操作展示的页面。
2.city.java city 实体类,城市类。
package util;
public class City {
private Integer id;
private Integer pId;
private String city;
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 getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
3.CityDAO city 接口
4.CityImpl 接口实现
5. TreeNode 节点类 仅仅为了定义返回给前台的格式定义
public class TreeNode {
private Integer id;
private Integer pId;
private String nodeName;
private String icon = "";
private Boolean isParent = true; // 是否是双亲节点
private Boolean checked = false;
private List children = null;
private Boolean open = false; //是否展开
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 getNodeName() {
return nodeName;
}
public void setNodeName(String nodeName) {
this.nodeName = nodeName;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public Boolean getIsParent() {
return isParent;
}
public void setIsParent(Boolean isParent) {
this.isParent = isParent;
}
public Boolean getChecked() {
return checked;
}
public void setChecked(Boolean checked) {
this.checked = checked;
}
public List getChildren() {
return children;
}
public void setChildren(List children) {
this.children = children;
}
public Boolean getOpen() {
return open;
}
public void setOpen(Boolean open) {
this.open = open;
}
}
以上,就是基本的前期工作,接下来就让我们来实现 目录树最简单的删除实现
https://github.com/SpecialYy/ztree-demo-practice