struts2+Hibernate+Spring+zTree+异步加载

先上架子图解:com.base包中是我写的公共类包括baseAction、baseDao等,com.function中是功能的实现,com.util是基本工具类。


所有的jar包:


先贴上框架的配置文件:

dbSource.properties:

#jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
#jdbc.url=jdbc:oracle:thin:@192.168.1.249:1521:poidms
jdbc.username=root
jdbc.password=root
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/testregion


applicationContext-base.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
                 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd 
                 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
                 
	<!-- 引入数据源属性文件 -->
	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath:dbSource.properties</value>
			</list>
		</property>
	</bean>

	<!-- 数据源DataSource -->
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName">
			<value>${jdbc.driverClassName}</value>
		</property>
		<property name="url">
			<value>${jdbc.url}</value>
		</property>
		<property name="username">
			<value>${jdbc.username}</value>
		</property>
		<property name="password">
			<value>${jdbc.password}</value>
		</property>
	</bean>
	
	<!-- 配置SessionFactory -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref local="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.format_sql">true</prop>
			</props>
		</property>
		<property name="mappingResources">
			<list>
				<value>com/function/pojo/BaseRegions.hbm.xml</value>
			</list>
		</property>
	</bean>
	
	<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>
	<!-- 事务配置 -->
	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>
	
	<bean id="txInterceptor"
		class="org.springframework.transaction.interceptor.TransactionInterceptor">
		<property name="transactionManager" ref="transactionManager" />
		<property name="transactionAttributes">
		   <props>
		      <prop key="find*">PROPAGATION_SUPPORTS</prop>
		      <prop key="get*">PROPAGATION_SUPPORTS</prop>
		      <prop key="select*">PROPAGATION_SUPPORTS</prop>
		      <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>
		      <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
		      <prop key="del*">PROPAGATION_REQUIRED,-Exception</prop>
		      <prop key="*">PROPAGATION_SUPPORTS</prop>
		   </props>
		</property>
	</bean>
	<bean id="servcieAutoProxyCreator"
		class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<property name="interceptorNames" value="txInterceptor" />
		<property name="beanNames" value="*Service" />
	</bean>
	<!-- 事务配置的不同写法 -->
	<!--<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
			<tx:method name="add*" propagation="REQUIRED" />
			<tx:method name="del*" propagation="REQUIRED" />
			<tx:method name="update*" propagation="REQUIRED" />
			<tx:method name="create*" propagation="REQUIRED" />
			<tx:method name="*" propagation="REQUIRED" />
		</tx:attributes>
	</tx:advice>
	<aop:config>
		<aop:advisor advice-ref="txAdvice" pointcut="execution(public * com.function.service..*.*(..))" />
		<aop:advisor advice-ref="txAdvice" pointcut="execution(public * com.bussiness.service..*.*(..))" />
	</aop:config>-->
	
 	<!-- 引入其他配置文件 -->
	<import resource="classpath:applicationContext-beans.xml" />
</beans>

applicationContext-beans.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:context="http://www.springframework.org/schema/context"
      xmlns:tx="http://www.springframework.org/schema/tx"
      xmlns:aop="http://www.springframework.org/schema/aop"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
                 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd 
                 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
 	
 	<bean id="regionAction" class="com.function.action.RegionAction" scope="prototype">
 		<property name="regionService" ref="regionService"></property>
 	</bean>
 	<bean id="regionService" class="com.function.service.RegionService" scope="prototype">
 		<property name="regionDao" ref="regionDao"></property>
 	</bean>
 	<bean id="regionDao" class="com.function.dao.RegionDao" scope="singleton">
 		<property name="sessionFactory" ref="sessionFactory"></property>
 	</bean>
 </beans>

struts.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	<package name="testStruts2" extends="struts-default,json-default"
		namespace="/">
		<global-results>
			<result name="error">/jsp/error.jsp</result>
		</global-results>
		<global-exception-mappings>
			<exception-mapping exception="java.lang.Exception"
				result="error" />
		</global-exception-mappings>
		<action name="findBaseRegionsListByParentRegion" class="com.function.action.RegionAction"
			method="findBaseRegionsListByParentRegion"></action>
	</package>

</struts>

web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>testRegion</display-name>
  <filter>
		<filter-name>testRegion</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>testRegion</filter-name>
		<url-pattern>*.action</url-pattern>
	</filter-mapping>
	
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext-base.xml</param-value>
	</context-param>
	
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<session-config>
    	<session-timeout>10</session-timeout>
  	</session-config>
  	
  	<welcome-file-list>
		<welcome-file>jsp/index.jsp</welcome-file>
	</welcome-file-list>
	</web-app>
RegionAction.java:

package com.function.action;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import net.sf.json.JSONArray;

import com.base.action.BaseAction;
import com.function.pojo.BaseRegionVO;
import com.function.service.RegionService;

/**
 * 
 * 处理内容:
 * 
 * @version: 1.0
 * @see:com.function.action.RegionAction.java
 * @date:2013-12-2
 * @author:fengxin
 */
public class RegionAction extends BaseAction {

	/**
	 * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么)
	 */
	private static final long serialVersionUID = 5036159348772859363L;
	// service
	private RegionService regionService;
	// 树形list
	private List<BaseRegionVO> list_baseRegions;
	// 父节点id
	private String parentRegionCode;

	/**
	 * 
	 * @throws IOException
	 * @方法说明 查询节点list 返回json串
	 * @date 2013-12-6
	 * @author fengxin
	 */
	public void findBaseRegionsListByParentRegion() throws IOException {
		try {
			list_baseRegions = new ArrayList<BaseRegionVO>();
			list_baseRegions = this.regionService
					.findBaseRegionsListByParentRegion(parentRegionCode);
			response.setContentType("application/json; charset=utf-8");
			PrintWriter out = response.getWriter();
			out.print(JSONArray.fromObject(list_baseRegions));
			out.flush();
			out.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * getter/setter
	 */
	public String getParentRegionCode() {
		return parentRegionCode;
	}

	public void setParentRegionCode(String parentRegionCode) {
		this.parentRegionCode = parentRegionCode;
	}

	public List<BaseRegionVO> getList_baseRegions() {
		return list_baseRegions;
	}

	public void setList_baseRegions(List<BaseRegionVO> list_baseRegions) {
		this.list_baseRegions = list_baseRegions;
	}

	public void setRegionService(RegionService regionService) {
		this.regionService = regionService;
	}
}

RegionService.java:

package com.function.service;

import java.util.List;

import com.base.service.BaseService;
import com.function.dao.RegionDao;
import com.function.pojo.BaseRegionVO;

/**
 * 
 * 处理内容:
 * 
 * @version: 1.0
 * @see:com.function.service.RegionService.java
 * @date:2013-12-2
 * @author:fengxin
 */
public class RegionService extends BaseService {
	
	private RegionDao regionDao;
	
	public List<BaseRegionVO> findBaseRegionsListByParentRegion(String parentRegionCode){
		return this.regionDao.findBaseRegionsListByParentRegion(parentRegionCode);
	}
	public RegionDao getRegionService() {
		return regionDao;
	}

	public void setRegionDao(RegionDao regionDao) {
		this.regionDao = regionDao;
	}
}

RegionDao.java:

package com.function.dao;

import java.util.List;

import org.hibernate.Hibernate;
import org.hibernate.SQLQuery;
import org.hibernate.transform.Transformers;

import com.base.dao.BaseDaoImpl;
import com.function.pojo.BaseRegionVO;
import com.function.pojo.BaseRegions;
import com.util.StringUtil;

/**
 * 
 * 处理内容:
 * 
 * @version: 1.0
 * @see:com.function.dao.RegionDao.java
 * @date:2013-12-2
 * @author:fengxin
 */
public class RegionDao extends BaseDaoImpl<BaseRegions> {
	
	@SuppressWarnings({ "unchecked", "deprecation" })
	public List<BaseRegionVO> findBaseRegionsListByParentRegion(String parentRegionCode){
		if(StringUtil.isEmpty(parentRegionCode)){
			String sql = "SELECT regioncode AS 'id',	regionpid AS 'pId',	regionname AS 'name'," +
					"CASE WHEN isleaf = '0' THEN 'true' ELSE 'false' END AS 'isParent'," +
					"isleaf AS 'isleaf' FROM base_regions" +
					" where regionlevel in ('0','1')";
			return (List<BaseRegionVO>) this.getSession().createSQLQuery(sql)
					.addScalar("id",Hibernate.STRING)
					.addScalar("pId",Hibernate.STRING)
					.addScalar("name",Hibernate.STRING)
					.addScalar("isParent",Hibernate.STRING)
					.setResultTransformer(Transformers.aliasToBean(com.function.pojo.BaseRegionVO.class)).list();
		}else{
			String sql = "SELECT regioncode AS 'id',	regionpid AS 'pId',	regionname AS 'name'," +
					"CASE WHEN isleaf = '0' THEN 'true' ELSE 'false' END AS 'isParent' FROM base_regions" +
					" where regionpid =?";
			String[] str =new String[1];
			str[0]=parentRegionCode;
			return (List<BaseRegionVO>) ((SQLQuery) this.getSession().createSQLQuery(sql).setParameter(0, str[0]))
					.addScalar("id",Hibernate.STRING)
					.addScalar("pId",Hibernate.STRING)
					.addScalar("name",Hibernate.STRING)
					.addScalar("isParent",Hibernate.STRING)
					.setResultTransformer(Transformers.aliasToBean(com.function.pojo.BaseRegionVO.class)).list();
		}
	}

	
}


index.jsp:

<%@ page language="java" pageEncoding="UTF-8"%>
<!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">
		<link rel="stylesheet" href="css/demo.css" type="text/css">  
		<link rel="stylesheet" href="css/zTreeStyle/zTreeStyle.css" type="text/css">
		<title>Index</title>
		<script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
		<script type="text/javascript" src="js/jquery.ztree.core-3.5.js"></script>
		<script type="text/javascript">
				$(document).ready(function() {
					$.fn.zTree.init($("#treeDemo"), setting);
				});
				 var setting ={
					 async:{
			        		enable:true,
			        		dataType:"json",
			        		autoParam: ["id=parentRegionCode"],
			        		url:"findBaseRegionsListByParentRegion.action"
			        	},
						data:{ // 必须使用data  
			            	 simpleData : {  
				                enable : true,  
				                idKey : "id", // id编号命名 默认  
				                pIdKey : "pId", // 父id编号命名 默认   
			            	}, 
			            	key:{
			            		name:"name"
			            	}
			        	},
			        	callback:{
			           		onClick : getTreeObject
			            }
					}
				 function getTreeObject(event, treeId, treeNode){
					alert(treeNode.name+":"+treeNode.id);
				} 
		</script>
	</head>
	<body>
	<div>  
        <ul id="treeDemo" class="ztree"></ul>  
    </div>  
	</body>
</html>

主要代码我就贴到这儿;

如下图:


如何还有什么不明白的,可以留言!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值