Spring自帶的JPetStore分析(一)

2021-03-31 13:49:19 字數 1671 閱讀 9006

spring mvc + spring + ibatis 或struts mvc + spring +ibatis

使用的是spring自帶的例子,與ibatis給出的例子還有有區別

***************=

安裝:我使用的環境是mysql,tomcat4

按照readme的說明編譯好war檔案後,根據兩個檔案建立資料庫表和插入資料,配置jdbc,會發現web-inf下面沒有東西,其實所有的servlet被打包到jpetstore.jar裡面去了。為了試驗,我將這個jar包刪除,用eclipse重新編譯了一下。

--------------

使用spring自帶的jpetstore,mvc使用了2種,spring的和struts的,預設的mvc框架是spring的。

如果要使用struts的,配置web.xml,將其中的*.do的對映改為struts的actionservlet(將被注釋的部分改掉就可以了)

資料持久層使用的是ibatis。

注意到所有的jsp頁面都放在web-inf下面,通過servlet訪問,這樣就不能直接通過位址直接訪問jsp頁面,提高了安全性。

先分析一下使用了struts mvc的部分。

index.html首頁給出了到shop/index.do的鏈結。

struts-config.xml中

其中donotiongaction返回actionforward物件success。為什麼這裡不直接呢?可能是考慮規範格式的問題吧。(經試驗,這種方式訪問沒有問題)

以下根據從訪問首頁開始到登入完成這麼乙個過程來了解一下具體的過程。(採用的是struts的mvc框架)

====index.jsp===

採用了taglib jstl。

頁面由4部分組成,includetop.jsp,本頁內容,includebanner.jsp,includebottom.jsp。

在includetop.jsp中利用taglib獲取session中的使用者資料。根據是否有資料顯示相應的內容。

===signonform.jsp===

登入在includetop.jsp中有鏈結,定義如下

也是乙個直接訪問jsp的跳轉。

signonform.jsp就是乙個表單" method="post">

配置中通過spring向petstoreimpl注入了5個dao。

===petstoreimpl===

這個是本程式主要的乙個business object。

通過5個dao提供的功能來獲得所需的資料

以account為例

先由petstore bean的配置檔案

注入accountdao,這個的定義為

而.springframework.samples.jpetstore.dao.ibatis.sqlmapaccountdao利用了spring的模版,將資料庫查詢封裝了起來

public class sqlmapaccountdao extends sqlmapclientdaosupport implements accountdao

其中sqlmapclientdaosupport 是spring的模版,這裡通過accountdao這個介面實現了依賴的注入。

模版根據ibatis的配置檔案來查詢,這裡是account.xml

這樣就獲得了account物件

羅羅嗦嗦了一點,下次分析其它部分。

Spring自帶的JPetStore分析(二)

spring帶的jpetstore的struts mvc版 使用了多級的繼承體系,有baseaction,securebaseaction,baseactionform。這些父類將常用的功能進行了一些封裝,對寫實際的程式還是有參考價值的。baseaction 繼承.apache.struts.act...

spring自帶快取機制

cacheable支援如下引數 負責將方法的返回值加入到快取中 value 快取位置名稱,不能為空.key 快取的key,預設為空,支援springel表示式.condition 觸發條件,只有滿足條件的情況下才會加入快取,預設為空,表示全部加入快取,支援springel表示式.cachevict支...

Spring自帶定時任務

spring自帶實現定時任務有兩種方式,一種是通過註解的方式實現,一種是通過在配置檔案中配置後實現。1.task命名空間 xmlns task xsi schemalocation spring task 3.1.xsd 2.xml檔案中配置 或直接使用註解 enablescheduling pub...