程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 基於Spring例子的JPetStore分析

基於Spring例子的JPetStore分析

編輯:關於JAVA

這幾天一直在學習JPetStore這個基與輕量級j2EE架構的寵物電子商務網站,下面來分析一下基於Struts+Spring+Ibatis架構的用戶管理模塊.

首先分析一下jpetstore的用戶登錄界面,看struts-config.xml文件,

用戶信息Bean,用戶信息Bean為AccountActionForm配置兩個不同的實例。accountForm用戶存放用戶登錄信息。workingAccountForm用於用戶注冊,以及賬號修改時存放信息。<form-beans>
   <!--存放用戶登陸的賬號信息-->
   <form-bean name="accountForm"
type="org.springframework.samples.jpetstore.web.struts.AccountActionForm"/>
   <form-bean name="cartForm" type="org.springframework.samples.jpetstore.web.struts.CartActionForm"/>
   <form-bean name="emptyForm" type="org.springframework.samples.jpetstore.web.struts.BaseActionForm"/>
   <!--用於用戶注冊和個人資料修改時存放用戶信息-->
   <form-bean name="workingAccountForm"
type="org.springframework.samples.jpetstore.web.struts.AccountActionForm"/>
   <form-bean name="workingOrderForm"
type="org.springframework.samples.jpetstore.web.struts.OrderActionForm"/>
   </form-beans>
    

1.使用已有帳號登陸<action path="/shop/signonForm"
type="org.springframework.samples.jpetstore.web.struts.DoNothingAction"
   validate="false">
   <forward name="success" path="/WEB-INF/jsp/struts/SignonForm.jsp"/>
   </action>

   <action path="/shop/signon"
type="org.springframework.samples.jpetstore.web.struts.SignonAction"
   name="accountForm" scope="session" validate="false">
   <forward name="success" path="/shop/index.do"/>
   </action>

<!-- 用戶點擊登陸,系統調用 shop/signonForm 直接將用戶的登陸請求,轉向到SignonForm.jsp頁面(登陸界面),輸入用戶名,密碼,點擊登錄,系統將調用 shop/signon Action來處理用戶登錄請求,如果登陸失敗,頁面返回到SignonForm.jsp頁面(登陸界面),登陸成功,shop/signon 轉到主頁面shop/index.do。--〉

2.創建新帳號

<!-- 如果用戶在當前登錄頁面(SigonForm.jsp)中選擇“創建新帳號”,系統將調用“shop/newAccountForm”在NewAccountFormAction 的execute中為httpsession創建AccountActionForm用戶存放用戶的注冊信息,然後轉向到用戶注冊界面NewAccountForm.jsp --><action path="/shop/newAccountForm"
type="org.springframework.samples.jpetstore.web.struts.NewAccountFormAction"
   name="workingAccountForm" scope="session" validate="false">
   <forward name="success" path="/WEB-INF/jsp/struts/NewAccountForm.jsp"/>
   </action>

<!--用戶在填寫完注冊信息以後,注冊,系統調用“NewAccountAction”,如果注冊失敗,返回注冊界面,系統將顯示注冊的錯誤信息,如果注冊成功,系統自動轉向到主頁面。--><action path="/shop/newAccount"
type="org.springframework.samples.jpetstore.web.struts.NewAccountAction"
   name="workingAccountForm" scope="session"
validate="true" input="/WEB-INF/jsp/struts/NewAccountForm.jsp">
   <forward name="success" path="/shop/index.do"/>
   </action>

3.編輯賬號

<!-- 當用戶點擊修改用戶信息的時候,系統調用editAccountForm 為賬號的修改做一些必要的准備,然後定向到賬號修改頁面EditAccountForm.jsp,用戶輸入修改,點擊提交,系統調用shop/editAccount檢查修改資料是否合法,如果沒有錯誤,確認修改,轉到主頁面,若有錯誤,轉到賬號修改界面-><action path="/shop/editAccountForm" type="org.springframework.samples.jpetstore.web.struts.EditAccountFormAction"
   name="workingAccountForm" scope="session" validate="false">
   <forward name="success" path="/WEB-INF/jsp/struts/EditAccountForm.jsp"/>
   </action>

   <action path="/shop/editAccount" type="org.springframework.samples.jpetstore.web.struts.EditAccountAction"
   name="workingAccountForm" scope="session" validate="true" input="/WEB-INF/jsp/struts/EditAccountForm.jsp">
   <forward name="success" path="/shop/index.do"/>
   </action>

個人分析:

從jpetsore的賬號管理的源代碼來看,有以下幾個值得我們注意的地方(目前對struts還不是很熟悉):

1.AccountActionForm封裝了賬號Account,不知道是不是這個原因,需要在轉入創建賬號頁面,或者是修改賬號頁面的情況下,在action的doExecute執行中都創建了AccountActionForm實例,並對其進行了初始化,並把它加入了httpsession中。

2.系統用BaseActionForm繼承了ActionFrom ,使用BaseAction繼承了Action,同時把這兩個子類替代了其父類在系統中的作用,所余的from和action都是從這兩個派生類派生出來的。BaseActionFrom提供了方便的字段校驗,而BaseAction加入了

public void setServlet(ActionServlet actionServlet) {
   super.setServlet(actionServlet);
   if (actionServlet != null) {
   ServletContext servletContext = actionServlet.getServletContext();
   WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
   this.petStore = (PetStoreFacade) wac.getBean("petStore");
   }

很好的和spring銜接在了一起,獲得了系統的業務邏輯對象 。

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