Struts2+Spring整合後Action物件建立方式
1、Spring容器建立:(web.xml中配置)
Xml程式碼- <!-- spring配置檔案-->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>WEB-INF/classes/com/zjy/gpx/config/applicationContext*.xml</param-value>
- </context-param>
-
<!-- Spring監聽器,隨web應用啟動初始化Spring容器 -->
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
2、action建立的兩種方式,第一種由Spring負責管理:
struts.xml檔案中
Xml程式碼- <!-- spring來管理action物件的建立 -->
-
<constant name="struts.objectFactory"
- <!-- 省,市,縣地區選擇 -->
- <action name="city_*" class="coreCityAction" method="{1}">
- <result name="success">/success.jsp</result>
- <result name="error">/error.jsp</result>
- </action>
applicationContext檔案中:
- <bean id="coreCityAction" class="com.zjy.gpx.struts.CoreCityAction">
- <property name="coreCityService" ref="coreCityService" />
- </bean>
struts.xml檔案中action配置的class屬性對應spring配置檔案中Bean的id名,當struts2將請求轉發給指定的Action時,struts.xml中的Action就是個“偽”Action,因為它的class屬性不是一個真實的類,而它指定的是spring容器中Action例項的id。
注意:由Spring負責建立action物件的時候一般要加上scope屬性,比如:scope = "prototype",因為spring預設生成的Bean是單例的,而struts2負責生成的action是多例的,每個action值棧中都對應一個請求存放不同的區域性變數,所以這裡需要加上scope屬性。
這種方式不足之處:必須把所有action配置在spring中,而且struts.xml還要寫生一個偽action,導致配置檔案臃腫;
3、第二種方式:Spring的自動裝配,Action會自動從Spring容器中獲取邏輯層元件(service)
struts.xml檔案(和未整合前一致)
Xml程式碼- <action name="relogin" class="com.xxt.user.action.LoginAction">
- <result name="input" type="freemarker">/login/index.ftl</result>
- <result name="error" type="freemarker">/error.ftl</result>
- </action>
applicationContext檔案中:(一個簡單的Bean)
Xml程式碼- <bean id="loginService"
- class="com.xxt.user.service.impl.LoginServiceImpl">
- <property name="dbs" ref="dbs"></property>
- </bean>
action方法中有LoginServiceImpl loginService = null;然後setter()方法。
基本流程是這樣的,這種情況還是由Struts2自己建立Action物件,建立後的物件會去Spring容器中尋找它成員變數對應的Bean,預設的自動裝配策略是按照名字來匹配的。
通過設定struts.objectFactory.spring.autoWire常量來改變Spring裝配策略。幾個常用的值:
name、type、auto、constructor,這個和Spring自身的轉配策略是相同的。
這種方式優點:struts.xml檔案和未整合前是一致的,主要是要在spring配置檔案中定義邏輯層的Bean,相比前一種好處就是簡化配置檔案。
缺點:如果採用預設自動裝配策略,action類中的成員變數名要和spring中Bean id名保持一致,且程式碼可讀性差些。
相關推薦
Struts2+Spring整合後Action物件建立方式
1、Spring容器建立:(web.xml中配置) Xml程式碼 <!-- spring配置檔案--> <context-param> <param-name>contextConfigLoc
mybatis與spring整合後,#方式查詢速度特別慢解決
首先看下#{},${}區別 這裡引用別人總結的 在這次專案開發中,sql語句非常長,傳入引數雖然才有一個日期,但是在語句中#{date}的佔位多達20多個,這樣就造成解析過慢,引數生成再到語句就差不多要2分鐘,查詢出來耗時3分鐘,後來實在沒辦法,在捨棄了防止sql注入的安全下。使
Spring概念和三種物件建立方式
目錄 概念 Spring IOC ( 反轉控制) DI(依賴注入) BeanFactory ApplicationContext Bean元素的scope屬性 三種物件建立方式 構
Spring整合Quartz的3種方式
1.使用xml配置方式 Maven依賴 <properties> <!-- spring版本號 --> <spring.version>4.2.2.RELEASE</spring.version>
Spring Boot專案幾種建立方式
Spring Boot為新一代開發框架,關於框架的詳細資訊,各位可以網上自行搜尋,本篇博文主要介紹一下如何建立一個Spring Boot的專案。因為本次介紹的幾種建立方式都是基於Maven的,所以請各位看官再繼續閱讀之前請先準備好Maven的環境,好了,下面我們
Spring 整合hibernate 無法自動建立表,控制檯沒有報錯
症狀 Spring 整合hibernate 無法自動建立表,控制檯沒有報錯 百度了幾天了 主要有一下幾個原因 1、 注意name="hibernate.dialect" 而不能是name="dialect" &n
Spring bean的三種建立方式
1、建立Spring工程 使用eclipse建立一個Spring工程,一個簡單的方法就是先建立一個Java工程,然後將Spring的Jar包全部放入到工程裡面即可開始編寫基於Spring框架的程式。Spring的Jar包可以從github上的原始碼中取得,下載地址是:。
spring整合activemq傳遞物件注意事項
初衷:兩個專案分別部署在兩臺伺服器上,專案之間以activemq傳遞object訊息 拓樸結構: 伺服器A:tomcat,專案A--生產者 伺服器B:tomcat、activemq、專案B--消費者 專案A主要程式碼 src/main/resources/ActiveMQ
javascript最常用的物件建立方式
1 //第一種 2 function Demo(){ 3 var obj=new Object(); 4 obj.name="Yubaba"; 5 obj.age=12; 6 obj.firstF=function(){ 7 } 8
spring整合hibernate的兩種方式
我們學過spring的同學都知道,spring可以整合其他的框架協同開發,大大的降低開發的時間和提高了效率,但是我們在配置的時候總會發生各種各樣的問題,下面我記錄一下我在配置的時候出現的
struts2使用註解配置Action傳參方式
@Action(value = "operatorRoleAction", results = { @Result(name = "view", location = "/bussiness/operatorrole_view.jsp", type = "dispatche
Spring整合Mybatis【自動掃描方式】
一、Spring配置檔案: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:tx="h
Spring系列教程七: Spring 整合mybatis的四種方式
一、使用採用資料對映器(MapperFactoryBean)的方式註解實現整合mybatis 不用寫mybatis對映檔案,採
Spring整合Struts2框架的第一種方式(Action由Struts2框架來創建)。在我的上一篇博文中介紹的通過web工廠的方式獲取servcie的方法因為太麻煩,所以開發的時候不會使用。
rac println 需要 如果 value const tps http 建立 1. spring整合struts的基本操作見我的上一篇博文:https://www.cnblogs.com/wyhluckdog/p/10140588.html,這裏面將spring與st
Spring(五):Spring&Struts2&Hibernate整合後,實現查詢Employee信息
view event last .html ssh tla url 配置文件 hid 背景: 基於之前兩篇文章《Spring(三):Spring整合Hibernate》、《Spring(四):Spring整合Hibernate,之後整合Struts2》,了解了
Spring整合Struts2和Hibernate+Maven(一)之Maven專案建立
趁著畢設的功夫,寫一些東西。也算是記錄個人平時畢設完成的過程。 建立專案 工具:intellij idea+JDK1.6+Maven 第一步:New Project ->點選左側maven ->勾選Create fromarchetype 後選擇maven-archet
javaEE Mybatis,Mybatis與Spring整合之動態代理方式(推薦),自動建立Dao層實現類
src/applicationContext.xml(Spring核心配置檔案): <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.or
2 struts2 Action類的三種建立方式
目前都在使用繼承ActionSupport類的方法,因為實現了很多方法。 1.直接建立Java類 package action; /** * 測試action用類 * action類必要條件:public修飾符 返回值String * 需要在strust.xm
spring容器建立bean物件的方式
1)xml檔案中有bean的配置,而且這個bean所對應的java類中存在一個無參構造器,那麼這個時候spring容器就可以使用反射呼叫無參構造器來建立例項了(常規的方式) 2)通過工廠類獲得例項(工廠類實現了介面FactoryBean<?>) 例如: xml中的配置
07.Spring-配置詳解-Spirng建立物件的三種方式
測試類 package vc.helloworld.test; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springfra