|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
结论:和PHP一样,ASP简单而易于维护,很适合小型网站应用,通过DCOM和MTS技术,ASP甚至还可以完成小规模的企业应用,但ASP的致命缺点就是不支持跨平台的系统,在大型项目开发和维护上非常困难。静态|网页1、静态分级目次及其特性
所谓分级目次,实在人人其实不生疏,熟习Windows操纵体系的人,必定对Windows下文件体系的资本办理器有印象,分级目次的显现(以下图所示)就象资本办理器一样是一个树形布局。
经由过程点击“文件夹”图标,你就能够看到这个种别下的子种别,云云递回直到最末梢的结点。
这类分级目次在很多收集使用中都很主要,它次要有以下长处:
1.直不雅性强:即便一个不懂得盘算机,不常常上彀的人经由过程这类分级目次显现也不会在超文本的陆地中丢失偏向,而可以便利地找到本人要往的中央。
2.便于办理:关于体系的编写和保护职员而言,这类布局也更有益于程序模块化的完成。
总之,一个界面友爱的网页或使用程序是离不开分级目次的,今朝很多网站也在本人的页面上接纳了这类情势,可是年夜多半的分级目次都是静态的,即它们都是用纯真的javascript或html写成的,因而当网页的内容有所变更时,必需修正网页的源程序代码,如许做的坏处是不言而喻的,但最次要的弱点是给页面的保护职员增添了很多不用要的事情量,下降了事情的效力,因而在这里次要先容一种用ASP手艺和javascript来完成静态分级目次的办法。静态分级目次,即网页上所显现分级目次的各个结点是以必定的数据布局存储在数据库中的,因而就能够经由过程对数据库举行响应的增、删、改操纵来把持网页上的显现内容,到达便利、直不雅、快速的目标。
用一句话来归纳综合静态分级目次的特性,那就是在充实发扬原有静态分级目次长处的基本上填补了它在天真性和办理保护性上的不敷。
2、体系整体先容
1.体系情况
服务器:WindowsNT,安装有IIS5.0或IIS6.0,Oracle8数据库,ODBC
用户端:任何操纵体系,装有TCP/IP协定,有Internet扫瞄器(如IE、NC)
2.相干手艺:ASP(ActiveServerPages),Oracle数据库,SQL言语,JavaScript,HTML,CSS等。
3.相干开辟工具:Dreamweaver,Photoshop等。
4.相干的数据布局
文件种别称号数据库:law_type_name
字段称号字段寄义
Typekey种别关头字(主键)
Typename种别称号
F_point前向指针,唆使该种别上一级种别的关头字
B_point后向指针,唆使该种别的上司是种别仍是详细文件
0:申明其上司也是种别,在本库中寻觅
1:申明其上司为详细文件,应在功令律例数据库
(law_rule)中寻觅
功令律例数据库:law_rule
字段称号字段寄义
id文件序号(主键)
Title文件题目
Content文件内容
Pubdate公布日期
Puborg公布单元
Regdate挂号日期
Update_date最初修正工夫
Typekey文件所属种别
静态分级目次的数据布局决意了它次要由两种分歧的节点组成,一种是详细的文档节点,一种是复合型的文件夹节点。文档节点是静态分级目次的神经末梢,当扫瞄者单击如许的节点时,相称于单击一个超等链接,扫瞄器会在右侧的帧中主动装进响应种别的功令律例文件供用户查询。文件夹节点下能够有多少个子节点,这些子节点能够是文档节点,也能够是文件夹节点,如许就能够构成一个完全的分级目次了。
静态分级目次中的每个节点都是一个具有4+n个元素的数组,个中纪录了节点的范例、称号、以后形态和附属干系等信息,个中各个元素的寄义以下所示:
node[0]=0/1代表这个节点是封闭仍是翻开的,0代表封闭,1代表翻开;
node[1]=0/1代表这个文件夹是封闭仍是翻开的,0代表封闭,1代表翻开;
node[2]临时没成心义;
node[3]代表该节点的称号;
node[4]......node[n]代表了该节点的n个子节点。
总之,一个静态分级目次的数据布局可用以下的树形布局来暗示:
3、相干算法和函数申明
当将default.asp这个页面载进扫瞄器时,起首挪用initializetree()函数来完成静态分级目次的创立和显现。这个函数进一步伐用由ASP天生的generatetree()函数,该函数经由过程ADO从头至尾扫描law_type_name中的数据,并由今生成包括一切节点的数组,在数组已存在的基本上挪用Redrawtree()等函数就能够递回地在页面上显现分级目次了。
上面是对次要用到的一些函数的具体先容:
generatetree()函数,使用ASP创立每一个节点的数组,并创建起各节点之间的接洽,程序代码以下:
<%
setmyconn=server.createobject("adodb.connection")
//创立ADO的connection工具的实例myconn
setrs=server.createobject("adodb.recordset")
//创立ADO的recordset工具的实例rs
rs.open"select*fromlaw_type_nameorderby
typekey",myconn,adopenstatic//将law_type_name中的数据赋给rs
cr=chr(13)&chr(10)//回车换行符
response.write("<scriptlanguang=Javascript>"&cr)
response.write("functiongeneratetree(){"&cr)
response.write("varaux;"&cr)
response.write("aux=newArray();"&cr)
i=1
whilenotrs.eof//入手下手逐一扫描law_type_name中的数据
ifrs("f_point")=0then//天生最基本的节点,其他节点都是它的子孙
response.write("folderstree=foldernode("
&trim(rs("typename"))&");"&cr)
else
ifrs("b_point")=0then//若该节点为文件夹节点
ifrs("f_point")=1then//若该节点是根的间接子节点
response.write("aux["&rs("typekey")&"]=appendchild
(folderstree,foldernode("&trim(rs("typename"))&"));"&cr
//到场文件夹节点
else
response.write("aux["&rs("typekey")&"]=
appendchild(aux["&rs("f_point")&"],
foldernode("&trim(rs("typename"))&"));"&cr
//到场文件夹节点
endif
else
ifrs("f_point")=1then
response.write("appendchild(folderstree,generatedocentry(0,"&
trim(rs("typename"))&",,"&trim(rs("typekey"))&"));"&cr)
//到场文档节点
else
response.write("appendchild(aux["&rs("f_point")&"],
generatedocentry(0,"&trim(rs("typename"))&",,"
&trim(rs("typekey"))&"));"&cr)//到场文档节点
endif
endif
endif
rs.movenext
wend
response.write("}")
response.write("</script>")
rs.close//开释工具资本
myconn.close
%>
//******************************
//上面是机关节点的帮助函数
functionfoldernode(name)//用来天生文件夹节点
{
vararrayaux;
arrayaux=newArray();
arrayaux[0]=0;
arrayaux[1]=0;
arrayaux[2]=0;
arrayaux[3]=name;
returnarrayaux;
}
functiongeneratedocentry(icon,docdescription,link,num)
//用来天生文档节点
{
varretstring="";
retstring="<imgsrc=http://www.163design.net/a/law_rule/pic/doc.gif";
//用来显现文档节点前的小图标
retstring=retstring+"border=0>"+""+"<tdnowrap>"+
"<ahref=typeinquest.asp?typekey="+num+
"target=folderframe>"+docdescription+"</a>"+"";
//显现带超链接的文档节点
returnretstring;
}
functionappendchild(parent,child)
//创建文件夹节点与文档节点之间的干系
{
parent[parent.length]=child;
returnchild;
}
//*************************************
//当网页载进扫瞄器时挪用这个函数
functioninitializetree()//页面的初始化
{
generatetree();
top.openbranch("功令律例");//显现根节点
redrawtree();//显现全部静态分级目次
}
//**************************************
//显现静态分级目次
functionredrawtree()
{
vardo</p>因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQLServer还有更多的扩展,可以用存储过程,数据库大小无极限限制。 |
|