仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 606|回复: 11
打印 上一主题 下一主题

[学习教程] JAVA网页编程之JSP页面文件目次树源码(递回算法)

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:09:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。js|递回|算法|页面<%@pagecontentType="text/html;charset=gb2312"language="java"import="java.sql.*"errorPage=""%>
<html>
<head>
<title></title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312";>
<scriptlanguage="JavaScript">
<!--
functionMM_goToURL(){//v3.0
vari,args=MM_goToURL.arguments;document.MM_returnValue=false;
for(i=0;i<(args.length-1);i+=2)eval(args[i]+".location="+args[i+1]+"");
}
//-->
</script>
<linkhref="CSS/ip.css"rel="stylesheet"type="text/css">
</head>

<bodytopmargin="0"leftmargin="0"marginheight="0"marginwidth="0"bgcolor="#FFFFFF">
<tableborder="0"cellspacing="0"cellpadding="0"height="80%">
<tr><td>
</td>
</tr>
<trvalign="top">
<tdheight="223"><spanid="menus"></span>
<spanid="view"></span>

</td>
</tr>
<trvalign="bottom">
<td></td>
</tr>
</table>
<divalign="right"></div>
</body>
<script>
/**
*机关树,初值为0
*/
functionisbrother()
{
varis=flase;

}
functiontree(n){
varid=newArray("bar","pad","","","");
if(n==0){//初始化变量
n=1;
i=0;
s="";
}
s+="<tableborder=0cellspacing=0cellpadding=0>";
for(;i<tree_ar.length-1;i++){
vark=(n>=tree_ar[i+1][0])?0:1;
if(tree_ar[i][2]==false)
{
id[2]="";
}
s+="<trid="+id[k]+"value="+i+"><td>"+id[k+2]+"</td><td>"+tree_ar[i][1]+"</td></tr>";////机关节点,注重这里的自界说属性value。感化是简化机关节点的形貌,共享参数数组信息。
if(n>tree_ar[i+1][0]){//若希冀条理年夜于以后条理,停止本条理前往上一条理。
s+="</td></tr></table>";
returntree_ar[i+1][0];
}
if(n<tree_ar[i+1][0]){//若希冀条理小于以后条理,递回进进下一条理。
s+="<trstyle=display:none><td";
if(tree_ar[i][2]==true)
{//假如有下个兄弟节点,则画兄弟节点间的连线
s+="background=images/line.gifborder=0align=absmiddle";
}

s+="></td><td>";
varm=tree(tree_ar[++i][0]);
s+="</td></tr>";
if(m<n){//当递回前往值小于以后条理希冀值时,将发生一连的前往举措
s+="</table>";
returnm;
}
}
}
s+="</table>";
returns;
}
</script>

<scriptfor=padevent=onclick>
//分枝节点的点击呼应
v=this.parentElement.rows[this.rowIndex+1].style;
if(v.display==block){
v.display=none;
this.cells[0].innerHTML="";
view.innerHTML="";//自行修正为参数数组界说的闭合举措
}else{
v.display=block;
this.cells[0].innerHTML="";
//view.innerHTML="<b>"+tree_ar[this.value][1]+"</b>";//自行修正为参数数组界说的睁开举措
}

/**
*以下代码用于封闭已睁开的其他分枝
*如需自行封闭睁开的分枝则从这里间接前往或删往这段代码
*/
if(!tree_ar[this.value].type)//如该节点为初次进进,则纪录地点条理信息
genTreeInfo(this);
varn=1*this.value+1;
for(i=n;i<tree_ar.length-1;i++){//封闭分列在以后节点以后的树
if(tree_ar[i].type=="pad"){
tree_ar[i].obj2.style.display=none;
tree_ar[i].obj1.cells[0].innerHTML="";
}
}
while(tree_ar[--n][0]>1);//回溯到以后树的出发点
while(--n>=0)//封闭分列在以后树的出发点之前的树
if(tree_ar[n].type=="pad"){
tree_ar[n].obj2.style.display=none;
tree_ar[n].obj1.cells[0].innerHTML="";
}


