Sort.java

Java代码
  1. package com.tree.entity;

  2. import java.util.HashSet;

  3. import java.util.Set;

  4. publicclass Sort {

  5. privateint id;

  6. private String name;//类别的名字

  7. private Sort parent;//父节点

  8. private Set<Sort> childrens;//子节点

  9. //geter.seter.....

  10. }

Sort.hbm.xml:

Java代码
  1. <?xml version="1.0"?>

  2. <!DOCTYPE hibernate-mapping PUBLIC

  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

  4. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

  5. <hibernate-mapping

  6. package="com.tree.entity">

  7. <class name="Sort" table="tb_sort">

  8. <id name="id">

  9. <generator class="native"></generator>

  10. </id>

  11. <property name="name"></property>

  12. <many-to-one name="parent" column="sid"/>

  13. <set name="childrens">

  14. <key>

  15. <column name="sid"></column>

  16. </key>

  17. <one-to-many class="Sort"/>

  18. </set>

  19. </class>

  20. <!--

  21. //这里使用了Hibernate的命名查询.

  22. //将你的每个实现映射实例对应的表操作语句都统一写到此处..方便统一管理

  23. //命名查询也可以使用2级缓冲.方便优化Hibernate的数据库操作

  24. -->

  25. <query name="findAllParent">

  26. <![CDATA[

  27. from Sort sort where sort.parent=null

  28. ]]></query>

  29. <query name="findChildByParent">

  30. <![CDATA[

  31. from Sort sort where sort.parent.id=?

  32. ]]></query>

  33. </hibernate-mapping>

看了2个相应的映射实例.我们看看如何完成dao
SortDaoImpl.java

Java代码
  1. package com.tree.dao;

  2. import java.util.List;

  3. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

  4. import com.tree.entity.Sort;

  5. /**

  6. * 这里与Spring的整合.使用了Spring提供的HibernateDaoSupport

  7. * 因为该类提供了getHibernateTemplate()的方法可以获取到HibernateTemplate

  8. * @author chenjj

  9. */

  10. publicclass SortDaoImpl extends HibernateDaoSupport implements SortDaoInf {

  11. /**

  12. * 添加数据

  13. * @param 需要添加的实例

  14. */

  15. publicvoid save(Sort sort) {

  16. this.getHibernateTemplate().save(sort);

  17. }

  18. /**

  19. * 通过id查找Sort类实例

  20. * @param 类型id

  21. */

  22. public Sort find(int id) {

  23. return (Sort) this.getHibernateTemplate().get(Sort.class, id);

  24. }

  25. /**

  26. * 查询所以父节点实例

  27. *

  28. */

  29. @SuppressWarnings("unchecked")

  30. public List findAllParent() {

  31. returnthis.getHibernateTemplate().findByNamedQuery("findAllParent");

  32. }

  33. /**

  34. * 通过父节点id找到其子节点实例

  35. * @param id 父节点id

  36. */

  37. @SuppressWarnings("unchecked")

  38. public List findChildByParentId(int id) {

  39. //使用findByNamedQuery(“相应的配置文件中你对应要使用查询语句的名字”)

  40. returnthis.getHibernateTemplate().findByNamedQuery("findChildByParent", id);

  41. }

  42. }

首先是web.xml文件中如下:

