学习Struts+spring+hibernate的笔记

(快刀浪子原创)下面是我学习Struts+spring+hibernate的笔记.

1.WEB.XML的配置:
首先在web.xml中加入:
java代码: 

  1 
  2   <servlet>
  3     <servlet-name>SpringContextServlet</servlet-name>
  4     <servlet- class>org. springframework. web. context. ContextLoaderServlet</servlet- class>
  5     <load-on-startup> 1</load-on-startup>
  6   </servlet>
  7 



我的整个web.xml象这样:
java代码: 

  1   
  2   <?xml version=" 1. 0" encoding="UTF- 8"?>
  3   <!DOCTYPE web-app PUBLIC "- //Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
  4   <web-app>
  5     <display-name>info_web</display-name>
  6     <context-param>
  7       <param-name>contextConfigLocation</param-name>
  8       <param-value>/WEB-INF/applicationContext-hibernate. xml</param-value>
  9     </context-param>
  10    <filter>
  11      <filter-name>SetCharacterEncoding</filter-name>
  12      <filter- class>iclass. util. SetEncodingFilter</filter- class>
  13      <init-param>
  14        <param-name>encoding</param-name>
  15        <param-value>GBK</param-value>
  16      </init-param>
  17    </filter>
  18    <filter>
  19      <filter-name>FilterRedirector</filter-name>
  20      <filter- class>org. apache. cactus. server. FilterTestRedirector</filter- class>
  21    </filter>
  22    <filter-mapping>
  23      <filter-name>SetCharacterEncoding</filter-name>
  24      <url-pattern> /*</url-pattern>
 25    </filter-mapping>
 26    <filter-mapping>
 27      <filter-name>FilterRedirector</filter-name>
 28      <url-pattern>/FilterRedirector</url-pattern>
 29    </filter-mapping>
 30    <servlet>
 31      <servlet-name>SpringContextServlet</servlet-name>
 32      <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
 33      <load-on-startup>1</load-on-startup>
 34    </servlet>
 35    <servlet>
 36      <servlet-name>ServletRedirector</servlet-name>
 37      <servlet-class>org.apache.cactus.server.ServletTestRedirector</servlet-class>
 38    </servlet>
 39    <servlet>
 40      <servlet-name>JspRedirector</servlet-name>
 41      <jsp-file>/jspRedirector.jsp</jsp-file>
 42    </servlet>
 43    <servlet>
 44      <servlet-name>action</servlet-name>
 45      <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
 46      <init-param>
 47        <param-name>config</param-name>
 48        <param-value>/WEB-INF/struts-config.xml</param-value>
 49      </init-param>
 50      <init-param>
 51        <param-name>debug</param-name>
 52        <param-value>2</param-value>
 53      </init-param>
 54      <init-param>
 55        <param-name>application</param-name>
 56        <param-value>ApplicationResources</param-value>
 57      </init-param>
 58      <load-on-startup>2</load-on-startup>
 59    </servlet>
 60    <servlet-mapping>
 61      <servlet-name>ServletRedirector</servlet-name>
 62      <url-pattern>/ServletRedirector</url-pattern>
 63    </servlet-mapping>
 64    <servlet-mapping>
 65      <servlet-name>JspRedirector</servlet-name>
 66      <url-pattern>/JspRedirector</url-pattern>
 67    </servlet-mapping>
 68    <servlet-mapping>
 69      <servlet-name>action</servlet-name>
 70      <url-pattern>*.do</url-pattern>
 71    </servlet-mapping>
 72    <welcome-file-list>
 73      <welcome-file>index.jsp</welcome-file>
 74    </welcome-file-list>
 75    <taglib>
 76      <taglib-uri>/tags/struts-nested</taglib-uri>
 77      <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
 78    </taglib>
 79    <taglib>
 80      <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
 81      <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
 82    </taglib>
 83    <taglib>
 84      <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
 85      <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
 86    </taglib>
 87    <taglib>
 88      <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
 89      <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
 90    </taglib>
 91    <taglib>
 92      <taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
 93      <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
 94    </taglib>
 95    <taglib>
 96      <taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
 97      <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
 98    </taglib>
 99  </web-app>
 100 



2.spring配置
配置文件为applicationContext-hibernate.xml,在此配置文件中,配了POJO层,商业逻辑层,DAO层,和事务管理
java代码: 

   
   <?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 -->
   
  10         <bean id="myDataSource" class="org. apache. commons. dbcp. BasicDataSource" destroy-method="close">
  11                 <property name="driverClassName">
  12                         <value>org. gjt. mm. mysql. Driver</value>
  13                 </property>
  14                 <property name="url">
  15                         <value>jdbc:mysql: //localhost:3306/info_web?useUnicode=true&characterEncoding=GBK</value>
  16                 </property>
  17                 <property name="username">
  18                         <value>root</value>
  19                 </property>
  20                 <property name="password">
  21                         <value> 123456</value>
  22                 </property>
  23         </bean>
  24        
  25         <bean id="mySessionFactory" class="org. springframework. orm. hibernate. LocalSessionFactoryBean">
  26                 <property name="mappingResources">
  27                         <list>
  28                                 <value>infoweb/pojo/Answer. hbm. xml</value>
  29                                 <value>infoweb/pojo/Board. hbm. xml</value>
  30                                 <value>infoweb/pojo/ Image. hbm. xml</value>
  31                                 <value>infoweb/pojo/Info. hbm. xml</value>
  32                         </list>
  33                 </property>               
  34                
  35                 <property name="hibernateProperties">
  36                         <props>
  37                                 <prop key="hibernate. dialect">net. sf. hibernate. dialect. MySQLDialect</prop>
  38                                 <prop key="hibernate. show_sql"> true</prop>
  39                                 <prop key="hibernate. cglib. use_reflection_optimizer"> true</prop>
  40                         </props>
  41                 </property>       
  42 
  43                 <property name="dataSource"><ref bean="myDataSource"/></property>
  44         </bean>
  45 
  46 
  47 
  48         <!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA ) -->
  49         <bean id="myTransactionManager" class="org. springframework. orm. hibernate. HibernateTransactionManager">
  50                 <property name="sessionFactory"><ref local="mySessionFactory"/></property>
  51         </bean>
  52        
  53 
  54         <!-- ***** Board  SERVICE ***** -->
  55         <bean id="boardService" class="org. springframework. transaction. interceptor. TransactionProxyFactoryBean">       
  56                 <property name="transactionManager"><ref local="myTransactionManager"/></property>
  57                 <property name="target"><ref local="boardServiceSpring"/></property>
  58                 <property name="transactionAttributes">
  59                         <props>
  60                                 <prop key="get*">PROPAGATION_REQUIRED,readOnly,-BoardException</prop>
  61                                 <prop key="set*">PROPAGATION_REQUIRED,-BoardException</prop>
  62                                 <prop key="modify*">PROPAGATION_REQUIRED,-BoardException</prop>
  63                                 <prop key="remove*">PROPAGATION_REQUIRED,-BoardException</prop>
  64                         </props>
  65                 </property>
  66         </bean>
  67 
  68         <!-- board primary business object implementation -->
  69         <bean id="boardServiceSpring" class="infoweb. service. BoardServiceSpringImpl">
  70                 <property name="boardTreeDAO"><ref local="boardTreeDAO"/></property>
  71         </bean>
  72        
  73 
  74         <!-- DAO board: Hibernate implementation -->
  75         <bean id="boardTreeDAO" class="infoweb. dao. BoardTreeDAOImpl">
  76                 <property name="sessionFactory"><ref local="mySessionFactory"/></property>
  77         </bean>
  78 
  79         <!-- DAO info: Hibernate implementation -->
  80         <bean id="infoDAO" class="infoweb. dao. InfoDAOImpl">
  81                 <property name="sessionFactory"><ref local="mySessionFactory"/></property>
  82         </bean>
  83 </beans>
  84 
  85 



3.做DAO代码,
java代码: 

  1   
  2    package infoweb. dao;
  3   
  4    import java. util. List;
  5    import java. util. Iterator;
  6   
  7    import infoweb. pojo. Board;
  8   
  9   
  10   import net. sf. hibernate. HibernateException;
  11   import net. sf. hibernate. Query;
  12   import net. sf. hibernate. Session;
  13  
  14   import org. springframework. orm. hibernate. HibernateCallback;
  15   import org. springframework. orm. hibernate. support. HibernateDaoSupport;
  16  
  17  
  18   /**
 19   * <p>Title: 版块分类DAOImpl</p>
 20   * <p>Description: 用树型结构实现</p>
 21   * <p>Copyright: Copyright (c) 2004</p>
 22   * <p>Company: </p>
 23   * @author 段洪杰
 24   * @version 1.0
 25   */

  26  
  27  
  28   public class BoardTreeDAOImpl extends HibernateDaoSupport implements
