帮个忙:不难;将以下的表用递归的形式写成下列的表示(200分,关键我对递归不甚了解) 看看这里,http://community.csdn.net/Expert/TopicView.asp?id=3190905 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这样吧,可否不使用递归也可以实现以上目录树的结构!!!我的代码是<%!String sId;String sName;String sTemp;ResultSet rset=null;int iCount=0;int iLen = 0;int iLength = 3;int iLens=3;%><div><span><input type=checkbox>企业</span><UL id=root><% rset=conn.executequery("select * from tree order by id");//主目录信息 while (rset.next()) { sId = rset.getString("id"); iLen = sId.length(); sName=rset.getString("name"); ResultSet rs = conn.executequery("select count(*) as icount from tree where id like: '"+sId+"%'"); if(rs.next()) iCount = rs.getInt("icount");//得到是否有下级目录 if(iCount==1) {%> <LI><span><input type=checkbox value=<%=sId%>> <%=sName%></span><% } if((iCount>1)&&((iLength-iLen==0)||(iLen % iLength==0))) {%> <LI><span><input type=checkbox value=<%=sId%>> <%=sName%></span> <UL><% } if(iLen-iLens<0) {%> </UL><% } iLens = iLen; }%></UL></div>但是在没有子目录情况下就会出错!!如何更改?或者有更好的解决办法 我没有连接数据库,把数据全放到了ArrayList里了,已经调试通过,你看看吧嫌效率不高的话自己优化吧TreeTest.java===================================================================package treetest;import java.sql.*;import java.util.*;public class TreeTest { StringBuffer buffer = new StringBuffer(); String result; ArrayList codeList = new ArrayList(); ArrayList nameList = new ArrayList(); public String getResult() { return buffer.toString(); } public TreeTest() { codeList.add("001"); nameList.add("生产部门"); codeList.add("001001"); nameList.add("生产一部"); codeList.add("001002"); nameList.add("生产二部"); codeList.add("002"); nameList.add("业务部门"); codeList.add("002001"); nameList.add("业务部门1"); codeList.add("002002"); nameList.add("业务部门2"); codeList.add("002003"); nameList.add("业务部门3"); codeList.add("003"); nameList.add("市场部门"); codeList.add("003001"); nameList.add("市场部门1"); codeList.add("003002"); nameList.add("市场部门2"); codeList.add("004"); nameList.add("开发部门"); codeList.add("004001"); nameList.add("开发部门1"); codeList.add("005"); nameList.add("策划部门"); codeList.add("005001"); nameList.add("策划部门 1"); codeList.add("005002"); nameList.add("策划部门 2"); codeList.add("006"); nameList.add("企业规划部"); codeList.add("006001"); nameList.add("企业规划部 1"); codeList.add("006002"); nameList.add("企业规划部 2"); codeList.add("006003"); nameList.add("企业规划部 3"); codeList.add("006003001"); nameList.add("企业规划部 3001"); codeList.add("006003001001"); nameList.add("企业规划部 3001001"); codeList.add("006003001001001"); nameList.add("企业规划部 3001001001"); codeList.add("006003002"); nameList.add("企业规划部 3002"); codeList.add("006004"); nameList.add("企业规划部 4"); buffer.append("<div>\n"); buffer.append("<span><input type=checkbox>系统目录</span>\n"); buffer.append("<UL id=root>"); makeTree(codeList,nameList,1,null); buffer.append("</UL>"); buffer.append("</div>\n"); } public void makeTree(ArrayList cList,ArrayList nList,int level,String parentCode){ int len = level*3; String space = ""; for(int n = 1; n < level;n++){ space += " "; } for(int i = 0;i < cList.size();i++) { String code = (String)cList.get(i); String name = (String)nList.get(i); if(code.length() != len) continue; if(level == 1){ buffer.append(space + "<LI><span><input type=checkbox>" + name + "</span>\n"); if(hasChild(code,cList)){ buffer.append(space + "<UL>\n"); makeTree(cList, nList, level + 1, code); buffer.append(space + "</UL>\n"); } }else if(code.startsWith(parentCode)){ buffer.append(space + "<LI><span><input type=checkbox>" + name + "</span>\n"); if(hasChild(code,cList)){ buffer.append(space + "<UL>\n"); makeTree(cList, nList, level + 1, code); buffer.append(space + "</UL>\n"); } } } } public boolean hasChild(String c,ArrayList cList){ boolean hasChild = false; Iterator iter = cList.iterator(); while(iter.hasNext()){ String tmpCode = (String) iter.next(); if((tmpCode.length() == c.length() + 3 )&&tmpCode.startsWith(c)){ return true; } } return hasChild; }}test.jsp------------------------------------------------------------------<%@ page contentType="text/html; charset=GBK" %><html><head><title>jsp1</title><SCRIPT LANGUAGE="JavaScript"><!--function checkSelect(){ var elm = event.srcElement.parentNode; checkChildrenRecurve(elm); checkRootRecurve(document.getElementById("root"));}function checkChildrenRecurve(elm){ var li = elm.parentNode; var ul = li.lastChild; if (ul.tagName != "UL") return; var lis = ul.children; for (var i=0;i<lis.length;i++){ lis[i].firstChild.firstChild.checked=elm.firstChild.checked; checkChildrenRecurve(lis[i].firstChild) }}function checkRootRecurve(ul){ if (ul.tagName != "UL") { ul.parentNode.firstChild.firstChild.allChecked = ul.parentNode.firstChild.firstChild.checked; ul.parentNode.firstChild.firstChild.allUnChecked = !ul.parentNode.firstChild.firstChild.checked; return; } var lis = ul.children; var allChecked = true; var allUnChecked = true; for (var i=0;i<lis.length;i++){ checkRootRecurve(lis[i].lastChild); allChecked = allChecked && lis[i].firstChild.firstChild.checked && lis[i].firstChild.firstChild.allChecked; allUnChecked = allUnChecked && !lis[i].firstChild.firstChild.checked && lis[i].firstChild.firstChild.allUnChecked; } ul.parentNode.firstChild.firstChild.allChecked=allChecked; ul.parentNode.firstChild.firstChild.allUnChecked=allUnChecked; if (allChecked || allUnChecked){ ul.parentNode.firstChild.firstChild.checked=allChecked; ul.parentNode.firstChild.firstChild.disabled=false; ul.parentNode.firstChild.childStatus=false; }else{ ul.parentNode.firstChild.firstChild.disabled=true; ul.parentNode.firstChild.childStatus=true; ul.parentNode.firstChild.firstChild.checked=true; }}function enableFirstChild(){ this.childStatus = this.firstChild.disabled; this.firstChild.disabled=false;}function recoverFirstChild(){ this.firstChild.disabled = this.childStatus;}function init(){ var elms = document.getElementsByTagName("INPUT"); for (var i=0;i<elms.length;i++) elms[i].onclick=checkSelect; var elms = document.getElementsByTagName("SPAN"); for (var i=0;i<elms.length;i++){ elms[i].onmouseover=enableFirstChild; elms[i].onmouseout=recoverFirstChild; }}//--></SCRIPT></head><jsp:useBean id="treeBean" scope="request" class="treetest.TreeTest" /><body onload="init()"><%out.println(treeBean.getResult());%></body></html> .jsp文件里面有个文件目录,怎么加超链接可以直接跳到对应文件目录下 jsp传到aciton时的乱码问题 关于表单input text 的问题,急需高手帮忙 【CA用户认证】 各位大侠请进!!! java io流 关闭问题 ArrayList中内容太多,想分页显示怎么办? 简单传值问题roleDataOperation.jsp?flag=11 在java文件中对比文件名是否相同,但不区分大小写,是那个方法? html中超链接提交给servlet出现乱码 在servlet中用requset如何获取时间类型的数据啊 求救,还是连接池。 怎么实现EXCEL批量导入呀?急!!!
<%!
String sId;
String sName;
String sTemp;
ResultSet rset=null;
int iCount=0;
int iLen = 0;
int iLength = 3;
int iLens=3;
%>
<div>
<span><input type=checkbox>企业</span>
<UL id=root>
<%
rset=conn.executequery("select * from tree order by id");
//主目录信息
while (rset.next())
{
sId = rset.getString("id");
iLen = sId.length();
sName=rset.getString("name");
ResultSet rs = conn.executequery("select count(*) as icount from tree where id like: '"+sId+"%'");
if(rs.next()) iCount = rs.getInt("icount");//得到是否有下级目录
if(iCount==1)
{
%>
<LI><span><input type=checkbox value=<%=sId%>> <%=sName%></span>
<%
}
if((iCount>1)&&((iLength-iLen==0)||(iLen % iLength==0)))
{
%>
<LI><span><input type=checkbox value=<%=sId%>> <%=sName%></span>
<UL>
<%
}
if(iLen-iLens<0)
{
%>
</UL><%
} iLens = iLen;
}
%>
</UL>
</div>
但是在没有子目录情况下就会出错!!如何更改?或者有更好的解决办法
嫌效率不高的话自己优化吧TreeTest.java
===================================================================
package treetest;import java.sql.*;
import java.util.*;public class TreeTest {
StringBuffer buffer = new StringBuffer();
String result;
ArrayList codeList = new ArrayList();
ArrayList nameList = new ArrayList(); public String getResult() {
return buffer.toString();
} public TreeTest() {
codeList.add("001");
nameList.add("生产部门");
codeList.add("001001");
nameList.add("生产一部");
codeList.add("001002");
nameList.add("生产二部");
codeList.add("002");
nameList.add("业务部门");
codeList.add("002001");
nameList.add("业务部门1");
codeList.add("002002");
nameList.add("业务部门2");
codeList.add("002003");
nameList.add("业务部门3");
codeList.add("003");
nameList.add("市场部门");
codeList.add("003001");
nameList.add("市场部门1");
codeList.add("003002");
nameList.add("市场部门2");
codeList.add("004");
nameList.add("开发部门");
codeList.add("004001");
nameList.add("开发部门1");
codeList.add("005");
nameList.add("策划部门");
codeList.add("005001");
nameList.add("策划部门 1");
codeList.add("005002");
nameList.add("策划部门 2");
codeList.add("006");
nameList.add("企业规划部");
codeList.add("006001");
nameList.add("企业规划部 1");
codeList.add("006002");
nameList.add("企业规划部 2");
codeList.add("006003");
nameList.add("企业规划部 3");
codeList.add("006003001");
nameList.add("企业规划部 3001");
codeList.add("006003001001");
nameList.add("企业规划部 3001001"); codeList.add("006003001001001");
nameList.add("企业规划部 3001001001"); codeList.add("006003002");
nameList.add("企业规划部 3002");
codeList.add("006004");
nameList.add("企业规划部 4");
buffer.append("<div>\n");
buffer.append("<span><input type=checkbox>系统目录</span>\n");
buffer.append("<UL id=root>");
makeTree(codeList,nameList,1,null);
buffer.append("</UL>");
buffer.append("</div>\n");
} public void makeTree(ArrayList cList,ArrayList nList,int level,String parentCode){
int len = level*3;
String space = "";
for(int n = 1; n < level;n++){
space += " ";
} for(int i = 0;i < cList.size();i++)
{
String code = (String)cList.get(i);
String name = (String)nList.get(i);
if(code.length() != len)
continue;
if(level == 1){
buffer.append(space + "<LI><span><input type=checkbox>" + name + "</span>\n");
if(hasChild(code,cList)){
buffer.append(space + "<UL>\n");
makeTree(cList, nList, level + 1, code);
buffer.append(space + "</UL>\n");
}
}else if(code.startsWith(parentCode)){
buffer.append(space + "<LI><span><input type=checkbox>" + name + "</span>\n");
if(hasChild(code,cList)){
buffer.append(space + "<UL>\n");
makeTree(cList, nList, level + 1, code);
buffer.append(space + "</UL>\n");
}
}
}
}
public boolean hasChild(String c,ArrayList cList){
boolean hasChild = false;
Iterator iter = cList.iterator();
while(iter.hasNext()){
String tmpCode = (String) iter.next();
if((tmpCode.length() == c.length() + 3 )&&tmpCode.startsWith(c)){
return true;
}
}
return hasChild;
}}test.jsp
------------------------------------------------------------------
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
jsp1
</title>
<SCRIPT LANGUAGE="JavaScript">
<!--
function checkSelect(){
var elm = event.srcElement.parentNode;
checkChildrenRecurve(elm);
checkRootRecurve(document.getElementById("root"));
}
function checkChildrenRecurve(elm){
var li = elm.parentNode;
var ul = li.lastChild;
if (ul.tagName != "UL") return;
var lis = ul.children;
for (var i=0;i<lis.length;i++){
lis[i].firstChild.firstChild.checked=elm.firstChild.checked;
checkChildrenRecurve(lis[i].firstChild)
}
}
function checkRootRecurve(ul){
if (ul.tagName != "UL") {
ul.parentNode.firstChild.firstChild.allChecked = ul.parentNode.firstChild.firstChild.checked;
ul.parentNode.firstChild.firstChild.allUnChecked = !ul.parentNode.firstChild.firstChild.checked;
return;
}
var lis = ul.children;
var allChecked = true;
var allUnChecked = true;
for (var i=0;i<lis.length;i++){
checkRootRecurve(lis[i].lastChild);
allChecked = allChecked && lis[i].firstChild.firstChild.checked && lis[i].firstChild.firstChild.allChecked;
allUnChecked = allUnChecked && !lis[i].firstChild.firstChild.checked && lis[i].firstChild.firstChild.allUnChecked;
}
ul.parentNode.firstChild.firstChild.allChecked=allChecked;
ul.parentNode.firstChild.firstChild.allUnChecked=allUnChecked;
if (allChecked || allUnChecked){
ul.parentNode.firstChild.firstChild.checked=allChecked;
ul.parentNode.firstChild.firstChild.disabled=false;
ul.parentNode.firstChild.childStatus=false;
}else{
ul.parentNode.firstChild.firstChild.disabled=true;
ul.parentNode.firstChild.childStatus=true;
ul.parentNode.firstChild.firstChild.checked=true; }
}function enableFirstChild(){
this.childStatus = this.firstChild.disabled;
this.firstChild.disabled=false;
}
function recoverFirstChild(){
this.firstChild.disabled = this.childStatus;
}
function init(){
var elms = document.getElementsByTagName("INPUT");
for (var i=0;i<elms.length;i++)
elms[i].onclick=checkSelect;
var elms = document.getElementsByTagName("SPAN");
for (var i=0;i<elms.length;i++){
elms[i].onmouseover=enableFirstChild;
elms[i].onmouseout=recoverFirstChild;
}
}//-->
</SCRIPT>
</head>
<jsp:useBean id="treeBean" scope="request" class="treetest.TreeTest" />
<body onload="init()">
<%
out.println(treeBean.getResult());
%>
</body>
</html>