基於Spring例子的JPetStore分析
這幾天一直在學習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銜接在了一起,獲得了系統的業務邏輯物件
注:以上內容來自網路,本人不承擔任何連帶責任
文章轉自:http://java.chinaitlab.com/Spring/38426.html
相關文章
- 三. 基於例子的學習
- jpetstore的思考!
- spring jpetstore的小bug,不知道JF的petstore是否也有Spring
- 求助:Spring web framework(jpetstore)中幾個簡單的問題SpringWebFramework
- Spring Security原始碼分析十三:Spring Security 基於表示式的許可權控制Spring原始碼
- 關於JPetstore連線資料庫問題資料庫
- 基於Spring Batch的Spring Boot的教程 - BaeldungBATSpring Boot
- Spring基於XML方式的使用SpringXML
- 基於Maven的Spring整合CXFMavenSpring
- [TEAP早期試讀]基於WebSocket的聯機作圖例子Web
- JPetStore架構的疑問架構
- 執行JPetStore的問題
- 基於DEM的坡度坡向分析
- 基於Python的效能分析Python
- spring boot基於Java的容器配置Spring BootJava
- Spring基於註解的IoC配置Spring
- Spring基於註解的aop配置Spring
- 基於Spring Cloud的微服務落地SpringCloud微服務
- Spring(5、基於註解的事物)Spring
- 基於 abapGit 和 abaplint 的 ABAP 持續整合的一個例子Git
- Spring7:基於註解的Spring MVC(下篇)SpringMVC
- Spring6:基於註解的Spring MVC(上篇)SpringMVC
- Spring Boot 基於註解驅動原始碼分析--自動配置Spring Boot原始碼
- Spring之路(38)–基於PlatformTransactionMSpringPlatform
- 基於知識引入的情感分析
- 基於Apache Doris的湖倉分析Apache
- Spring Aop基於註解的實現Spring
- Spring中基於XML方式的AOP操作SpringXML
- 基於Spring Integration和Apache Camel的SEDASpringApache
- 基於Spring的Restful介面生成工具SpringREST
- 基於註解的 Spring MVC詳解SpringMVC
- Spring基於註解的AOP測試Spring
- Spring AOP基於xml的方式實現SpringXML
- Spring7——開發基於註解形式的springSpring
- Spring Boot 基於註解驅動原始碼分析--自動掃描Spring Boot原始碼
- 初學者Jpetstore問題?
- 一個簡單的spring-boot例子Springboot
- Spring定時任務的簡單例子Spring單例