29      IBoardTreeDAO {
  30  
  31  
  32    /**
 33     * 构造函数
 34     */

35    public BoardTreeDAOImpl ( ) {
  36      super ( );
  37    }
  38  
  39  
  40    /**
 41     * 通过ID取得版块
 42     * @param id String
 43     * @return Board
 44     */

  45  
46    public Board getBoardById ( String id ) {
  47      Board board = (Board ) getHibernateTemplate ( ). load (Board. class, id );
  48      return board;
  49    }
  50  
  51  
  52    /**
 53     * 取根叶
 54     * @return Iterator
 55     */

56    public Iterator getRoots ( ) throws HibernateException {
  57      String queryString =
  58          "select board from Board as board where board. parentId= 'root' order by board. id desc";
  59      List roots = getHibernateTemplate ( ). find (queryString );
  60      return roots. iterator ( );
  61    }
  62  
  63  
  64    /**
 65     * 存根叶
 66     * @param board Board
 67     */

68    public void setRoot (Board board ) {
  69      board. setParentId ("root" );
  70      getHibernateTemplate ( ). save (board );
  71    }
  72  
  73  
  74    /**
 75     * 取子叶
 76     * @param  parentid String
 77     * @return List
 78     */

79    public Iterator getChildren ( String parentid ) {
  80      /*
 81           String queryString =
 82       "select board as Board where board.parent_id='parentid' order by board.id desc";
 83           List children = getHibernateTemplate().find(queryString);
 84           return children;
 85       */

  86      Board parent = (Board ) getHibernateTemplate ( ). load (Board. class, parentid );
  87      return parent. getChildren ( ). iterator ( );
  88    }
  89  
  90  
  91    /**
 92     * 取子叶数
 93     * @param parentid String
 94     * @return int
 95     */

  96  
97    public int getChildrenCount ( String parentid ) {
  98      /*
 99           String queryString =
 100      "select count(*) Board where board.parent_id='parentid' order by board.id desc";
 101          List children = getHibernateTemplate().find(queryString);
 102          int count = ((Integer) children.iterator().next()).intValue();
 103          return count;
 104      */

  105     Board parent = (Board ) getHibernateTemplate ( ). load (Board. class, parentid );
  106     int count = parent. getChildren ( ). size ( );
  107     return count;
  108   }
  109 
  110 
  111   /**
 112    * 存子叶
 113    * @param parentLeaf Leaf
 114    */

115   public void setChild (Board board, String parentid ) {
  116     board. setParentId (parentid );
  117     getHibernateTemplate ( ). save (board );
  118   }
  119 
  120 
  121   /**
 122    *
 123    * 删除该叶和它的子叶
 124    * @param board Board
 125    */

126   public void deleteBranch (Board board ) {
  127       getHibernateTemplate ( ). delete (board );
  128   }
  129 
  130 
  131   /**
 132    * 根据子叶得到父叶
 133    * @param child Board
 134    * @return Board
 135    */

136   public Board getParentByChild (Board child ) {
  137     String parentId = child. getParentId ( );
  138     Board parent = (Board ) getHibernateTemplate ( ). load (Board. class, parentId );
  139     return parent;
  140   }
  141 
  142 
  143   /**
 144    * 通过子ID得到父叶
 145    * @param id String
 146    * @return Board
 147    */

148   public Board getParentByChildId ( String id ) {
  149     Board child = (Board ) getHibernateTemplate ( ). load (Board. class, id );
  150     Board parent = (Board ) getHibernateTemplate ( ). load (Board. class,child. getParentId ( ) );
  151     return parent;
  152   }
  153  }
  154 
  155 



