网站地图,在线留言 网站首页 · 网站地图 · 在线咨询 · 付款方式
今 天 是:     
web2.0开发技术
            ·网 站 开 发 技 术
首页 >> 网站开发技术

web2.0开发技术

使用 Ajax 技术实现动态获取数据的树状菜单。当展开菜单时,自动向服务器发送请求,查询该菜单下的子菜单,并在客户端显示子菜单,而无需刷新整个页面。
源码结构说明

package book.treeview;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

public class Category implements TreeviewElement {
protected int ID;//代表数据库中category_id列;
protected int parentID;//代表数据库中parent_category_id列;
protected String categoryName;//代表数据库中category_name列;
protected String activeStatus="Y";//代表数据库中active_status列;
public Category() {//无参的构造方法
this.ID = -1;
}
public Category(int id) {//有参的构造方法,参数为portlet_id
this.ID = id;
if (!FromDb())//如果有找到该id的porlet
this.ID = -1;
}
public boolean FromDb() {//从数据库中读出,并更新bean
int row = -1;
//读记录的sql语句
String sql = "select * from product_category where category_id=" + this.ID
+ " and active_status='Y'";
ResultSet rs = DbManager.getResultSet(sql);//执行sql语句并返回ResultSet
try {
rs.last();//移动到最后一行
row = rs.getRow();//得到总记录数
if (row == 1) {//如果只查询到一条记录,则代表该记录存在并更新该类的属性
this.parentID = rs.getInt("PARENT_CATEGORY_ID");
this.categoryName = rs.getString("CATEGORY_NAME");
this.activeStatus = rs.getString("ACTIVE_STATUS");
return true;
} else
return false;
} catch (SQLException e) {
e.printStackTrace();
return false;
} finally {
try {//最后关闭ResutltSet,Statement.并释放连接
if (rs != null)
rs.close();
if (rs.getStatement() != null)
rs.getStatement().close();
DbManager.releaseConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public String getActiveStatus() {
return activeStatus;
}
public void setActiveStatus(String activeStatus) {
this.activeStatus = activeStatus;
}
public String getCategoryName() {
return categoryName;
}
public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}
public int getID() {
return ID;
}
public void setID(int id) {
ID = id;
}
public int getParentID() {
return parentID;
}
public void setParentID(int parentID) {
this.parentID = parentID;
}
public String getNodeName() {
return getCategoryName();
}
public boolean canExpand() {
String sql ="select category_id from product_category where parent_category_id="+getID();
ResultSet rs = DbManager.getResultSet(sql);//执行sql语句并返回ResultSet
try {
rs.last();//移动到最后一行
int row = rs.getRow();//得到总记录数
if (row <= 0)
return false;
else
return true;
} catch (SQLException e) {
e.printStackTrace();
return false;
} finally {
try {//最后关闭ResutltSet,Statement.并释放连接
if (rs != null)
rs.close();
if (rs.getStatement() != null)
rs.getStatement().close();
DbManager.releaseConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public TreeviewElement[] getChildren() {
String sql ="select category_id from product_category where parent_category_id="+getID();
ResultSet rs = DbManager.getResultSet(sql);//执行sql语句并返回ResultSet
try {
rs.last();//移动到最后一行
int row = rs.getRow();//得到总记录数
if (row <= 0) {//如果没有子结点
return null;//返回null
}
else{//如果有子结点
Vector vData = new Vector();
rs.beforeFirst();
while (rs.next())
vData.add(""+rs.getInt("CATEGORY_ID"));
TreeviewElement[] children = new TreeviewElement[vData.size()];
for (int i=0;i<vData.size();i++)
{
int id = Integer.parseInt((String)vData.get(i));
children[i] = new Category(id);
}
return children;//返回该记录的所有子结点
}
} catch (SQLException e) {
e.printStackTrace();
return null;
} finally {
try {//最后关闭ResutltSet,Statement.并释放连接
if (rs != null)
rs.close();
if (rs.getStatement() != null)
rs.getStatement().close();
DbManager.releaseConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

import java.sql.*;

public class DbManager {
//类成员Connection
protected static Connection conn;
//mysql的驱动类,定义为常量
public static final String CLASS_NAME = "com.mysql.jdbc.Driver";
//数据库的连接地址,定义为常量
public static final String CONNET_STR = "jdbc:mysql://localhost/treeview";
//获得Connetion
public static Connection getConnection() {
try {
Class.forName(CLASS_NAME);//使用类反射加载该驱动类
//获得一个Connection
conn = DriverManager.getConnection(CONNET_STR, "root", "");
return conn;//返回该Connection
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
//传入查询数据库的sql语句,返回ResultSet
public static ResultSet getResultSet(String sql) {
boolean bSuccess = true;
Statement stmt = null;//声明Statement stmt
ResultSet rs = null;//声明ResultSet rs
Connection con = getConnection();//调用getConnetion()方法获得一个Connetion
if (con == null)//如果Connection 为null则返回假
bSuccess = false;
if (bSuccess) {
try {
stmt = con.createStatement();//通过Connection创建一个Statemet
rs = stmt.executeQuery(sql);//执行查询语句,
} catch (SQLException e) {
e.printStackTrace();
bSuccess = false;
}
}
if (bSuccess)//如果执行成功,则返回rs
return rs;
else
return null;
}
//传入执行数据更新的语句,返回更新结果,真为成功执行
public static boolean excute(String sql) {
boolean bSuccess = true;
Statement stmt = null;//声明Statement stmt
Connection con = getConnection();//调用getConnetion()方法获得一个Connetion
if (con == null)//如果Connection 为null则返回假
bSuccess = false;
if (bSuccess) {
try {
stmt = con.createStatement();//通过Connection创建一个Statemet
bSuccess = stmt.execute(sql);//执行更新数据操作
} catch (SQLException e) {
e.printStackTrace();
bSuccess = false;
}
}
return bSuccess;
}
//释放Connection
public static void releaseConnection() {
try {
if (conn != null)// 如果Connetion 不为null则关闭Connection
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

}
public interface TreeviewElement {
public String getNodeName( );//该结点的名称
public boolean canExpand();//是否能够展开
public TreeviewElement[] getChildren();//所有的一级子结点
public int getID();//结点的唯一标识
}

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

public class treeviewRender {
static public String renderStatic(TreeviewElement treeElmt, boolean bHidden) {
StringBuffer content = new StringBuffer();
content.append("<li id=" + treeElmt.getID() + ">");//显示li元素
if (bHidden && treeElmt.canExpand())//如果可以展开并且初始化为隐藏,则显示展开图片,并添加showHide事件
content.append("<img src=images/plus.gif onClick=\"showHide('"
+ treeElmt.getID() + "')\">");
else if (treeElmt.canExpand())//如果可以展开,则显示折叠图片,并添加showHide事件
content.append("<img src=images/minus.gif onClick=\"showHide('"
+ treeElmt.getID() + "')\">");
else//否则显示空白图片
content.append("<img src=images/blank.gif>");
content.append("<img src=images/folder.gif><a href=\"#\"");//添加文件夹图片
if (treeElmt.canExpand())//如果可以展开,为节点添加showHide事件
content.append("onClick=\"showHide('" + treeElmt.getID() + "')\"");
content.append(">" + treeElmt.getNodeName() + "</a>");
if (treeElmt.canExpand()) {//如果可以展开,则用UL标记显示子结点
content.append("<ul");
if (bHidden)
content.append(" style=\"display:none;\" ");
content.append(">");
TreeviewElement[] elmts = treeElmt.getChildren();//获得此结点的子节点
for (int i = 0; i < elmts.length; i++)
content.append(renderStatic(elmts[i], bHidden));//递归调用显示子节点
content.append("</ul>");
}
content.append("</li>");//结束显示<li>元素
return content.toString();
}

static public TreeviewElement[] getTopCategory() {

String sql = "select category_id from product_category where parent_category_id=0";
ResultSet rs = DbManager.getResultSet(sql);// 执行sql语句并返回ResultSet
try {
rs.last();// 移动到最后一行
int row = rs.getRow();// 得到总记录数
if (row <= 0) {
return null;
} else {
Vector vData = new Vector();
rs.beforeFirst();
while (rs.next())
vData.add("" + rs.getInt("CATEGORY_ID"));
TreeviewElement[] children = new TreeviewElement[vData.size()];
for (int i = 0; i < vData.size(); i++) {
int id = Integer.parseInt((String) vData.get(i));
children[i] = new Category(id);
}
return children;
}
} catch (SQLException e) {
e.printStackTrace();
return null;
} finally {
try {// 最后关闭ResutltSet,Statement.并释放连接
if (rs != null)
rs.close();
if (rs.getStatement() != null)
rs.getStatement().close();
DbManager.releaseConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}

}
static public String renderSimple(TreeviewElement treeElmt) {
StringBuffer content = new StringBuffer();
content.append("<li id=" + treeElmt.getID() + "><a href=\"#\">");
content.append( treeElmt.getNodeName() + "</a>");
if (treeElmt.canExpand()) {
content.append("<ul>");
TreeviewElement[] elmts = treeElmt.getChildren();
for (int i = 0; i < elmts.length; i++)
content.append(renderSimple(elmts[i]));
content.append("</ul>");
}
content.append("</li>");
return content.toString();
}
static public String renderTreeViewAjax(TreeviewElement treeElmt,boolean bRenderChildren) {
StringBuffer content = new StringBuffer();
content.append("<li id="+treeElmt.getID()+">");
if (treeElmt.canExpand())
content.append("<img src=images/plus.gif onClick=\"getSubTree('"+treeElmt.getID()+"')\">");
else
content.append("<img src=images/blank.gif>");
content.append("<img src=images/folder.gif><a href=\"#\"");
if (treeElmt.canExpand())
content.append(" onClick=\"getSubTree('"+treeElmt.getID()+"')\"");
content.append(">"+treeElmt.getNodeName()+"</a>");

if ( bRenderChildren&&treeElmt.canExpand( ))
{
content.append("<ul>");
TreeviewElement[] elmts = treeElmt.getChildren();
for (int i=0;i<elmts.length;i++)
content.append(renderTreeViewAjax(elmts[i],false));
content.append("</ul>");
}

content.append("</li>");
return content.toString();
}
}

 



下一页
威德网络是一家致力于网站建设、互联网应用系统开发及应用软件开发于一体网络科技公司,威德网络提供网站建设与网站 推广相结合的网站建设方案,面向政府及企、事业单位网站建设服务,由专业网站设计人员结合搜索引擎优化经验为您制作网站; 威德网络联拥有专业水平的网站建设队伍,具有丰富的网站设计制作经验,设计风格可以根据客户的要求,为我们服务的客户提 供一流的网站建设和网页设计服务,认真聆听每一位客户的需求,竭尽我们所能为您提供最贴心、最便利的服务,让您轻松坐享成功!
·客服专线
  010-69799063(直线)
  010-69799063-01/02/03
·咨询专线
  13691136792
  13126606892
  13671320382
·友情链接
  北京网站建设
  上海网站建设
  河北网站建设
  天津网站建设
  威德软件网
  IT信息网
联系我们 | 法律公告 | 诚聘英才 | 网站建设 | 网站推广 | 虚拟主机 | 域名注册 | 作品展示 | 网站地图 | 友情连接
+ 北京网站建设 网站建设 北京网页设计 网页设计 网页制作 北京网页制作 虚拟主机 域名注册
+ 咨询电话:86(10)69799063(业务直线) 13691136792 13671320382 传真:69799063
+ 地址:北京市海淀区学清路16号 威德友情链接联盟 京 ICP 证 06017113 号
+ Copyright ? 2006 wisdom.com Inc. All rights reserved. 威德网络