`
andylue2008
  • 浏览: 35524 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js 浅谈(树--信息是从数据库中动态获取)

阅读更多

  今天写了树,想给它记下来。以后用到时,就直接下下来用,不用在写了。呵呵...

 

服务端Servlet

package com.erong.bbs.web;

import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.erong.bbs.domain.Node;
import com.erong.bbs.service.NodeService;

public class TreeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;


public TreeServlet() {
super();

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,

IOException {

NodeService ns = new NodeService();
List<Node> nodes = ns.getTree();
request.setAttribute("tree", nodes);
request.getRequestDispatcher("/tree.jsp").forward(request, response);
}


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,

IOException {

}

}
 



显示页面的jsp

写道

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import="java.util.List" %>
<%@ page import="com.erong.bbs.domain.Node" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<link type="text/css" rel="stylesheet" href="css/css4cnltreemenu.css" />
<script type="text/javascript" src="js/js4cnltreemenu.js"></script>
</head>
<body>
<div class="CNLTreeMenu" id="CNLTreeMenu3">
<h4>CNL Tree Menu3</h4>
<p><a id="AllOpen_3" href="#" onclick="MyCNLTreeMenu3.SetNodes(0);Hd(this);Sw('AllClose_3');">全部展开& amp; lt;/a><a

id="AllClose_3" href="#" onclick="MyCNLTreeMenu3.SetNodes(1);Hd(this);Sw('AllOpen_3');" style="display:none;">全部折

叠</a></p>
<% List<Node> nodes = (List<Node>)request.getAttribute("tree"); %>

<ul>
<% for (int i=0; i<nodes.size(); i++) {
Node node = nodes.get(i);
if (node.getNodeLevel() == 1)
displayNode(nodes, node, out);
}
%>

<%!
private void displayNode(List<Node> nodes, Node node, JspWriter out) {
try {
if (node.getNodeType().equals("N")) {
out.print("<li class=\"Child\"><a href=\"#\">" + node.getNodeText() + "</a></li>");
return ;
} else {
List<Node> sons = node.getSonNode(nodes);

if (sons.size() > 0) {
out.print("<li class=\"Opened\"><a href=\"#\">" + node.getNodeText() + "</a>");
out.print("<ul>");

for (int i=0; i<sons.size(); i++) {
displayNode(nodes, sons.get(i), out);
}

out.print("</ul></li>");
} else {
out.print("<li class=\"Opened\"><a href=\"#\">" + node.getNodeText() + "</a></li>");
return ;
}
}
} catch (Exception e) {

}
}
%>
</ul>
</div>
<script type="text/javascript">

var MyCNLTreeMenu3=new CNLTreeMenu("CNLTreeMenu3","li");
MyCNLTreeMenu3.InitCss("Opened","Closed","Child","css/s.gif");

</script>

</body>
</html>
 


获取数据库信息的service

写道
package com.erong.bbs.service;

import java.util.List;
import org.hibernate.Session;
import com.erong.base.data.HibernateUtil;
import com.erong.bbs.domain.Node;

public class NodeService {
public List<Node> getTree() {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
return (List<Node>)session.createQuery(" from Node order by nodeCode asc ").list();
}


/*public static void main(String[] args) {
NodeService ns = new NodeService();
List<Node> nodes = ns.getTree();

for (int i=0; i<nodes.size(); i++) {
Node node = nodes.get(i);

for (int n=1; n<node.getNodeLevel(); n++) {
System.out.print(" ");
}


System.out.println(node.getNodeText());
}

}*/

}
 




javascrpt 部分

写道
function Ob(o){
var o=document.getElementById(o)?document.getElementById(o):o;
return o;
}
function Hd(o) {
Ob(o).style.display="none";
}
function Sw(o) {
Ob(o).style.display="";
}
function ExCls(o,a,b,n){
var o=Ob(o);
for(i=0;i<n;i++) {o=o.parentNode;}
o.className=o.className==a?b:a;
}
function CNLTreeMenu(id,TagName0) {
this.id=id;
this.TagName0=TagName0==""?"li":TagName0;
this.AllNodes = Ob(this.id).getElementsByTagName(TagName0);
this.InitCss = function (ClassName0,ClassName1,ClassName2,ImgUrl) {
this.ClassName0=ClassName0;
this.ClassName1=ClassName1;
this.ClassName2=ClassName2;
this.ImgUrl=ImgUrl || "css/s.gif";
this.ImgBlankA ="<img src=\""+this.ImgUrl+"\" class=\"s\" onclick=\"ExCls

(this,'"+ClassName0+"','"+ClassName1+"',1);\" alt=\"展开/折叠\" />";
this.ImgBlankB ="<img src=\""+this.ImgUrl+"\" class=\"s\" />";
for (i=0;i<this.AllNodes.length;i++ ) {
this.AllNodes[i].className==""?this.AllNodes[i].className=ClassName1:"";
this.AllNodes[i].innerHTML=(this.AllNodes[i].className==ClassName2?this.ImgBlankB:this.ImgBlankA)+this.AllNodes

[i].innerHTML;
}
}
this.SetNodes = function (n) {
var sClsName=n==0?this.ClassName0:this.ClassName1;
for (i=0;i<this.AllNodes.length;i++ ) {
this.AllNodes[i].className==this.ClassName2?"":this.AllNodes[i].className=sClsName;
}
}
}

 


不过css样式部分,在压缩包里了,还有用到的图片。

 

  • css.rar (17.2 KB)
  • 下载次数: 15
分享到:
评论

相关推荐

    浅谈Java小程序数据库的访问方法.pdf

    Java小程序,也就是Java Applet,是一种可以在支持Java的浏览器中运行的小型Java应用程序。它能够实现网络浏览器内的交互...因此在实际开发中,可能需要考虑更多的替代方案,如使用Web服务或JavaScript进行数据库访问。

    基于PHP MySql的校园兼职信息平台的开发浅谈.pdf

    【基于PHP MySql的校园兼职信息平台的开发浅谈】 这篇文档详细探讨了如何利用PHP和MySQL构建一个校园兼职信息平台,旨在满足大学生寻找兼职、创业平台的需求,同时也为学院提供了一个规范管理和宣传的渠道。系统...

    浅谈NodeJs之数据库异常处理

    在Node.js中,数据库异常处理是一项至关重要的任务,因为数据操作是任何应用程序的核心部分,而错误处理能够确保系统的稳定性和可靠性。本篇文章将探讨在Node.js环境下如何有效地处理数据库异常,特别是针对MySQL...

    浅谈Django中view对数据库的调用方法

    ### Django中View对数据库的调用方法解析 #### 一、引言 在现代Web开发中,Django作为一款流行的Python Web框架,以其强大的功能和灵活性受到广大开发者的青睐。其中,视图(View)作为MVC架构中的核心组成部分之一...

    浅谈asp分页

    1. 数据查询:首先,我们需要从数据库中查询数据,但不是一次性获取所有记录,而是根据每页显示的条目数来确定查询范围。例如,如果每页显示10条记录,那么在第一页时,我们将查询1到10的记录,在第二页时,查询11到...

    浅谈网站架构中缓存的应用

    缓存是一种存储技术,它将频繁访问的数据或计算结果暂存于高速存储器中,以便后续快速获取。在网站架构中,缓存通常位于内存中,比直接从硬盘读取数据要快得多。这减少了网络延迟,提高了用户交互的流畅性。 缓存...

    网络及PHP浅谈.docx

    在信息技术日益发展的今天,网络技术已经成为人们日常生活中不可或缺的一部分。从简单的网页浏览到复杂的数据交互,网络技术的核心——互联网,为全球的信息共享提供了平台。它突破了物理空间的限制,使得用户能够...

    浅谈html中id和name的区别.pdf

    首先,id属性是用于唯一地标识一个元素,确保在整个文档中id是唯一的,这使得id成为CSS选择器和JavaScript中获取特定元素的主要手段。在CSS中,我们可以使用`#`加上id名称来选中元素,如`#myId {styles here}`。在...

    浅谈三层结构原理与用意

    三层结构是一种常见的软件架构模式,广泛应用于Web应用程序开发中,特别是在使用***技术栈时。这种模式将应用程序分为三个主要的逻辑层:表现层、中间业务层(也称为业务逻辑层或应用层)和数据访问层。 表现层是...

    最新浅谈云计算的网络安全威胁与应对策略.doc

    5. **SQL注入**:攻击者通过输入恶意的SQL代码,以获取数据库中的未经授权的信息。 6. **跨站脚本攻击**(Cross-Site Scripting, XSS):攻击者在网页中插入恶意脚本,当用户浏览网页时,脚本被执行,可能导致用户...

    浅谈“三层结构”原理与用意

    三层架构是一种常见的软件设计模式,尤其在企业级应用开发中广泛应用。这种架构将应用程序分为三个主要部分:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)...

    浅谈“三层结构”原理与用意下载

    2. 中间业务层:处理用户的请求,如验证留言内容,调用数据访问层接口来获取或保存留言。 3. 数据访问层:实现与数据库的交互,如执行SQL语句,以完成数据的读写。 这样的设计使得每个部分的职责清晰,代码更易于...

    浅谈MVC+EF easyui dataGrid 动态加载分页表格

    在本例中,dataGrid被用来动态加载分页数据,通过Ajax请求从服务器获取数据,实现数据的分页展示。 5. 动态加载分页:在dataGrid中设置`pagination: true`,启用分页功能。通过`pageNumber`和`pageSize`属性指定...

    浅谈JavaScript中的String对象常用方法

    `substring(indexA,indexB)`方法用于获取字符串中从`indexA`到`indexB`(不包括`indexB`)之间的子字符串。`indexA`和`indexB`都是索引位置,指定要截取的字符串的起始和结束位置。如果省略`indexB`,则截取到字符串...

    浅谈基于微信小程序的校园一体化服务平台的设计与开发.zip

    在关键功能实现方面,例如成绩查询,平台需要与学校教务系统对接,获取并展示学生的分数信息;图书馆预约则需要集成图书馆管理系统,实现图书检索、预约、续借等功能;在线课程可能需要与第三方教育平台合作,嵌入...

    浅谈利用Session防止表单重复提交

    方法是,在运行添加信息页面时,在Session中放置信息,然后页面提交信息给Servlet处理,Servlet获取Session中的信息,如果Session中有信息不为空则将信息插入数据库,然后删除Session中的信息,下次再提交表单时...

    浅谈node中的cluster集群

    1. 通过共有的主进程存储鉴权信息,每次前端提交帐号密码,授权完成后,将 token 发送给主进程,下次前台查询时先在主进程获取授权信息。 2. 使用外部鉴权服务,例如数据库或 redis 等。 Cluster 模块是 Node.js 中...

    浅谈json_encode用法

    在文章中,首先介绍了如何从数据库中查询数据,并将这些数据存储在数组中。这里用到的是mysql_query函数来执行SQL查询,并使用mysql_fetch_array函数来逐行获取查询结果,将每一行的相关数据存储到$xdata和$ydata两...

Global site tag (gtag.js) - Google Analytics