4.做service层代码

java代码: 

   
    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;
  10  import net. sf. hibernate. HibernateException;
  11 
  12  /**
 13  * <p>Title: </p>
 14  * <p>Description: </p>
 15  * <p>Copyright: Copyright (c) 2004</p>
 16  * <p>Company: </p>
 17  * @author 段洪杰
 18  * @version 1.0
 19  */

20  public class BoardServiceSpringImpl implements IBoardService {
  21 
  22     private IBoardTreeDAO boardTreeDAO;
  23 
24     public BoardServiceSpringImpl ( ) {
  25         super ( );
  26     }
  27 
  28     /**
 29      * 取所有roots版块
 30      * @return Iterator
 31      */

32     public Iterator getRoots ( ) throws BoardException {
  33         Iterator roots = null;
34         try {
  35             roots = boardTreeDAO. getRoots ( );
  36         } catch ( Exception ex ) {
  37             throw new BoardException ("取ROOT版块时出错! " + ex. toString ( ) );
  38         }
  39         return roots;
  40     }
  41 
  42     /**
 43      * 增加Root新版块
 44      * @param board Board
 45      */

46     public void setRoot (Board board ) throws BoardException {
47         try {
  48             boardTreeDAO. setRoot (board );
  49         } catch ( Exception ex ) {
  50             throw new BoardException ("增加ROOT版块时出错! " + ex. toString ( ) );
  51         }
  52     }
  53 
  54     /**
 55      * 删除版块 (包含下级版块)
 56      * @param board Board
 57      */

58     public void removeBoard (Board board ) throws BoardException {
59         try {
  60             boardTreeDAO. deleteBranch (board );
  61         } catch ( Exception ex ) {
  62             throw new BoardException ("删除版块时出错! " + ex. toString ( ) );
  63         }
  64     }
  65 
  66     /**
 67      *
 68      * @return IBoardTreeDAO
 69      */

70     public IBoardTreeDAO getBoardTreeDAO ( ) {
  71         return boardTreeDAO;
  72     }
  73 
  74     /**
 75      *
 76      * @param boardTreeDAO IBoardTreeDAO
 77      */

78     public void setBoardTreeDAO (IBoardTreeDAO boardTreeDAO ) {
  79         this. boardTreeDAO = boardTreeDAO;
  80     }
  81 
  82  }
  83 
  84 



