📄 tree.java
字号:
package huayi.xt.tree;
import java.sql.*;
import javax.servlet.*;
public class tree {
huayi.gg.dbConn.dbConn DBbean=new huayi.gg.dbConn.dbConn();
huayi.gg.checkhtml.checkhtml checkhtml=new huayi.gg.checkhtml.checkhtml();
String BMMC;
public void init(javax.servlet.jsp.JspWriter out,javax.servlet.http.HttpServletRequest request,javax.servlet.http.HttpServletResponse response,int lc[]) throws Exception {
out.println("<title>用jsp种树</title>");
dowith(out,request,response);
buildTree(out,0,0,lc);//初始调用
}
private void dowith(javax.servlet.jsp.JspWriter out,javax.servlet.http.HttpServletRequest request,javax.servlet.http.HttpServletResponse response) throws Exception
{
int id;
//String pBMBH="";
String ID="",BMBH="";
String PID=request.getParameter("PID");
if(PID==null||PID.equals(""))return; //如果没有当前部门,返回
String action=new String(request.getParameter("action").getBytes("ISO-8859-1"));
String BMMC=new String(request.getParameter("BMMC").getBytes("ISO-8859-1"));
if(action.equals("添加部门"))
if(BMMC.equals("")) //新添加部门名称为空则不操作
return;
else{
BMMC=checkhtml.toHTMLString(BMMC);
boolean ok=true;
String BB="";
String sql1="select BMMC from T_QYJGSB where PID="+PID; //新添加部门不允许与兄弟部门同名
ResultSet rs1=DBbean.executeQuery(sql1);
while (rs1.next())
{BB=rs1.getString("BMMC");
if (BB.equals(BMMC)) {ok=false;break;}
}
if (!ok) { response.sendRedirect("XT_JGSZ_tjcfts.jsp");}
else //符合条件的部门添加入表T_QYJGSB及T_BMXXB
{
/* int parentid=Integer.parseInt(PID);
String sql3="select BMBH from T_QYJGSB where id="+parentid;
ResultSet rs3=DBbean.executeQuery(sql3);
while (rs3.next())
{
pBMBH=rs3.getString("BMBH");
} */
BMBH= DBbean.executeProcedure("BM"); //BMBH=create(pBMBH);
DBbean.executeUpdate("insert into T_QYJGSB(PID,BMMC,BMBH) values('"+PID+"','"+BMMC+"','"+BMBH+"')");
String CLSJ=getCurrentDate();
DBbean.executeUpdate("insert into T_BMXXB(BMBH,BMMC,CLSJ) values('"+BMBH+"','"+BMMC+"','"+CLSJ +"')");
}
}
else if(action.equals("删除部门"))
{
id=Integer.parseInt(PID);
delete(id);
}
}
private void delete(int id) throws Exception
{
String sql3="select BMBH from T_QYJGSB where id="+id;
ResultSet rs3=DBbean.executeQuery(sql3);
while(rs3.next())
{
String BMBH=rs3.getString("BMBH");
int n=DBbean.executeUpdate("delete from T_BMXXB where BMBH='"+BMBH+"'");
}
DBbean.executeUpdate("delete from T_QYJGSB where id="+id);
String sql="select * from T_QYJGSB where PID="+id; //删除id的所有子部门
ResultSet rs=DBbean.executeQuery(sql);
while(rs.next())
delete(rs.getInt("id"));
}
private void buildTree(javax.servlet.jsp.JspWriter out,int PID,int level,int lc[]) throws Exception
{ // 注:PID为0表示根结点
level++;
ResultSet rs1=DBbean.executeQuery("select * from T_QYJGSB where PID="+PID+" order by id");
int count=0; //count记录当前节点兄弟总数;
while(rs1.next()){count++;}
//out.print(count);
ResultSet rs=DBbean.executeQuery("select * from T_QYJGSB where PID="+PID+" order by id");
int turn=0; //turn记录当前节点排行;
while(rs.next()) {
turn++;
if (turn==count) { lc[level]=1; } else { lc[level]=0; } //lc数组作用:记录每个节点回溯到其起始祖先是否最后一个孩子,以决定画verline.gif或blank.gif或branch-end.gif
out.println("<nobr><div>");
for (int k=level+1;k<=14;k++) lc[k]=2;
for (int i=2;i<=level;i++)
{if (lc[i]==0) { out.print("<img src=\"image/verline.gif\"> ");}
else {if(lc[i-1]==0) { out.print("<img src=\"image/verline.gif\"> ");}
else if ((lc[i+1]!=1)&&(lc[i+1]!=0)) { out.print("<img src=\"image/branch-end.gif\"> "); }
else {out.print("<img src=\"image/blank.gif\"> ");}
}}
int a=rs.getInt("id");
String b=rs.getString("BMMC");
if(has_child(a)) { //非叶子节点情况
if(level==1) //根结点
{out.print("<img alt=\"展开\" style=\"cursor:hand;\" onclick=\"myClick3('"+a+"');\" id=\"img"+a+"\" src=\"image/minus-begin.gif\"> ");}
else if(lc[level]==1) //最后一个孩子
{out.print("<img alt=\"展开\" style=\"cursor:hand;\" onclick=\"myClick2('"+a+"');\" id=\"img"+a+"\" src=\"image/plus-end.gif\"> ");}
else //非最后一个孩子
{out.print("<img alt=\"展开\" style=\"cursor:hand;\" onclick=\"myClick('"+a+"');\" id=\"img"+a+"\" src=\"image/plus.gif\"> ");}
out.print("<img id=\"im"+a+"\" src=\"image/closedfold.gif\"> <span onclick=\"myClick1('"+a+"');\" style=\"cursor:default;\" id=\"span"+a+"\"><a href='XT_JGSZ_xx.jsp?id=" +a+"' target=iframe>"+b+"</a></span>");
if (level>=2) //初始页面时,2层以上部门隐藏
out.println("<div style=\"display:none;\" id=\"div"+a+"\">");
else out.println("<div style=\"display:block;\" id=\"div"+a+"\">");
buildTree(out,a,level,lc); //递归调用
out.println("</div>");
} else //叶子节点情况
{ResultSet rs2=DBbean.executeQuery("select BMBH from T_QYJGSB where id="+a);
while(rs2.next()){String BMBH=rs2.getString("BMBH");
if(level==1) //根结点
{out.print("<img src=\"image/minus-begin-only.gif\"> ");}
else if(lc[level]==1) //最后一个孩子
{out.print("<img src=\"image/minus-end.gif\"> ");}
else //非最后一个孩子
{out.print("<img src=\"image/minus.gif\"> ");}
out.print("<img src=\"image/globe.gif\"> <span onclick=\"myClick1('"+a+"');\" style=\"cursor:default;\" id=\"span"+a+"\"><a href='XT_JGSZ_xx.jsp?id=" +a+"' target=iframe>"+b+"</a></span>");}
}
out.println("</div></nobr>");
}
rs.close();
rs=null;
}
private boolean has_child(int PID) throws Exception { //判断PID节点是否有孩子
ResultSet rs=DBbean.executeQuery("select * from T_QYJGSB where PID="+PID+" order by id");
return rs.next();
}
public String getOption() throws Exception { // 得到下拉部门列表
String option="";
ResultSet rs=DBbean.executeQuery("select * from T_QYJGSB order by id");
while(rs.next())
option+="<option value="+rs.getInt("id")+">"+rs.getString("BMMC")+"</option>\n";
return option;
}
private String getCurrentDate()//得到当前系统时间
{
return (new java.text.SimpleDateFormat ("yyyy-MM-dd")).format(new java.util.Date());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -