1.WEB.XML的配置:
首先在web.xml中加入:
- <servlet>
- <servlet-name>SpringContextServlet</servlet-name>
- <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
<servlet>
<servlet-name>SpringContextServlet</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
我的整个web.xml象这样:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
- <web-app>
- <display-name>info_web</display-name>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/WEB-INF/applicationContext-hibernate.xml</param-value>
- </context-param>
- <filter>
- <filter-name>SetCharacterEncoding</filter-name>
- <filter-class>iclass.util.SetEncodingFilter</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>GBK</param-value>
- </init-param>
- </filter>
- <filter>
- <filter-name>FilterRedirector</filter-name>
- <filter-class>org.apache.cactus.server.FilterTestRedirector</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>SetCharacterEncoding</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <filter-mapping>
- <filter-name>FilterRedirector</filter-name>
- <url-pattern>/FilterRedirector</url-pattern>
- </filter-mapping>
- <servlet>
- <servlet-name>SpringContextServlet</servlet-name>
- <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet>
- <servlet-name>ServletRedirector</servlet-name>
- <servlet-class>org.apache.cactus.server.ServletTestRedirector</servlet-class>
- </servlet>
- <servlet>
- <servlet-name>JspRedirector</servlet-name>
- <jsp-file>/jspRedirector.jsp</jsp-file>
- </servlet>
- <servlet>
- <servlet-name>action</servlet-name>
- <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
- <init-param>
- <param-name>config</param-name>
- <param-value>/WEB-INF/struts-config.xml</param-value>
- </init-param>
- <init-param>
- <param-name>debug</param-name>
- <param-value>2</param-value>
- </init-param>
- <init-param>
- <param-name>application</param-name>
- <param-value>ApplicationResources</param-value>
- </init-param>
- <load-on-startup>2</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>ServletRedirector</servlet-name>
- <url-pattern>/ServletRedirector</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>JspRedirector</servlet-name>
- <url-pattern>/JspRedirector</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>action</servlet-name>
- <url-pattern>*.do</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- <taglib>
- <taglib-uri>/tags/struts-nested</taglib-uri>
- <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
- </taglib>
- <taglib>
- <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
- <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
- </taglib>
- <taglib>
- <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
- <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
- </taglib>
- <taglib>
- <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
- <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
- </taglib>
- <taglib>
- <taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
- <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
- </taglib>
- <taglib>
- <taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
- <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
- </taglib>
- </web-app>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>info_web</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-hibernate.xml</param-value>
</context-param>
<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>iclass.util.SetEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter>
<filter-name>FilterRedirector</filter-name>
<filter-class>org.apache.cactus.server.FilterTestRedirector</filter-class>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>FilterRedirector</filter-name>
<url-pattern>/FilterRedirector</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>SpringContextServlet</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>ServletRedirector</servlet-name>
<servlet-class>org.apache.cactus.server.ServletTestRedirector</servlet-class>
</servlet>
<servlet>
<servlet-name>JspRedirector</servlet-name>
<jsp-file>/jspRedirector.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>application</param-name>
<param-value>ApplicationResources</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ServletRedirector</servlet-name>
<url-pattern>/ServletRedirector</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>JspRedirector</servlet-name>
<url-pattern>/JspRedirector</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>/tags/struts-nested</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
</web-app>
2.spring配置
配置文件为applicationContext-hibernate.xml,在此配置文件中,配了POJO层,商业逻辑层,DAO层,和事务管理
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
- <!-- ========================= Start of PERSISTENCE DEFINITIONS ========================= -->
- <!-- Choose the dialect that matches your "dataSource" definition -->
- <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
- <property name="driverClassName">
- <value>org.gjt.mm.mysql.Driver</value>
- </property>
- <property name="url">
- <value>jdbc:mysql://localhost:3306/info_web?useUnicode=true&characterEncoding=GBK</value>
- </property>
- <property name="username">
- <value>root</value>
- </property>
- <property name="password">
- <value>123456</value>
- </property>
- </bean>
- <bean id="mySessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
- <property name="mappingResources">
- <list>
- <value>infoweb/pojo/Answer.hbm.xml</value>
- <value>infoweb/pojo/Board.hbm.xml</value>
- <value>infoweb/pojo/Image.hbm.xml</value>
- <value>infoweb/pojo/Info.hbm.xml</value>
- </list>
- </property>
- <property name="hibernateProperties">
- <props>
- <prop key="hibernate.dialect">net.sf.hibernate.dialect.MySQLDialect</prop>
- <prop key="hibernate.show_sql">true</prop>
- <prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
- </props>
- </property>
- <property name="dataSource"><ref bean="myDataSource"/></property>
- </bean>
- <!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA); -->
- <bean id="myTransactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">
- <property name="sessionFactory"><ref local="mySessionFactory"/></property>
- </bean>
- <!-- ***** Board SERVICE ***** -->
- <bean id="boardService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
- <property name="transactionManager"><ref local="myTransactionManager"/></property>
- <property name="target"><ref local="boardServiceSpring"/></property>
- <property name="transactionAttributes">
- <props>
- <prop key="get*">PROPAGATION_REQUIRED,readOnly,-BoardException</prop>
- <prop key="set*">PROPAGATION_REQUIRED,-BoardException</prop>
- <prop key="modify*">PROPAGATION_REQUIRED,-BoardException</prop>
- <prop key="remove*">PROPAGATION_REQUIRED,-BoardException</prop>
- </props>
- </property>
- </bean>
- <!-- board primary business object implementation -->
- <bean id="boardServiceSpring" class="infoweb.service.BoardServiceSpringImpl">
- <property name="boardTreeDAO"><ref local="boardTreeDAO"/></property>
- </bean>
- <!-- DAO board: Hibernate implementation -->
- <bean id="boardTreeDAO" class="infoweb.dao.BoardTreeDAOImpl">
- <property name="sessionFactory"><ref local="mySessionFactory"/></property>
- </bean>
- <!-- DAO info: Hibernate implementation -->
- <bean id="infoDAO" class="infoweb.dao.InfoDAOImpl">
- <property name="sessionFactory"><ref local="mySessionFactory"/></property>
- </bean>
- </beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- ========================= Start of PERSISTENCE DEFINITIONS ========================= -->
<!-- Choose the dialect that matches your "dataSource" definition -->
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>org.gjt.mm.mysql.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/info_web?useUnicode=true&characterEncoding=GBK</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>123456</value>
</property>
</bean>
<bean id="mySessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="mappingResources">
<list>
<value>infoweb/pojo/Answer.hbm.xml</value>
<value>infoweb/pojo/Board.hbm.xml</value>
<value>infoweb/pojo/Image.hbm.xml</value>
<value>infoweb/pojo/Info.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">net.sf.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
</props>
</property>
<property name="dataSource"><ref bean="myDataSource"/></property>
</bean>
<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA); -->
<bean id="myTransactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">
<property name="sessionFactory"><ref local="mySessionFactory"/></property>
</bean>
<!-- ***** Board SERVICE ***** -->
<bean id="boardService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager"><ref local="myTransactionManager"/></property>
<property name="target"><ref local="boardServiceSpring"/></property>
<property name="transactionAttributes">
<props>
<prop key="get*">PROPAGATION_REQUIRED,readOnly,-BoardException</prop>
<prop key="set*">PROPAGATION_REQUIRED,-BoardException</prop>
<prop key="modify*">PROPAGATION_REQUIRED,-BoardException</prop>
<prop key="remove*">PROPAGATION_REQUIRED,-BoardException</prop>
</props>
</property>
</bean>
<!-- board primary business object implementation -->
<bean id="boardServiceSpring" class="infoweb.service.BoardServiceSpringImpl">
<property name="boardTreeDAO"><ref local="boardTreeDAO"/></property>
</bean>
<!-- DAO board: Hibernate implementation -->
<bean id="boardTreeDAO" class="infoweb.dao.BoardTreeDAOImpl">
<property name="sessionFactory"><ref local="mySessionFactory"/></property>
</bean>
<!-- DAO info: Hibernate implementation -->
<bean id="infoDAO" class="infoweb.dao.InfoDAOImpl">
<property name="sessionFactory"><ref local="mySessionFactory"/></property>
</bean>
</beans>
3.做DAO代码,
- package infoweb.dao;
- import java.util.List;
- import java.util.Iterator;
- import infoweb.pojo.Board;
- import net.sf.hibernate.HibernateException;
- import net.sf.hibernate.Query;
- import net.sf.hibernate.Session;
- import org.springframework.orm.hibernate.HibernateCallback;
- import org.springframework.orm.hibernate.support.HibernateDaoSupport;
- /**
- * <p>Title: 版块分类DAOImpl</p>
- * <p>Description: 用树型结构实现</p>
- * <p>Copyright: Copyright (c); 2004</p>
- * <p>Company: </p>
- * @author 段洪杰
- * @version 1.0
- */
- public class BoardTreeDAOImpl extends HibernateDaoSupport implements
- IBoardTreeDAO {
- /**
- * 构造函数
- */
- public BoardTreeDAOImpl(); {
- super();;
- }
- /**
- * 通过ID取得版块
- * @param id String
- * @return Board
- */
- public Board getBoardById(String id); {
- Board board = (Board); getHibernateTemplate();.load(Board.class, id);;
- return board;
- }
- /**
- * 取根叶
- * @return Iterator
- */
- public Iterator getRoots(); throws HibernateException {
- String queryString =
- "select board from Board as board where board.parentId='root' order by board.id desc";
- List roots = getHibernateTemplate();.find(queryString);;
- return roots.iterator();;
- }
- /**
- * 存根叶
- * @param board Board
- */
- public void setRoot(Board board); {
- board.setParentId("root");;
- getHibernateTemplate();.save(board);;
- }
- /**
- * 取子叶
- * @param parentid String
- * @return List
- */
- public Iterator getChildren(String parentid); {
- /*
- String queryString =
- "select board as Board where board.parent_id='parentid' order by board.id desc";
- List children = getHibernateTemplate();.find(queryString);;
- return children;
- */
- Board parent = (Board); getHibernateTemplate();.load(Board.class, parentid);;
- return parent.getChildren();.iterator();;
- }
- /**
- * 取子叶数
- * @param parentid String
- * @return int
- */
- public int getChildrenCount(String parentid); {
- /*
- String queryString =
- "select count(*); Board where board.parent_id='parentid' order by board.id desc";
- List children = getHibernateTemplate();.find(queryString);;
- int count = ((Integer); children.iterator();.next(););.intValue();;
- return count;
- */
- Board parent = (Board); getHibernateTemplate();.load(Board.class, parentid);;
- int count = parent.getChildren();.size();;
- return count;
- }
- /**
- * 存子叶
- * @param parentLeaf Leaf
- */
- public void setChild(Board board, String parentid); {
- board.setParentId(parentid);;
- getHibernateTemplate();.save(board);;
- }
- /**
- *
- * 删除该叶和它的子叶
- * @param board Board
- */
- public void deleteBranch(Board board); {
- getHibernateTemplate();.delete(board);;
- }
- /**
- * 根据子叶得到父叶
- * @param child Board
- * @return Board
- */
- public Board getParentByChild(Board child); {
- String parentId = child.getParentId();;
- Board parent = (Board); getHibernateTemplate();.load(Board.class, parentId);;
- return parent;
- }
- /**
- * 通过子ID得到父叶
- * @param id String
- * @return Board
- */
- public Board getParentByChildId(String id); {
- Board child = (Board); getHibernateTemplate();.load(Board.class, id);;
- Board parent = (Board); getHibernateTemplate();.load(Board.class,child.getParentId(););;
- return parent;
- }
- }
package infoweb.dao;
import java.util.List;
import java.util.Iterator;
import infoweb.pojo.Board;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Query;
import net.sf.hibernate.Session;
import org.springframework.orm.hibernate.HibernateCallback;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;
/**
* <p>Title: 版块分类DAOImpl</p>
* <p>Description: 用树型结构实现</p>
* <p>Copyright: Copyright (c); 2004</p>
* <p>Company: </p>
* @author 段洪杰
* @version 1.0
*/
public class BoardTreeDAOImpl extends HibernateDaoSupport implements
IBoardTreeDAO {
/**
* 构造函数
*/
public BoardTreeDAOImpl(); {
super();;
}
/**
* 通过ID取得版块
* @param id String
* @return Board
*/
public Board getBoardById(String id); {
Board board = (Board); getHibernateTemplate();.load(Board.class, id);;
return board;
}
/**
* 取根叶
* @return Iterator
*/
public Iterator getRoots(); throws HibernateException {
String queryString =
"select board from Board as board where board.parentId='root' order by board.id desc";
List roots = getHibernateTemplate();.find(queryString);;
return roots.iterator();;
}
/**
* 存根叶
* @param board Board
*/
public void setRoot(Board board); {
board.setParentId("root");;
getHibernateTemplate();.save(board);;
}
/**
* 取子叶
* @param parentid String
* @return List
*/
public Iterator getChildren(String parentid); {
/*
String queryString =
"select board as Board where board.parent_id='parentid' order by board.id desc";
List children = getHibernateTemplate();.find(queryString);;
return children;
*/
Board parent = (Board); getHibernateTemplate();.load(Board.class, parentid);;
return parent.getChildren();.iterator();;
}
/**
* 取子叶数
* @param parentid String
* @return int
*/
public int getChildrenCount(String parentid); {
/*
String queryString =
"select count(*); Board where board.parent_id='parentid' order by board.id desc";
List children = getHibernateTemplate();.find(queryString);;
int count = ((Integer); children.iterator();.next(););.intValue();;
return count;
*/
Board parent = (Board); getHibernateTemplate();.load(Board.class, parentid);;
int count = parent.getChildren();.size();;
return count;
}
/**
* 存子叶
* @param parentLeaf Leaf
*/
public void setChild(Board board, String parentid); {
board.setParentId(parentid);;
getHibernateTemplate();.save(board);;
}
/**
*
* 删除该叶和它的子叶
* @param board Board
*/
public void deleteBranch(Board board); {
getHibernateTemplate();.delete(board);;
}
/**
* 根据子叶得到父叶
* @param child Board
* @return Board
*/
public Board getParentByChild(Board child); {
String parentId = child.getParentId();;
Board parent = (Board); getHibernateTemplate();.load(Board.class, parentId);;
return parent;
}
/**
* 通过子ID得到父叶
* @param id String
* @return Board
*/
public Board getParentByChildId(String id); {
Board child = (Board); getHibernateTemplate();.load(Board.class, id);;
Board parent = (Board); getHibernateTemplate();.load(Board.class,child.getParentId(););;
return parent;
}
}
4.做service层代码
- package infoweb.service;
- import java.util.List;
- import java.util.Iterator;
- import infoweb.dao.BoardTreeDAOImpl;
- import infoweb.dao.IBoardTreeDAO;
- import infoweb.pojo.Board;
- import infoweb.exception.BoardException;
- import net.sf.hibernate.HibernateException;
- /**
- * <p>Title: </p>
- * <p>Description: </p>
- * <p>Copyright: Copyright (c); 2004</p>
- * <p>Company: </p>
- * @author 段洪杰
- * @version 1.0
- */
- public class BoardServiceSpringImpl implements IBoardService {
- private IBoardTreeDAO boardTreeDAO;
- public BoardServiceSpringImpl(); {
- super();;
- }
- /**
- * 取所有roots版块
- * @return Iterator
- */
- public Iterator getRoots(); throws BoardException {
- Iterator roots = null;
- try {
- roots = boardTreeDAO.getRoots();;
- } catch (Exception ex); {
- throw new BoardException("取ROOT版块时出错! " + ex.toString(););;
- }
- return roots;
- }
- /**
- * 增加Root新版块
- * @param board Board
- */
- public void setRoot(Board board); throws BoardException {
- try {
- boardTreeDAO.setRoot(board);;
- } catch (Exception ex); {
- throw new BoardException("增加ROOT版块时出错! " + ex.toString(););;
- }
- }
- /**
- * 删除版块 (包含下级版块);
- * @param board Board
- */
- public void removeBoard(Board board); throws BoardException {
- try {
- boardTreeDAO.deleteBranch(board);;
- } catch (Exception ex); {
- throw new BoardException("删除版块时出错! " + ex.toString(););;
- }
- }
- /**
- *
- * @return IBoardTreeDAO
- */
- public IBoardTreeDAO getBoardTreeDAO(); {
- return boardTreeDAO;
- }
- /**
- *
- * @param boardTreeDAO IBoardTreeDAO
- */
- public void setBoardTreeDAO(IBoardTreeDAO boardTreeDAO); {
- this.boardTreeDAO = boardTreeDAO;
- }
- }
package infoweb.service;
import java.util.List;
import java.util.Iterator;
import infoweb.dao.BoardTreeDAOImpl;
import infoweb.dao.IBoardTreeDAO;
import infoweb.pojo.Board;
import infoweb.exception.BoardException;
import net.sf.hibernate.HibernateException;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c); 2004</p>
* <p>Company: </p>
* @author 段洪杰
* @version 1.0
*/
public class BoardServiceSpringImpl implements IBoardService {
private IBoardTreeDAO boardTreeDAO;
public BoardServiceSpringImpl(); {
super();;
}
/**
* 取所有roots版块
* @return Iterator
*/
public Iterator getRoots(); throws BoardException {
Iterator roots = null;
try {
roots = boardTreeDAO.getRoots();;
} catch (Exception ex); {
throw new BoardException("取ROOT版块时出错! " + ex.toString(););;
}
return roots;
}
/**
* 增加Root新版块
* @param board Board
*/
public void setRoot(Board board); throws BoardException {
try {
boardTreeDAO.setRoot(board);;
} catch (Exception ex); {
throw new BoardException("增加ROOT版块时出错! " + ex.toString(););;
}
}
/**
* 删除版块 (包含下级版块);
* @param board Board
*/
public void removeBoard(Board board); throws BoardException {
try {
boardTreeDAO.deleteBranch(board);;
} catch (Exception ex); {
throw new BoardException("删除版块时出错! " + ex.toString(););;
}
}
/**
*
* @return IBoardTreeDAO
*/
public IBoardTreeDAO getBoardTreeDAO(); {