树形目录的递归实现(一)数据库+jsp+javabean

class cn {//连接数据库,这里以MS-SQL为例

String jdbcDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";//jdbc驱动

String connectionString="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";//数据库连接字符串

String user="sa";//数据库用户名

String pass="";//数据库密码

Connection conn=null;

ResultSet rs=null;

public cn() {

try {

Class.forName(jdbcDriver);

} catch(ClassNotFoundException e) {

System.err.println(e.toString());

}

}

public ResultSet executeQuery(String sql) {

rs=null;

try {

conn=DriverManager.getConnection(connectionString,user,pass);

Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

rs=stmt.executeQuery(sql);

}

catch(SQLException e) {

System.err.println(e.toString());

}

return rs;

}

public void executeUpdate(String sql) {

try {

conn=DriverManager.getConnection(connectionString,user,pass);

Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

stmt.executeUpdate(sql);

}

catch(SQLException e) {

System.err.println(e.toString());

}

}

}

class tree {

cn conn=new cn();

public void init(javax.servlet.jsp.JspWriter out,javax.servlet.http.HttpServletRequest request) throws Exception {

out.println("用jsp种树");

dowith(request);

buildTree(out,0,0);//初始调用

}

private void dowith(javax.servlet.http.HttpServletRequest request) {

if(request.getParameter("parentid")==null||request.getParameter("parentid").equals(""))return;

String action=request.getParameter("action");

if(action.equals("add"))

conn.executeUpdate("insert into tree(parentid,message) values('"+request.getParameter("parentid")+"','"+request.getParameter("message")+"')");

else if(action.equals("delete"))

conn.executeUpdate("delete from tree where id="+request.getParameter("parentid")+" or parentid="+request.getParameter("parentid"));

}

public void buildTree(javax.servlet.jsp.JspWriter out,int parentid,int level) throws Exception {

level++;

ResultSet rs=conn.executeQuery("select * from tree where parentid="+parentid+" order by id");

while(rs.next()) {

out.println("");

for(int i=0;iout.print("

");

if(has_child(rs.getInt("id"))) {

out.print("

");

out.print(""+rs.getString("message")+" id="+rs.getInt("id")+"");

out.println("");

buildTree(out,rs.getInt("id"),level);//递归调用

out.println("<>");

} else

out.print("

"+rs.getString("message")+" id="+rs.getInt("id")+"");

out.println("<>");

}

rs.close();

rs=null;

}

private boolean has_child(int parentid) throws Exception {

ResultSet rs=conn.executeQuery("select * from tree where parentid="+parentid+" order by id");

return rs.next();

}

public String getOption() throws Exception {

String option="";

ResultSet rs=conn.executeQuery("select * from tree order by id");

while(rs.next())

option+=""+rs.getInt("id")+" ";

return option;

}

}

%>tree myTree=new tree();

myTree.init(out,request);

%>

if(myTree.getOption().equals("")) {

%>

parentid:0-表示根节点

message:

parentid:

message:

java bean目录_树形目录的递归实现数据库+jsp+javabean相关推荐

  1. Linux目录结构——树形目录结构

    Linux目录结构--树形目录结构 根目录:所有目录分区.目录.文件等位置起点 整个树形目录结构中,使用独立的一个"/" 常见的子目录:   /root   /bin   /boo ...

  2. java bean状态_无状态和有状态企业Java Bean

    我将通过Java EE 6教程,我试图了解无状态和有状态会话bean之间的区别.如果无状态会话bean不在方法调用之间保留它们的状态,为什么我的程序执行它的方式? package mybeans; i ...

  3. cmake linux模板 多目录_多目录工程的CmakeLists.txt编写(自动添加多目录下的文件)...

    实现类似于vs中工程的CMakeLists.txt的编写.功能为main.cpp调用hello.cpp 的hello()函数,world.cpp的world()函数.使用自动添加多目录下的文件. 1. ...

  4. java bean状态_无状态和有状态的企业Java Bean

    我正在阅读Java EE 6教程,试图理解无状态会话bean和有状态会话bean之间的区别.如果无状态会话bean在方法调用之间没有保持其状态,为什么我的程序按原样运行? package mybean ...

  5. java bean 单例模式_单例模式 - Beans_bag - 博客园

    1.单例模式的简介 定义 保证每个类仅有一个实例,并给外部提供一个访问它的全局访问点. 思路 如果一个类能够被创建多个实例,那么,这个类的构造方法肯定是公开的,外部通过此类的构造方法可以创建多个类的实 ...

  6. java bean工厂_从零构建轻量级Java Web框架

    Bean工厂 回顾下前面的知识,通过加载配置文件获取应用基础包名,加载基础包名下所有的类,获取Controller,Service类.到目前为止,我们只是加载了类,但是无法通过获取的类来实例化对象.因 ...

  7. java bean工厂_工厂bean和bean工厂

    FactoryBean(工厂bean):是bean的加工工厂,是对已知Bean的加工,是一个接口,要实现三个方法: ① Object getObject()可以对bean进行加工添加功能. ② Cla ...

  8. java树结构遍历_树形结构,java_树遍历统计总数,树形结构,java - phpStudy

    树遍历统计总数 { platformId: 3, areaId: "", areaName: "ROOT", parentAreaId: "" ...

  9. java bean的反射类_JAVA中反射机制五(JavaBean的内省与BeanUtils库)

    内省(Introspector) 是Java 语言对JavaBean类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法 ...

最新文章

  1. C# Azure 存储-分布式缓存Redis的新建配置查看
  2. 区块链系统之《基于区块链的PKI数字证书系统》
  3. Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver
  4. 关于AI Architecture未来的一些思考
  5. SOAP的Could not connect to host in...报错解决方案
  6. 春晚亲民,快手上行:探秘春晚红包的另一种打开方式
  7. java 锁表后事务提交_关于synchronized锁在Spring事务中进行数据更新同步,仍出现线程安全问题...
  8. 整合Spring Cloud微服务分布式云架构技术点
  9. Nero Multimedia Suite 10.6.11300
  10. html中字体 楷体_(收藏)css怎么设置字体为楷体?
  11. 查看本机mysql安装信息
  12. 计算机基础知识好学吗,计算机编程好学吗 需要什么基础知识?
  13. 企业级网络架构—云平台高可用网络的修炼之道
  14. python01 初识 bmi测量
  15. 着被拍红的手,咯咯一
  16. matlab sym转str,sym struct 转换
  17. 重庆赛区ACM热身赛 8526. 小埋的烦恼
  18. android 阿拉伯数字转汉字,Android中阿拉伯文字的阿拉伯数字
  19. 软件工程导论学习小结
  20. java随机生成标点符号_java去除空格、标点符号的方法实例

热门文章

  1. C++11中容器迭代器操作总结
  2. 基于proxychains4进行终端加速 wget,curl等
  3. AB=C型向量分解思路思考
  4. Matlab之eval函数
  5. found.000是什么,能删除吗
  6. Mysql Hash索引和B-Tree索引区别(Comparison of B-Tree and Hash Indexes)
  7. [开源]基于WPF实现的Gif图片分割器,提取GIf图片中的每一帧
  8. vue rem移动端适配
  9. javascript常见错误
  10. 超轻量级三级展开列表