Java代码
  1. <!--

  2. //配置DWR拦截器

  3. -->

  4. <servlet>

  5. <servlet-name>dwr-invoker</servlet-name>

  6. <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>

  7. <init-param>

  8. <param-name>debug</param-name>

  9. <param-value>true</param-value>

  10. </init-param>

  11. </servlet>

  12. <servlet-mapping>

  13. <servlet-name>dwr-invoker</servlet-name>

  14. <url-pattern>/dwr/*</url-pattern>

  15. </servlet-mapping>

  16. <!--

  17. //这里你需要告诉服务器你的spring的配置放到什么地方.这里我选择是在src文件夹下面

  18. -->

  19. <context-param>

  20. <param-name>contextConfigLocation</param-name>

  21. <param-value>classpath:applicationContext.xml</param-value>

  22. </context-param>

  23. <!--

  24. //定义 Spring 的上下文监听器,它会负责初始化 ApplicationContext(spring的环境)

  25. -->

  26. <listener>

  27. <listener-class>

  28. org.springframework.web.context.ContextLoaderListener

  29. </listener-class>

  30. </listener>

dwr.xml(存放在WEB-INF中)的文件配置:

Java代码
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN""http://getahead.org/dwr/dwr20.dtd">

  3. <dwr>

  4. <allow>

  5. <!--

  6. //这里create表示创建的对象方式以及生成的js文件的名字

  7. //javascript:表示生成的js文件的名字;

  8. //creator:表示创建的方式;

  9. //<param>表示要创建具体的类

  10. //name="class"这是一个类;

  11. //value="[编写具体的类名]";

  12. // 因为整合spring.这里creator的属性设置为spring.

  13. -->

  14. <create javascript="sortDaoInf" creator="spring">

  15. <!--

  16. //param元素的name属性值可以是class,beanName等,此处用beanName,

  17. //value得值是定义在applicationContext.xml中某个bean的id值。

  18. -->

  19. <param name="beanName" value="DWRSortDaoInf"></param>

  20. </create>

  21. <!--

  22. //convert:配置具体的javabean;

  23. //match:具体的java类名;

  24. //converter:表示使用的方式;

  25. //bean ==> 符合javabean规范的形式进行创建;

  26. //date ==> 专门用于转换util.Date和sql.Date

  27. -->

  28. <convert match="com.tree.entity.Sort" converter="bean">

  29. <param name="include" value="id,name"></param>

  30. </convert>

  31. </allow>

  32. </dwr>

applicationContext.xml的配置

Java代码
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <beans xmlns="http://www.springframework.org/schema/beans"

  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

  5. <bean id="dataSource"class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

  6. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>

  7. <property name="url" value="jdbc:mysql://127.0.0.1:3306/gao"/>

  8. <property name="username" value="root"/>

  9. <property name="password" value="root"/>

  10. </bean>

  11. <!-- 定义HibernateSessionFacotry -->

  12. <bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

  13. <!-- 使用指定的数据源 -->

  14. <property name="dataSource" ref="dataSource"/>

  15. <!-- 指定需要映射的实体 -->

  16. <property name="mappingResources">

  17. <list>

  18. <value>com/tree/entity/Sort.hbm.xml</value>

  19. </list>

  20. </property>

  21. <property name="hibernateProperties">

  22. <value>

  23. hibernate.dialect = org.hibernate.dialect.MySQLInnoDBDialect

  24. hibernate.cache.provider_class = org.hibernate.cache.NoCacheProvider

  25. hibernate.format_sql = true

  26. hibernate.show_sql = true

  27. hibernate.hbm2ddl.auto = update

  28. </value>

  29. </property>

  30. </bean>

  31. <!--

  32. //这里DWRSortDaoInf要与dwr中creater的beanName的value相一致

  33. -->

  34. <bean id="DWRSortDaoInf"class="com.tree.dao.SortDaoImpl">

  35. <property name="sessionFactory" ref="sessionFactory"/>

  36. </bean>

  37. </beans>

完成这些后台的配置与必要的操作定义后..
就可以实现页面树的显示
页面为tree.jsp:因为大部分的操作都使用了tree.js上面.而通过访问http://127.0.0.1:8080/tree(我的项目名称)/dwr可以获取到dwr生成后转化成的js
<script type='text/javascript' src='/tree/dwr/interface/sortDaoInf.js'></script>
<script type='text/javascript' src='/tree/dwr/engine.js'></script>
<script type='text/javascript' src='/tree/dwr/util.js'></script>

Java代码
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"

  2. pageEncoding="ISO-8859-1"%>

  3. <html>

  4. <head>

  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

  6. <script type='text/javascript' src='/tree/dwr/interface/sortDaoInf.js'></script>

  7. <script type='text/javascript' src='/tree/dwr/engine.js'></script>

  8. <script type='text/javascript' src='/tree/dwr/util.js'></script>

  9. <script type="text/javascript" src="js/tree.js"></script>

  10. <title>Insert title here</title>

  11. </head>

  12. <body>

  13. <div id="tree">

  14. </div>

  15. </body>

  16. </html>

核心的tree.js的代码如下:

Java代码
  1. //在页面启动的时候操作

  2. window. {

  3. var tree = document.getElementById("tree");

  4. sortDaoInf.findAllParent(function(sorts){//获取到所有的父元素

  5. for(var i=0;i<sorts.length;i++) {

  6. var sort = sorts[i];

  7. var my_ul = document.createElement("ul");

  8. my_ul.innerHTML="<li id="+sort.name+"><img id="+sort.id+" src='img/plus.gif' οnclick='getSubtree(\""+sort.name+"\","+sort.id+")'/><img src='img/folder.gif'/></li>";

  9. tree.appendChild(my_ul);

  10. }

  11. });

  12. }

  13. function getSubtree(){

  14. //传递的参数可以使用arguments[index..]来获取.javascript一个扩展特点

  15. var name = arguments[0];//获取第一个参数的值

  16. var id = arguments[1];//获取第二个参数的值

  17. var element = document.getElementById(name);

  18. var my_ul = document.createElement("ul");//创建一个ul的元素

  19. sortDaoInf.findChildByParentId(id,function (sorts){//使用sortDaoInf的方法.id为传递的参数.sorts为回调函数.

  20. var str="";

  21. for(var i=0;i<sorts.length;i++) {

  22. var sort = sorts[i];

  23. str+="<li id="+sort.id+">"+sort.name+"</li>";//将获取到的数据用li形式表示

  24. }

  25. my_ul.innerHTML = str;//将获取到所以li元素添加到相应的ul中

  26. element.appendChild(my_ul);

  27. //把"+"号变成"-"号

  28. var img = document.getElementById(id);

  29. img.setAttribute("src","img/minus.gif");

  30. img.onclick = function () {

  31. showHide(name,id,element);

  32. };

  33. });

  34. }

  35. function showHide(){

  36. var name = arguments[0];//获取第一个参数的值

  37. var id = arguments[1];//获取第二个参数的值

  38. var root = arguments[2];//获取第三个参数的值

  39. var element = document.getElementById(name);

  40. var img = document.getElementById(id);//获取到相应的Img元素

  41. img.src = "img/plus.gif";

  42. img.onclick = function(){

  43. getSubtree(name,id);

  44. }

  45. var subs = element.lastChild;

  46. root.removeChild(subs);//将父元素中子元素删除掉

  47. //subs.style.display="none";

  48. }

转载于:https://blog.51cto.com/luoze/1328331

SpringMVC+DWR + Hibernate + 菜单树相关推荐

  1. Maven搭建springMVC+spring+hibernate环境

    这次不再使用struts2做控制器,采用spring自己的springMVC框架实现. 首先,改写pom.xml文件,不需要struts2的相关jar了. pom.xml <project xm ...

  2. 仿WINDWS无限级Ajax菜单树升级1.2版(菜单名支持非法字符)

    仿WINDWS无限级Ajax菜单树升级1.2版(菜单名支持非法字符)          1.1版出现了输入非法字符与空格后导致程序出错的BUG,我对程序再次升级为1.2版,这次将支持非法字符式的菜单名 ...

  3. springmvc+spring+hibernate集成cxf

    首先说一下背景,我们的系统是springmvc+spring+hibernate,已经能正常运行,现在要开发webservice,选用cxf. 1.maven依赖 <dependency> ...

  4. Mybatis通过colliection属性递归获取菜单树

    1.现有商品分类数据表category结构如下,三个字段都为varchar类型 2.创建商品分类对应的数据Bean /*** */ package com.xdw.dao;import java.ut ...

  5. 仿WINDWS无限级Ajax菜单树升级1.3版(修补了严重BUG)

    仿WINDWS无限级Ajax菜单树升级1.3版(修补了严重BUG) WINDWS无限级Ajax菜单树又升级了(1.3版)              对以下BUG进行了修复       1.只能在文字上 ...

  6. php 显示下拉菜单,PHP在下拉列表中显示菜单树

    菜单树的功能: function category_tree($parent_id) { $sql = "SELECT * FROM menu WHERE parent_id ='" ...

  7. 菜单转换Java_java递归菜单树转换成pojo对象

    package com.cjonline.foundation.authority.pojo; import java.util.ArrayList; import java.util.Collect ...

  8. java递归把list菜单列表转为菜单树

    java递归把列表转为菜单树 菜单实体类 package com.utils.menu;import java.util.List;public class Menu {private String ...

  9. Bootstrap系列之treeview实现菜单树

    本博客,介绍通过Bootstrap的treeview插件实现菜单树的功能. treeview链接:http://www.htmleaf.com/Demo/201502141380.html ORM框架 ...

最新文章

  1. Linux文本三剑客之sed
  2. php 获取http headers
  3. docker集群_使用Docker,Chef和Amazon OpsWorks进行集群范围的Java / Scala应用程序部署...
  4. 一个关于fixed抖动的小bug
  5. 史上最烂代码_历史上最大的代码库
  6. 企业实战(Jenkins+GitLab+SonarQube)_10_Jenkins通过Depoly插件热部署Java程序
  7. mysql 设计模式_mysql – 你会推荐什么版本设计模式
  8. notepad++设置自动刷新文本(中文版/英文版)
  9. 讲讲金融业务(一)--自助结算终端POS
  10. 信息服务器的设置,设置服务器SSH信息
  11. 手机号码正则 中文姓名正则
  12. 改变你一生的五句话 (转)
  13. 【计算机毕业设计】基于SpringBoot的物流管理系统
  14. React脚手架创建项目
  15. 计算机网络规划与设计
  16. 修改360企业版杀毒软件备注名的方法
  17. 【手工儿童】}DIY冬南瓜小兔子
  18. TBODY标签有什么作用
  19. python编写程序实现货币转换_使用Tkinter的Python实时货币转换器
  20. 2021CSDN粉丝年度严选文章TOP10榜单出炉~浅看超人气盘点

热门文章

  1. Oracle笔记 十一、PL/SQL函数和触发器
  2. IoC(控制反转)的主要组件和注入的两种方式
  3. ProtoBuf3语法指南(Protocol Buffers)_上
  4. SQL中不建议使用 where 1=1 的说法,是错误的
  5. MySQL免安装版安装
  6. 泉州中考分数如何计算机,2019年泉州中考总分多少分,泉州中考考试科目设置
  7. LATEX数学式哪种字号比较漂亮
  8. log4j2+ELK
  9. 《C++ primer》--第11章
  10. ZKWeb网页框架1.3正式发布