资源描述
JSP树形菜单的实现doc.docx
《JSP树形菜单的实现doc.docx》由会员分享,可在线阅读,更多相关《JSP树形菜单的实现doc.docx(6页珍藏版)》请在冰豆网上搜索。
JSP树形菜单的实现doc
JSP树形菜单的实现
1、原理简介
dtree是一个免费的javascript脚本,只需定义有限的几个参数,就可以做出漂亮的树型菜单。
下载目录:
以下是dtree的用法示例:
1)初始化菜单
--
varTree=newArray; Tree[0] ="1|0|Page1|#";
Tree[1] ="2|1|Page1.1|#";
Tree[2] ="3|1|Page1.2|#";
Tree[3] ="4|3|Page1.2.1|#";
2)调用函数
--
createTree(Tree,1,7); //startsthetreeatthetopandopenitatnodenr.7
//-->
显然,如果用动态的脚本来初始化菜单数组(asp,jsp均可),那就可以很方便的实现动态的树型菜单了。
2。
jsp动态实现
分以下步骤实现动态的树型菜单:
1)在数据库建tree_info表,有nodeId,parentNodeId,nodeName,nodeUrl四个字段,来存储节点信息。
2)编写java类,用于从数据库找出节点信息,并且生成javascript脚本。
3)编写tag类。
用于封装逻辑,简化jsp的开发。
4)建一个web程序进行测试。
3。
详细过程
1)在数据库建表,脚本如下:
CREATETABLE`test`.`tree_info`(
`node_id`INTEGERUNSIGNEDNOTNULLDEFAULT-1,
`parent_id`INTEGERUNSIGNEDNOTNULLDEFAULT-1,
`node_name`VARCHAR(45)NOTNULL,
`ref_url`VARCHAR(45)NOTNULL,
PRIMARYKEY(`node_id`)
)
我使用mysql数据库,如果脚本细节有出入,请自行修改
按照上面的dTree示例插入数据
2)编写TreeInfo.java,这个类用于封装节点信息
packagecom.diegoyun.web.tree;
publicclassTreeInfo{
privateintnodeId=-1;//nodeid
privateintparentId=-1;//parentId
privateStringnodeName=null;//nodename
privateStringurl=null;//urlreferences
publicintgetNodeId(){
returnnodeId;
}
publicvoidsetNodeId(intnodeId){
this.nodeId=nodeId;
}
publicintgetParentId(){
returnparentId;
}
publicvoidsetParentId(intparentId){
this.parentId=parentId;
}
publicStringgetNodeName(){
returnnodeName;
}
publicvoidsetNodeName(StringnodeName){
this.nodeName=nodeName;
}
publicStringgetUrl(){
returnurl;
}
publicvoidsetUrl(Stringurl){
this.url=url;
}
}
编写TreeUtil.java,用于从数据库得到节点信息,封装到TreeInfo对象,并生成javascript脚本
TreeUtil.java
packagecom.diegoyun.web.tree;
importjava.util.Collection;
importjava.util.ArrayList;
importjava.util.Iterator;
importjava.util.List;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.Connection;
importjava.sql.DriverManager;
publicclassTreeUtil{
publicstaticListretrieveNodeInfos(){
Listcoll=newArrayList();
StringdriverName="com.mysql.jdbc.Driver";
Stringhost="localhost";
Stringport=":
3306";
StringserverID="test";
StringuserName="root";
StringuserPwd="root";
Stringurl="jdbc:
mysql:
//"+host+port+"/"+serverID;
Connectionconn=null;
PreparedStatementps=null;
ResultSetrs=null;
try{
Class.forName(driverName).newInstance();
conn=DriverManager.getConnection(url,userName,userPwd);
Stringsql="select*fromtree_info";
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
TreeInfoinfo=null;
while(rs!
=null&&rs.next()){
info=newTreeInfo();
info.setNodeId(rs.getInt
(1));
info.setParentId(rs.getInt
(2));
info.setNodeName(rs.getString(3));
info.setUrl(rs.getString(4));
coll.add(info);
}
// if(rs!
=null){
// rs.close();
// rs=null;
// }
// if(ps!
=null){
// ps.close();
// ps=null;
// }
}catch(Exceptione){
System.out.println(e);
}
returncoll;
}
publicstaticStringcreateTreeInfo(Listalist){
StringBuffercontents=newStringBuffer();
contents.append("
--\n");
contents.append("varTree=newArray;");//createaarrayinjavascript
TreeInfoinfo=null;
for(intmax=alist.size(),i=0;i info=(TreeInfo)alist.get(i);
//defineelementsofarray
contents.append("Tree[");
contents.append(i);
contents.append("]=\"");
contents.append(info.getNodeId());
contents.append("|");
contents.append(info.getParentId());
contents.append("|");
contents.append(info.getNodeName());
contents.append("|");
contents.append(info.getUrl());
contents.append("\";");
}
contents.append("docment.writer(Tree);");
contents.append("//-->");
returncontents.toString();
}
publicstaticvoidmain(String[]args){
Listalist=TreeUtil.retrieveNodeInfos();
// TreeInfoinfo=null;
// for(Iteratori=c.iterator();i.hasNext();){
// info=(TreeInfo)i.next();
// System.out.println("*****"+info.getNodeName());
// }
System.out.println(TreeUtil.createTreeInfo(alist));
}
}
3)编写标签类
InitTreeTag.java
packagecom.diegoyun.web.taglibs;
importcom.diegoyun.web.tree.TreeUtil;
importjavax.servlet.jsp.tagext.TagSupport;
importjavax.servlet.jsp.JspException;
importjava.io.IOException;
publicclassInitTreeTagextendsTagSupport{
publicintdoEndTag()throwsJspException{
StringBuffertree=newStringBuffer();
tree.append("\n");
tree.append(TreeUtil.createTreeInfo(TreeUtil.retrieveNodeInfos()));
tree.append("\n");
try{
pageContext.getOut().println(tree.toString());
}catch(IOExceptionioe){
ioe.printStackTrace();
}
returnsuper.doEndTag();
}
}
ShowTreeTag.java:
packagecom.diegoyun.web.taglibs;
importjavax.servlet.jsp.tagext.TagSupport;
importjavax.servlet.jsp.JspException;
importjava.io.IOException;
publicclassShowTreeTagextendsTagSupport{
publicintdoEndTag()throwsJspException{
StringBufferbuffer=showTree();
try{
pageContext.getOut().println(buffer.toString());
}
catch(IOExceptionioe){
ioe.printStackTrace();
}
returnsuper.doEndTag();
}
privateStringBuffershowTree(){
StringBuffersb=newStringBuffer();
sb.append("\n");
sb.append("\n");
sb.append("
--\n");
sb.append("createTree(Tree);\n");
sb.append("//-->\n");
sb.append("\n");
sb.append("
\n");