/**纪录条理信息,用以简化遍历树时的庞大的节点形貌**/
functiongenTreeInfo(o){
varel=o.parentElement;
for(vari=0;i<el.rows.length;i++){
if(el.rows[i].id!=""){
tree_ar[el.rows[i].value].type=el.rows[i].id;
}
if(el.rows[i].id=="pad"){
tree_ar[el.rows[i].value].obj1=el.rows[i];
tree_ar[el.rows[i].value].obj2=el.rows[i+1];
}
}
}
</script>

<scriptfor=barevent=onclick>
//无分枝节点的点击呼应
//view.innerHTML="<b>"+tree_ar[this.value][1]+"</b>";////自行修正为参数数组界说的点击举措
//自行修正为参数数组界说的点击举措

</script>


<scriptfor=barevent=onclick>
//无分枝节点的点击呼应
//view.innerHTML="<b>"+tree_ar[this.value][1]+"</b>";//uFFFDuFFFDuFFFDsuFFFDCuFFFDuFFFD?uFFFDQuFFFDuFFFDuFFFDuFFFD?uFFFDuFFFD?uFFFDIuFFFD_??uFFFDuFFFD
</script>

<script>
/**
*基础参数数组,依据详细使用自行扩大
*数据可较复杂的由服务器端供应
*列1:节点条理
*列2:节点题目
*列3:有没有下个兄弟节点
*其他自行扩大
*/
tree_ar=newArray(

<%

FileTreetree=newFileTree();
Stringarray=tree.showFileTree("E:");

%>
<%=array%>
newArray(1,"",false)//为简化停止判别附加的空数据项
);


/***创立菜单***/
menus.innerHTML=tree(0);
</script>
</html>





importjava.io.File;

publicclassFileTree{
publicFileTree(){
}

/**
*
*天生文件目次树
*
*@parampath
*目次路径
*@return前往jsp页面所需的目次数组(JavaScript数组)
*
*/
/*
*有没有兄弟节点
*/
privatebooleanhasNexetBrother=false;
/*
*节点条理
*/
privateintindex=1;

publicStringshowFileTree(Stringpath){

Strings="";
Filedir=newFile(path);
if(dir!=null&&dir.isDirectory()){
StringabsolutePath=dir.getAbsolutePath();


absolutePath=absolutePath.replaceAll("\","\\");//对的处置,在JSP参数传送时和空格会呈现毛病
absolutePath=absolutePath.replaceAll("","@");//对空格的处置,这时候用@替换
s+="newArray("+index+",<ahref=fileList.jsp?path="
+absolutePath+"\target=mainFrame>"+dir.getName()
+"</a>,"+hasNexetBrother+"),";
hasNexetBrother=false;
index++;
File[]dirs=dir.listFiles();
java.util.Listlist=newjava.util.ArrayList();
for(inti=0;i<dirs.length;i++){
if(dirs[i].isDirectory()){//往除文件.失掉文件夹列表

list.add(dirs[i]);

}
}
for(inti=0;i<list.size();i++){
if(i!=list.size()-1)
hasNexetBrother=true;
Stringdirpath=((File)list.get(i)).getAbsolutePath();
s+=showFileTree(dirpath);//对子文件夹递回处置

}
index--;
}

returns;
}
}
你对java乐观有点盲目。java的关键就是在服务器上表现优异,而且它提供了整个开发所需要的工具。应该是说,看哪天。net有没有机会赶上java。
若天明 该用户已被删除
沙发
发表于 2015-1-20 15:28:48 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
柔情似水 该用户已被删除
板凳
发表于 2015-1-25 10:59:32 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
爱飞 该用户已被删除
地板
发表于 2015-1-25 16:35:37 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
莫相离 该用户已被删除
5#
发表于 2015-1-28 05:49:27 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
愤怒的大鸟 该用户已被删除
6#
发表于 2015-1-31 06:30:49 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
第二个灵魂 该用户已被删除
7#
发表于 2015-2-6 17:48:43 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
变相怪杰 该用户已被删除
8#
发表于 2015-2-11 13:13:14 | 只看该作者
是一种使用者不需花费很多时间学习的语言
不帅 该用户已被删除
9#
发表于 2015-2-13 18:48:34 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
admin 该用户已被删除
10#
发表于 2015-3-11 14:16:56 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
兰色精灵 该用户已被删除
11#
发表于 2015-3-18 18:08:16 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
谁可相欹 该用户已被删除
12#
发表于 2015-3-26 07:36:51 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 14:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表