1. 程式人生 > >11.SSH整合

11.SSH整合

tex jsp clas blog action 如果 管理 user mce

由於自己學習的版本比較落後,這裏就不總結了

  在我這個版本整合的過程中的幾點問題:

  1.在web.xml的配置過程中:
    

<!-- 如果使用的是load獲取數據,在jsp頁面申請取得數據時才真正的執行sql,而此時session已經關閉 -->
  <!-- 需要加上 OpenSessionInViewFilter 這個攔截器,用於延長session在jsp調用完後再關閉,另外需要寫在 struts 攔截器之前 -->
  <!-- 原因:Filter順序—先進後出,寫在 struts之前,先經過openSessionInViewFilter,由其管理session,struts攔截完後,openSessionInViewFilter再決定 關閉session的時間
--> <!-- 另外:這個過濾器會對事務產生影響,如果方法沒有加上事務邊界,那麽 openSessionInViewFilter 自動將該方法變為 只讀 方法,所以需要在配置 文件中 指定 事務邊界--> <filter> <filter-name>openSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class
> </filter> <filter-mapping> <filter-name>openSessionInViewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

  

  2.註:struts2 Spring 整合之後,Action 的 生成方式有兩種

第一種:<action name="user" class="com.bjsxt.registration.action.UserAction">

這種方式 struts 創建Actionstruts創建的Action有幾個特點:

1.不需要寫 @Resource Action一產生的時候呢,會到Spring容器裏面去找它要註入的內容 servicedao等)(只要有 get set 法,默認就會按照 byName的方式 自動裝配到Action中)

2.不需要寫 @Component,因為,Action struts管理的,寫了只會在Spring容器中多出來個bean而已

3.不需要寫 @Scope(prototype)默認設置就是每次訪問都創建Action

第二種:<action name="user" class="u> 使用action標簽中 class屬性配合 @Componentu

這種方式可以由 spring 創建Actionspring創建的Action特點:

0.Action中需使用 @Componentu),來生成 Action 這個bean

1.可以 指定 註入 bean的 具體名字 ,即可以使用 @Resourcename=””;

2.需要 使用@Scope(prototype)不要忘記因為默認的應該是 ‘單例的’

    

註:struts2 Spring 整合之後,Action 的 生成方式有兩種

第一種:<action name="user" class="com.bjsxt.registration.action.UserAction">

這種方式 struts 創建Actionstruts創建的Action有幾個特點:

1.不需要寫 @Resource Action一產生的時候呢,會到Spring容器裏面去找它要註入的內容 servicedao等)(只要有 get set 法,默認就會按照 byName的方式 自動裝配到Action中)

2.不需要寫 @Component,因為,Action struts管理的,寫了只會在Spring容器中多出來個bean而已

3.不需要寫 @Scope(prototype)默認設置就是每次訪問都創建Action

第二種:<action name="user" class="u> 使用action標簽中 class屬性配合 @Componentu

這種方式可以由 spring 創建Actionspring創建的Action特點:

0.Action中需使用 @Componentu),來生成 Action 這個bean

1.可以 指定 註入 bean的 具體名字 ,即可以使用 @Resourcename=””;

2.需要 使用@Scope(prototype)不要忘記因為默認的應該是 ‘單例的’

11.SSH整合