1.
环境的建立:
1.1
安装Oracle 创建全局数据库
名称为ora;用户名为:znb;密码:12345678
1.2
创建表名为officetree:
创建的SQL文件为:
conn znb/12345678;
create table officetree(ID varchar(50),
PID varchar(50),
NAME varchar(100),
URL varchar(200),
TITLE varchar(20),
TARGET varchar(20),
ICON varchar(20),
ICONOPEN varchar(20),
OPENED varchar(20) );
create table officetree(ID varchar(50),
PID varchar(50),
NAME varchar(100),
URL varchar(200),
TITLE varchar(20),
TARGET varchar(20),
ICON varchar(20),
ICONOPEN varchar(20),
OPENED varchar(20) );
ID
:主键
PID:父类ID
NAME:结点名称
URL:结点连接的URL
TITLE:类似ALT的一种结点显示内容
TARGET:连接打开的目标
ICON:图片文件,没有指定将使用默认的图片
ICONOPEN:打开结点后的图片文件,没有指定将使用默认的图片
OPENED:结点是否打开
PID:父类ID
NAME:结点名称
URL:结点连接的URL
TITLE:类似ALT的一种结点显示内容
TARGET:连接打开的目标
ICON:图片文件,没有指定将使用默认的图片
ICONOPEN:打开结点后的图片文件,没有指定将使用默认的图片
OPENED:结点是否打开
控件文档下载:http://www.destroydrop.com/javascripts/tree/
1.3
安装JBuilder 或 Eclipse + MyEclipse+Tomcat 配置参见:http://cn.iblog.com/index.php?op=ViewArticle&articleId=67434&blogId=11737
注:本例采用JBuilder 9,如果用Eclipse 请将Class12.jar拷贝到Tomcat的/common/lib下否则会
出现 Class.forName("oracle.jdbc.driver.OracleDriver"); 异常.
2
编写代码:
2.1
在JBuilder 9 建立工程名字随便起
2.2
建立程序包OPFile
2.2.2
创建类:TreeNode
public class TreeNode {
private String icon;
private String iconOpen;
private String id;
private String name;
private String opened;
private String pid;
private String target;
private String title;
private String url;
private String icon;
private String iconOpen;
private String id;
private String name;
private String opened;
private String pid;
private String target;
private String title;
private String url;
public TreeNode() {
}
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getIconOpen() {
return iconOpen;
}
public void setIconOpen(String iconOpen) {
this.iconOpen = iconOpen;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOpened() {
return opened;
}
public void setOpened(String opened) {
this.opened = opened;
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getTarget() {
return target;
}
public void setTarget(String target) {
this.target = target;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getIconOpen() {
return iconOpen;
}
public void setIconOpen(String iconOpen) {
this.iconOpen = iconOpen;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOpened() {
return opened;
}
public void setOpened(String opened) {
this.opened = opened;
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getTarget() {
return target;
}
public void setTarget(String target) {
this.target = target;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
2.2.3
创建类Directory:
import java.io.*;
import oracle.jdbc.*;
import java.util.Stack;
import java.sql.*;
import java.util.*;
public class Directory {
import oracle.jdbc.*;
import java.util.Stack;
import java.sql.*;
import java.util.*;
public class Directory {
Stack stack;
long id;
Parent pid;
private Connection ora_Conn ;
private Statement ora_Stmt;
private ResultSet ora_Rs;
public Directory() {
stack=new Stack();
id=0;
pid=new Parent();
}
long id;
Parent pid;
private Connection ora_Conn ;
private Statement ora_Stmt;
private ResultSet ora_Rs;
public Directory() {
stack=new Stack();
id=0;
pid=new Parent();
}
/*
得到数据库连接
*/
public void getConn()
{
String DBURL = "";
String DBUSER = "";
String DBPASS = "";
if(ora_Conn==null)
{
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
DBURL = "jdbc:oracle:thin:@127.0.0.1:1521:ora";
DBUSER = "znb";
DBPASS = "12345678";
ora_Conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
ora_Stmt= ora_Conn.createStatement();
System.out.println(".................ok..................");
}
catch (Exception se) {
System.out.println(se);
}
}
}
public void getConn()
{
String DBURL = "";
String DBUSER = "";
String DBPASS = "";
if(ora_Conn==null)
{
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
DBURL = "jdbc:oracle:thin:@127.0.0.1:1521:ora";
DBUSER = "znb";
DBPASS = "12345678";
ora_Conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
ora_Stmt= ora_Conn.createStatement();
System.out.println(".................ok..................");
}
catch (Exception se) {
System.out.println(se);
}
}
}
/*
在数据库中生成属性结构所必须的信息*/
public void GetDirectoryList(String inPath)
{
File Directory = new File(inPath);
File [] FileList;
FileList = Directory.listFiles();
public void GetDirectoryList(String inPath)
{
File Directory = new File(inPath);
File [] FileList;
FileList = Directory.listFiles();
long parentid=-1;
Parent ParentId =new Parent();
String sql;
try{
ParentId.setParentId(pid.getParentId());
parentid = pid.getParentId();
for (int i = 0; i < FileList.length; i++) {
System.out.println("id="+id);
System.out.println("i="+i);
id++;
if (FileList[i].isFile()) {
String fileName = FileList[i].getName(); // 取得文件名
String docPath = inPath + fileName;
sql="insert into officetree values('"+id+"','"+parentid+"','"+fileName+"','"+" +"','"+"','"+"mainFrame"+"','"+"','"+"','"+"')";
ora_Rs=ora_Stmt.executeQuery(sql);
}
else {
String pathss = "";
pathss = inPath;
pathss = pathss + FileList[i].getName() + "//";
sql="insert into officetree values('"+id+"','"+parentid+"','"+FileList[i].getName() +"','"+"','"+"','"+"','"+"','"+"','"+"')";
ora_Rs=ora_Stmt.executeQuery(sql);
stack.push(ParentId);
pid.setParentId(id);
GetDirectoryList(pathss);
pid = (Parent) stack.pop();
}
}
Parent ParentId =new Parent();
String sql;
try{
ParentId.setParentId(pid.getParentId());
parentid = pid.getParentId();
for (int i = 0; i < FileList.length; i++) {
System.out.println("id="+id);
System.out.println("i="+i);
id++;
if (FileList[i].isFile()) {
String fileName = FileList[i].getName(); // 取得文件名
String docPath = inPath + fileName;
sql="insert into officetree values('"+id+"','"+parentid+"','"+fileName+"','"+" +"','"+"','"+"mainFrame"+"','"+"','"+"','"+"')";
ora_Rs=ora_Stmt.executeQuery(sql);
}
else {
String pathss = "";
pathss = inPath;
pathss = pathss + FileList[i].getName() + "//";
sql="insert into officetree values('"+id+"','"+parentid+"','"+FileList[i].getName() +"','"+"','"+"','"+"','"+"','"+"','"+"')";
ora_Rs=ora_Stmt.executeQuery(sql);
stack.push(ParentId);
pid.setParentId(id);
GetDirectoryList(pathss);
pid = (Parent) stack.pop();
}
}
}catch(Exception e)
{
System.out.println(e);
}
}
{
System.out.println(e);
}
}
/*
读取信息到连表并返回
*/
public ArrayList getFileTree()
{
ArrayList list =new ArrayList();
TreeNode Node;
String sql="select * from officetree";
try{
ora_Rs = ora_Stmt.executeQuery(sql);
while (ora_Rs.next()) {
Node=new TreeNode();
Node.setId(ora_Rs.getString("ID"));
Node.setPid(ora_Rs.getString("PID"));
Node.setName(ora_Rs.getString("NAME"));
Node.setUrl(ora_Rs.getString("URL"));
Node.setTarget(ora_Rs.getString("TARGET"));
Node.setTitle(ora_Rs.getString("TITLE"));
Node.setIcon(ora_Rs.getString("ICON"));
Node.setIconOpen(ora_Rs.getString("ICONOPEN"));
Node.setOpened(ora_Rs.getString("OPENED"));
list.add(Node);
}
return list;
}catch(Exception e)
{
System.out.println(e);
}
return null;
}
public ArrayList getFileTree()
{
ArrayList list =new ArrayList();
TreeNode Node;
String sql="select * from officetree";
try{
ora_Rs = ora_Stmt.executeQuery(sql);
while (ora_Rs.next()) {
Node=new TreeNode();
Node.setId(ora_Rs.getString("ID"));
Node.setPid(ora_Rs.getString("PID"));
Node.setName(ora_Rs.getString("NAME"));
Node.setUrl(ora_Rs.getString("URL"));
Node.setTarget(ora_Rs.getString("TARGET"));
Node.setTitle(ora_Rs.getString("TITLE"));
Node.setIcon(ora_Rs.getString("ICON"));
Node.setIconOpen(ora_Rs.getString("ICONOPEN"));
Node.setOpened(ora_Rs.getString("OPENED"));
list.add(Node);
}
return list;
}catch(Exception e)
{
System.out.println(e);
}
return null;
}
public void Con_Close()
{
try{
if(!ora_Conn.isClosed())
{
ora_Conn.close();
}
}
catch(Exception e)
{
System.out.println(e);
}
}
public static void main(String [] argc)
{
Directory d=new Directory();
d.getConn();
d.GetDirectoryList("N:// 行政管理//");
{
try{
if(!ora_Conn.isClosed())
{
ora_Conn.close();
}
}
catch(Exception e)
{
System.out.println(e);
}
}
public static void main(String [] argc)
{
Directory d=new Directory();
d.getConn();
d.GetDirectoryList("N:// 行政管理//");
d.Con_Close();
}
}
}
2.2.4
创建类:Parent
public class Parent {
long parentid;
public Parent() {
parentid=-1;
}
public void setParentId(long id)
{
this.parentid=id;
}
public long getParentId()
{
return this.parentid;
}
long parentid;
public Parent() {
parentid=-1;
}
public void setParentId(long id)
{
this.parentid=id;
}
public long getParentId()
{
return this.parentid;
}
}
2.2.4
创建TreeBean:
public class TreeBean {
public TreeBean() {
}
public Collection getTree()
{
ArrayList list=new ArrayList();
Directory d=new Directory();
d.getConn();
list=d.getFileTree();
}
public Collection getTree()
{
ArrayList list=new ArrayList();
Directory d=new Directory();
d.getConn();
list=d.getFileTree();
d.Con_Close();
return list;
}
}
return list;
}
}
创建jsp:
<%@ page contentType="text/html; charset=GB2312" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c_rt" %>
<html>
<head>
<title>
tree
</title>
</head>
<link rel="StyleSheet" href="ccs/dtree.css" type="text/css" />
<script type="text/javascript" src="js/dtree.js"></script>
<jsp:useBean id="treeBean" scope="session" class="OPFile.TreeBean" />
<%--
<c:set var="treeList" value="${rightBean.treeList}"/>
--%>
<% session.setAttribute("treeList",treeBean.getTree()); %>
<%--
两种方法都可以实现也可以使用Action实现。
--%>
</head>
<body >
<script type='text/javascript'>
tree = new dTree('tree');
tree.config.folderLinks=false;
tree.config.useCookies=false;
<logic:iterate id="a" name="treeList">
tree.add("<bean:write name="a" property="id"/>",
"<bean:write name="a" property="pid"/>",
"<bean:write name="a" property="name"/>",
"<bean:write name="a" property="url"/>",
"<bean:write name="a" property="title"/>",
"<bean:write name="a" property="target"/>",
"<bean:write name="a" property="icon"/>");
</logic:iterate>
document.write(tree);
</script>
</body>
</html>
2.2.5
将下载的 css , js , img文件拷贝到/struts/下
2.2.6
加载Oracle 数据库JDBC驱动:在工程目录下创建Lib文件夹将/Oracle/Ora81/jdbc/lib中的Class12.jar考到Lib中在Jbuilder 9->Project->Project Properties..->Path->Required Libraries->add 加入Class12.jar
2.3
为解决中文问题需要继承ActionServlet 然后重写process方法。
具体如下:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import org.apache.struts.action.ActionServlet;
public class myActionServlet extends ActionServlet {
private static final String CONTENT_TYPE = "text/html; charset=GB2312";
protected void process(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
//
设置字符集编码
request.setCharacterEncoding("GB2312");
super.process(request, response);
}
}
2.5:
Web.inf
中更改servlet配置为:
<servlet-name>action</servlet-name>
<servlet-class>OPFile.myActionServlet</servlet-class>
3
:看运行结果:
先运行Directory类生成目录数。
启动Tomcat 在IE地址栏上输入:http://localhost:8080/struts/tree.jsp
结果: