程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 基於J2EE的SSH整合應用及操作示例二(CRUD操作及配置)

基於J2EE的SSH整合應用及操作示例二(CRUD操作及配置)

編輯:關於JAVA

CRUD是指在做計算處理時的增加(Create)、查詢(Retrieve)(重新得到數據)、更新(Update)和刪除(Delete)幾個單詞的首字母簡寫。主要被用在描述軟件系統中數據庫或者持久層的基本操作功能。

In computing, CRUD is an acronym for create, retrieve, update, and delete. It is used to refer to the basic functions of a database or persistence layer in a software system.

C reate new records

R etrieve existing records

U pdate existing records

D elete existing records.

在響應新增部門請求中,通過導入Struts 的配置文件(struts-config.xml) 來完成業務流程的部署。它把depAdd.jsp 和depAdd.do 連接起來。depAdd.jsp上產生客戶請求,depAdd.do 則對請求產生響應、處理jsp頁面上的數據。當點擊depAdd.jsp 上的保存按鈕

(  <div style="float: right; padding: 10px 25px 0 0;">
       <div class="right_button">
       <a href="#" onclick="check();return false;"><bean:message
                 key="go.add" /> </a>
       </div>
</div>)

先檢查頁面數據的正確性,校驗通過後將輸入數據用Set方法存入到userinfoForm這個FormBean中。

function check()
     {
       var userName = document.userinfoForm.userName.value;
       var password = document.userinfoForm.password.value;
       var length = document.userinfoForm.password.value.length;
       var repassword = document.userinfoForm.repassword.value;
         var tel = document.userinfoForm.tel.value;
         var department = document.userinfoForm.department.value;
      if(userName=="")
       {
         alert('部門管理員姓名不能為空!')
         return false;
       }

       if(password=="")
       {
         alert('密碼不能為空!')
         return false;
       }
       if(length<6||length>10)
       {
         alert('密碼必須大於6個字符小於10個字符!')
         return false;
       }
       if(repassword=="")
       {
         alert('重復密碼不能為空!')
         return false;
       }
       if(password!=repassword)
       {
         alert('密碼輸入不一致!')
         return false;
       }
       if(tel!="")
       {
         No = "0123456789()+-"
         for(i=0; i<tel.length; i++)
         {
                   var Checkstr = tel.charAt(i);
                     if (No.indexOf(Checkstr)== -1)
                     {
                             alert("聯系電話格式不正確!");
                             return false;
                     }
                  }
       }
             if(department=="")
       {
         alert('部門管理員所屬部門不能為空!')
         return false;
       }

       else
       {
         document.userinfoForm.submit();
       }

}

然後根據struts-config.xml調用depAdd.do (這將在Spring配置文件中指定相應的Action) 進行業務處理。在depAdd.do中頁面數據將從userinfoForm 中讀取。depAdd.do 執行成功後將顯示/ok.jsp頁面。depAdd.do對應的Action (DepAddAction)在Spring的配置文件(applicationContext.xml) 中指定。要把depAdd.do和DepAddAction對應起來,首先要在struts-config.xml 中配置Delegating RequestProcessor。其次,需要在application Context.xml中定義名字為“/depAdd”的受管JavaBean。每次對DepAddAction請求時,Delegating Request Processor將充當代理。同時,DepAddAction 使用到受管Java Beansm Service。要使用UserinfoService,需要在DepAddAction中生成UserinfoService的get()、set()方法,並且application Context.xml 中對“/depAdd”進行Dep Add Action的依賴注入。因為DepAddAction 並沒有直接去操作數據訪問Userinfo DAO。而是通過調用業務邏輯層UserinfoService 中的方法來實現業務邏輯的。DepAddAction中部分代碼如下:

String userName = userinfoForm.getUserName();
   String pwd = userinfoForm.getPassword();
   String rePwd = userinfoForm.getRepassword();
   String tel = userinfoForm.getTel();
   String dep = userinfoForm.getDepartment();
   // 生成userinfo對象
   Userinfo userinfo = new Userinfo();
   // 將從表單中獲得的值賦給該對象
   userinfo.setUserName(userName);
   userinfo.setPassword(pwd);
   userinfo.setTel(tel);
   userinfo.setDepartment(dep);
   userinfo.setUserType("dep");// 所有新增用戶類型一律為dep
   // 數據入庫
   userinfoService.save(userinfo);

如果depAdd.do要對應另一個Action,則只要修改applicationContext.xml 即可,這將有利於系統的更新。同樣,如果另一個.do 要對應DepAddAction,也只要在applicationContext.xml中配置即可,這將有利於代碼的重用。在本系統中,Hibernate 和Spring 共用一個配置文件applicationContext.xml。Hibernate 從applicationContext.xml 中讀取和數據庫有關的信息。數據庫信息包括數據庫連接、與數據庫結構相對應的映射文件。在新增部門請求中,涉及到的數據庫表為userinfo表,它所對應的映射文件為Userinfo.hbm.xml。為了訪問數據庫表userinfo,只有Userinfo.hbm.xml映射文件是不夠的,還需要數據訪問類UserinfoDAO、數據類AbstractUserinfo,Userinfo。數據類Userinfo的實現較為簡單,它只是Java對象與數據庫表之間的對應,主要用於在各應用層間傳遞數據,在它的基礎上要實現的就是數據訪問類UserinfoDAO。系統在生成UserinfoDAO 的同時,也將UserinfoDAO作為JavaBean配置到applicationContext.xml 中。UserinfoDAO中是對userinfo 表進行保存、查詢、刪除或修改等基本數據操作,在applicationContext.xml 中需要userinfoService 進行UserinfoDAO 及其代理的依賴注入。這樣做,使得當UserinfoDAO 變化時,只需修改applicationContext.xml給userinfoService實現新的注入,指向新的實現就可以了,由此解除了數據訪問層和業務層的緊密耦合。數據訪問類UserinfoDAO 繼承於輔助類Hibernate-DaoSupport,借助於getHibernateTemplate() 獲得對Hibernate資源的操作,極大的方便了Hibernate框架的使用。在UserinfoDAO中定義了對數據庫表userinfo的操作函數。如下面代碼,即是UserinfoService 中調用的saveData 方法。

public class UserinfoDAO extends HibernateDaoSupport implements IUserinfoDAO {
   private static final Log log = LogFactory.getLog(UserinfoDAO.class);
   protected void initDao() {
     // do nothing
   }
   public void save(Userinfo transientInstance) {
   log.debug("saving Userinfo instance");
   try {
   getHibernateTemplate().save(transientInstance);
   log.debug("save successful");
   } catch (RuntimeException re) {
     log.error("save failed", re);
       throw re;
     }
   }

部門添加模塊中applicationContext.xml中的代碼如下:

<!-- 創建事務管理類 -->
   <bean id="transactionManager"
     class="org.springframework.orm.hibernate3.HibernateTransactionManager">
     <property name="sessionFactory">
       <ref local="sessionFactory" />
     </property>
   </bean>

<!-- 創建用戶事務代理類 -->
<bean id="userinfoDAOProxy"
     class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
     <property name="transactionManager">
       <ref bean="transactionManager" />
     </property>
     <property name="target">
       <ref local="UserinfoDAO" />
     </property>
     <property name="transactionAttributes">
       <props>
         <prop key="save*">PROPAGATION_REQUIRED</prop>
         <prop key="modify*">PROPAGATION_REQUIRED</prop>
         <prop key="delete*">PROPAGATION_REQUIRED</prop>
         <prop key="get">PROPAGATION_REQUIRED,readOnly</prop>
         <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
       </props>
     </property>
   </bean>

<!--進行UserinfoDAO及其代理的依賴注入-->
<bean id="UserinfoService" class="com.dpt.ec.service.impl.UserinfoService">
     <property name="userinfoDAO">
       <ref bean="userinfoDAOProxy" />
     </property>
   </bean>

<!--調度管理#新增部門管理員 -->
   <bean name="/depAdd" class="com.dpt.ec.web.action.admin.DepAddAction"
     singleton="false">
     <property name="userinfoService">
       <ref bean="UserinfoService" />
     </property>
   </bean>

部門添加模塊中struts-config.xml中的代碼如下:

<form-beans>


<form-bean name="userinfoForm" type="com.dpt.ec.web.form.UserinfoForm" />
</form-beans>

   <!-- 調度管理#新增加部門管理員-->
     <action path="/depAdd" name="userinfoForm"
       type="org.springframework.web.struts.DelegatingActionProxy" scope="request" validate="false">
       <forward name="success" path="/ok.jsp" />
       <forward name="warning" path="error.pub" />
       <forward name="failure" path="error.sys" />
     </action>

在本項目的開發過程中運用這樣的技術方法大大提高了開發效率、增加了程序的可讀性、減少了模塊間的耦合性,這樣使得系統更加容易更新和維護。

出處:http://gaochaojs.blog.51cto.com/812546/210131

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved