JSP树形菜单的实现doc.docx
- 文档编号:3525997
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:6
- 大小:17KB
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(" 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(" sb.append(" sb.append(" --\n"); sb.append("createTree(Tree);\n"); sb.append("//-->\n"); sb.append("\n"); sb.append("
returnsb;
}
}
标签的tld如下:
xmlversion="1.0"encoding="ISO-8859-1"?
>
DOCTYPEtaglib
PUBLIC"-//SunMicrosystems,Inc.//DTDJSPTagLibrary1.2//EN"
"
--initTreeTag-->
--ShowTreeTag-->
4)建立web过程,编写jsp进行测试。
index.jsp如下:
<%@pagelanguage="java"%>
<%@tagliburi="/WEB-INF/tlds/tree.tld"prefix="tree"%>
init/>
Treeexample:
show/>
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JSP 树形 菜单 实现 doc
![提示](https://static.bdocx.com/images/bang_tan.gif)