SSH整合案例

此篇在上一篇博客的基礎上進行修改,實現註解開發,所需pom節點詳情,還請參考上一篇博客點擊打開鏈接

     使用註解方式來開發,需要做的事如下:

          先來看一下我們的註解版分層的結果目錄:

                                                         20171029115806322 (312×586)

        從圖中可以看到pojo層發生了改變,少了一個配置文件。當然,這只是表面上的,實際上需要改動的地方還是有好幾處的。


          我們先從實體層開始切入: 

                Rs:

       

[java] view plain copy
  1. package cn.jjz.pojo;  
  2.   
  3. import org.hibernate.annotations.GenericGenerator;  
  4.   
  5. import javax.persistence.*;  
  6.   
  7. /** 
  8.  * Created by lenovo on 2017/9/22. 
  9.  */  
  10. @Entity  
  11. @Table(name = "Rs")  
  12. public class Rs {  
  13.     @Id  
  14.     @GeneratedValue(generator="system-uuid")  
  15.     @GenericGenerator(name="system-uuid",strategy="uuid")  
  16.     private String id;  
  17.     @Column  
  18.     private String name;  
  19.     @Column  
  20.     private int age;  
  21.   
  22.   
  23.     public String getId() {  
  24.         return id;  
  25.     }  
  26.   
  27.     public void setId(String id) {  
  28.         this.id = id;  
  29.     }  
  30.   
  31.     public String getName() {  
  32.         return name;  
  33.     }  
  34.   
  35.     public void setName(String name) {  
  36.         this.name = name;  
  37.     }  
  38.   
  39.     public int getAge() {  
  40.         return age;  
  41.     }  
  42.   
  43.     public void setAge(int age) {  
  44.         this.age = age;  
  45.     }  
  46. }  
   我們再來看看dao層中的實現類:

      

[java] view plain copy
  1. package cn.jjz.dao;  
  2.   
  3. import cn.jjz.pojo.Rs;  
  4. import org.hibernate.SessionFactory;  
  5. import org.springframework.stereotype.Repository;  
  6.   
  7. import javax.annotation.Resource;  
  8.   
  9. /** 
  10.  * Created by lenovo on 2017/10/29. 
  11.  */  
  12. @Repository("RsDao")  
  13. public class RsDaoImpl implements  RsDao {  
  14.     @Resource  
  15.     private SessionFactory sessionFactory;  
  16.     public void add(Rs rs) {  
  17.         sessionFactory.getCurrentSession().save(rs);  
  18.     }  
  19.   
  20.     public void setSessionFactory(SessionFactory sessionFactory) {  
  21.         this.sessionFactory = sessionFactory;  
  22.     }  
  23.   
  24.     public SessionFactory getSessionFactory() {  
  25.         return sessionFactory;  
  26.     }  
  27. }  
       可以發現,添加上了註解

  再看看service層中的實現類:

 

[html] view plain copy
  1. package cn.jjz.service;  
  2.   
  3.   
  4. import cn.jjz.dao.RsDaoImpl;  
  5. import cn.jjz.pojo.Rs;  
  6.   
  7. import org.springframework.stereotype.Service;  
  8. import org.springframework.transaction.annotation.Transactional;  
  9.   
  10. import javax.annotation.Resource;  
  11.   
  12. /**  
  13.  * Created by lenovo on 2017/10/29.  
  14.  */  
  15. @Service("RsService")  
  16. public class RsServiceImpl implements RsService {  
  17.  @Resource(name = "RsDao")  
  18.     private RsDaoImpl rsDao;  
  19.   
  20.     @Transactional  
  21.     public void add(Rs rs) {  
  22.         rsDao.add(rs);  
  23.     }  
  24.   
  25.     public void setRsDao(RsDaoImpl rsDao) {  
  26.         this.rsDao = rsDao;  
  27.     }  
  28.   
  29.     public RsDaoImpl getRsDao() {  
  30.         return rsDao;  
  31.     }  
  32. }  
        也是加上了註解

我們再看看applicationContext.xml中的配置,有哪些改動:

     

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:context="http://www.springframework.org/schema/context"  
  4.        xmlns:tx="http://www.springframework.org/schema/tx"  
  5.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  6.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
  7.      http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context.xsd  
  8.      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd  
  9. ">  
  10.   
  11.     <context:component-scan base-package="cn.jjz"></context:component-scan>  
  12.     <!--1.配置數據源c3p0-->  
  13.     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">  
  14.         <property name="driverClass" value="${jdbc.driverClassName}"/>  
  15.         <property name="user" value="${jdbc.username}"/>  
  16.         <property name="password" value="${jdbc.password}"/>  
  17.         <property name="jdbcUrl" value="${jdbc.url}"/>  
  18.     </bean>  
  19.     <!--jdbc.properties-->  
  20.     <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>  
  21.     <!-- 配置session工廠     類:Local-->  
  22.     <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">  
  23.         <property name="dataSource" ref="dataSource"/>  
  24.         <property name="packagesToScan" value="cn.jjz.pojo"/>  
  25.         <property name="hibernateProperties">  
  26.             <props>  
  27.                 <prop key="hibernate.show_sql">true</prop>  
  28.                 <prop key="hibernate.format_sql">true</prop>  
  29.                 <prop key="hbm2ddl.auto">update</prop>  
  30.                 <prop key="hibernate.dialect">    org.hibernate.dialect.Oracle10gDialect</prop>  
  31.                 <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate5.SpringSessionContext</prop>  
  32.             </props>  
  33.         </property>  
  34.         <!--<property name="mappingDirectoryLocations" value="classpath:cn/jjz/pojo"></property>-->  
  35.     </bean>  
  36.       
  37.   
  38.     <!-- 事務管理器-->  
  39.     <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">  
  40.         <property name="sessionFactory" ref="sessionFactory"></property>  
  41.     </bean>  
  42.     <!--事務-->  
  43.     <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>  
  44.   
  45.   
  46. </beans>  
       

    非註解applicationContext.xml:

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>    
  2. <beans xmlns="http://www.springframework.org/schema/beans"    
  3.        xmlns:context="http://www.springframework.org/schema/context"    
  4.        xmlns:tx="http://www.springframework.org/schema/tx"    
  5.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  6.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd    
  7.      http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context.xsd    
  8.      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd    
  9. ">    
  10.     <!--1.配置數據源c3p0-->    
  11.     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">    
  12.         <property name="driverClass" value="${jdbc.driverClassName}"/>    
  13.         <property name="user" value="${jdbc.username}"/>    
  14.         <property name="password" value="${jdbc.password}"/>    
  15.         <property name="jdbcUrl" value="${jdbc.url}"/>    
  16.     </bean>    
  17.     <!--jdbc.properties-->    
  18.     <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>    
  19.     <!-- 配置session工廠     類:Local-->    
  20.     <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">    
  21.         <property name="dataSource" ref="dataSource"/>    
  22.         <property name="hibernateProperties">    
  23.             <props>    
  24.                 <prop key="hibernate.show_sql">true</prop>    
  25.                 <prop key="hibernate.format_sql">true</prop>    
  26.                 <prop key="hbm2ddl.auto">update</prop>    
  27.                 <prop key="hibernate.dialect">    org.hibernate.dialect.Oracle10gDialect</prop>    
  28.                 <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate5.SpringSessionContext</prop>    
  29.             </props>    
  30.         </property>    
  31.         <property name="mappingDirectoryLocations" value="classpath:cn/jjz/pojo"></property>    
  32.     </bean>    
  33.     
  34.     <!--3.dao-->    
  35.     <bean id="rsDao" class="cn.jjz.dao.RsDaoImpl">    
  36.         <property name="sessionFactory" ref="sessionFactory"></property>    
  37.     </bean>    
  38.     
  39.     <!--4.service-->    
  40.     <bean id="rsService" class="cn.jjz.service.RsServiceImpl">    
  41.         <property name="rsDao" ref="rsDao"></property>    
  42.     </bean>    
  43.     
  44.     <!--要用Spring去創建Action對象  Struts2的Action是多例的-->    
  45.     <bean id="rsAction" class="cn.jjz.action.RsAction" scope="prototype">    
  46.         <property name="rsService" ref="rsService"></property>    
  47.     </bean>    
  48.     
  49.     
  50.     <!-- 事務管理器-->    
  51.     <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">    
  52.         <property name="sessionFactory" ref="sessionFactory"></property>    
  53.     </bean>    
  54.     <!--事務-->    
  55.     <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>    
  56.     
  57.     
  58. </beans>    

       再看看struts.xml:

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <!DOCTYPE struts PUBLIC  
  4.         "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  
  5.         "http://struts.apache.org/dtds/struts-2.3.dtd">  
  6.   
  7. <struts>  
  8.   
  9.     <constant name="struts.devMode" value="true"></constant>  
  10.     <package name="one" namespace="/"  extends="struts-default">  
  11.   
  12.         <action name="add" class="cn.jjz.action.RsAction" method="add">  
  13.             <result name="success">/ok.jsp</result>  
  14.         </action>  
  15.   
  16.     </package>  
  17.   
  18. </struts>  

  最後看看需要改動的地方:

RsAction:

[java] view plain copy
  1. package cn.jjz.action;  
  2.   
  3. import cn.jjz.pojo.Rs;  
  4. import cn.jjz.service.RsService;  
  5. import com.opensymphony.xwork2.ActionSupport;  
  6. import org.apache.struts2.convention.annotation.Action;  
  7. import org.apache.struts2.convention.annotation.Result;  
  8. import org.springframework.core.StandardReflectionParameterNameDiscoverer;  
  9. import org.springframework.stereotype.Controller;  
  10.   
  11. import javax.annotation.Resource;  
  12. import javax.persistence.Column;  
  13. import java.util.List;  
  14.   
  15. /** 
  16.  * Created by lenovo on 2017/10/29. 
  17.  */  
  18. @Controller  
  19. public class RsAction extends ActionSupport {  
  20.     private Rs rs;  
  21.     @Resource(name = "RsService")  
  22.     private RsService rsService;  
  23.     @Action(value = "add",results = {@Result(name = "success",location = "/ok.jsp")})  
  24.     public String add(){  
  25.         rsService.add(rs);  
  26.         System.out.println(rs.getName());  
  27.         return SUCCESS;  
  28.     }  
  29.   
  30.     public Rs getRs() {  
  31.         return rs;  
  32.     }  
  33.   
  34.     public void setRs(Rs rs) {  
  35.         this.rs = rs;  
  36.     }  
  37.   
  38.     public RsService getRsService() {  
  39.         return rsService;  
  40.     }  
  41.   
  42.     public void setRsService(RsService rsService) {  
  43.         this.rsService = rsService;  
  44.     }  
  45. }  




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章