5.做ACTION的父类

java代码: 

   
    package infoweb. web;
   
   
    import javax. servlet. ServletContext;
    import org. apache. struts. action. Action;
    import org. apache. struts. action. ActionServlet;
    import org. springframework. web. context. WebApplicationContext;
    import org. springframework. web. context. support. WebApplicationContextUtils;
  10 
  11  import infoweb. service. IBoardService;
  12 
  13 
  14  /**
 15  * <p>Title: </p>
 16  * <p>Description: </p>
 17  * <p>Copyright: Copyright (c) 2004</p>
 18  * <p>Company: </p>
 19  * @author 段洪杰
 20  * @version 1.0
 21  */

  22 
23  public class BaseAction extends Action {
  24 
  25   private IBoardService boardService;
  26 
27   public void setServlet (ActionServlet actionServlet ) {
  28     super. setServlet (actionServlet );
  29     ServletContext servletContext = actionServlet. getServletContext ( );
  30     WebApplicationContext wac =
  31         WebApplicationContextUtils. getRequiredWebApplicationContext (
  32         servletContext );
  33     this. boardService = (IBoardService ) wac. getBean ("boardService" );
  34   }
  35 
36   protected IBoardService getBoardService ( ) {
  37     return boardService;
  38   }
  39 
  40  }
  41 
  42 



6.做action类
java代码: 

   
    package infoweb. web;
   
    import infoweb. pojo. Board;
    import org. apache. commons. beanutils. PropertyUtils;
    import org. apache. struts. action.*;
    import org. apache. log4j. Logger;
    import javax. servlet. http.*;
    import java. util. Iterator;
  10  import java. util. Date;
  11 
  12  /**
 13  * <p>Title: </p>
 14  * <p>Description: </p>
 15  * <p>Copyright: Copyright (c) 2004</p>
 16  * <p>Company: </p>
 17  * @author 段洪杰
 18  * @version 1.0
 19  */

  20 
  21 
22  public class SetBoardAction extends BaseAction {
  23 
  24     private static Logger log = Logger. getLogger (SetBoardAction. class );
  25 
  26     public ActionForward execute (ActionMapping actionMapping,
  27                                  ActionForm actionForm,
  28                                  HttpServletRequest httpServletRequest,
  29                                  HttpServletResponse httpServletResponse ) throws
30             Exception {
  31 
  32         // SessionBean sessionBean = (SessionBean) httpServletRequest.getSession().getAttribute("sessionBean");
  33         BoardForm boardForm = (BoardForm ) actionForm;
  34         //String backURL = httpServletRequest.getHeader("Referer");
  35         /*
 36         if (sessionBean==null||!sessionBean.getIsLogon()) {
 37             httpServletRequest.setAttribute("message", "系统超时,或者没有登录 .返回重新登录!");
 38             httpServletRequest.setAttribute("locationFile",
 39                                             "location='index.jsp';");
 40             return actionMapping.findForward("message");
 41         }
 42         */

  43         Board board = new Board ( );
  44         boardForm. setCreateDate ( new Date ( ) );
  45         PropertyUtils. copyProperties (board, boardForm );
  46         getBoardService ( ). setRoot (board );
  47 
  48         httpServletRequest. setAttribute ("message", "版块信息录入完成!" );
  49         httpServletRequest. setAttribute ("locationFile",
  50                                         "<A HREF=/"javascript:history. back ( )/">返回</A>" );
  51         return (actionMapping. findForward ("success" ) );
  52     }
  53 
  54  }
  55 
  56 

学习中ing     编程小语
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值