Spring2.5、Struts2、Ibatis開發架構搭建(SSI)__架構

來源:互聯網
上載者:User

一、架構下載

1.1   Struts2架構

       Struts2架構發展於WebWork,現在捐獻給了Apache開源組織,最新版本的Struts2架構可以從位於Apache官方網站的Struts2項目中擷取,Struts2架構的項目首頁地址為:http://struts.apache.org/ ,下載頁面地址為: http://struts.apache.org/download.cgi

,開啟下載地址以後自己選擇最新發行的版本即可,新手的話下載Full Distribution的版本,例如http://struts.apache.org/download.cgi#struts2014中的struts-2.0.14-full.zip。

為了讓struts2能夠支援json格式的返回資料,還需要下載json外掛程式,下載地址為

http://code.google.com/p/jsonplugin/,下載檔案為jsonplugin-0.31.jar  檔案。

1.2   Spring2.5 架構

       Spring架構的官方網站地址:http://www.springframework.org/,下載頁面為:http://www.springsource.org/download,開啟下載頁面以後選擇Get the latest Spring releases here中的發行包去下載使用,注意Spring官方網站中包含的架構有很多,包括流程處理、安全、Web服務等很多種架構,我們需要下載的架構是Spring FrameWork 的某個版本,不是其它的那些架構。

1.3   Ibatis架構

        iBATIS架構的首頁是http://ibatis.apache.org/,在開啟的網站介面中選擇 選擇左邊的Get software中的for java串連,在開啟的介面中選擇下載串連。

1.4   其它(資料庫緩衝池架構等)

        如果需要使用Ms Sql Server資料庫的話,還需要在項目中加入jtds的JDBC驅動程式,下載地址http://jtds.sourceforge.net/,找到download串連,按提示資訊下載即可。下載DBCP資料庫緩衝池架構,下載地址為http://commons.apache.org/dbcp/,下載最新版本即可,因為DBCP架構是apache開源軟體組織的眾多架構中的一部分,要讓DBCP工作的話,還需要common-pool架構,自行到apache官方網站下載。 

二、向項目中加入Spring Struts iBATIS架構

2.1 準備工作

將下載的三個架構分別解壓縮。

建立一個Web Project。

2.2 向項目中加入Spring架構

將Spring解壓縮以後spring-framework-2.5.6-with-dependencies\spring-framework-2.5.6\dist目錄中的spring.jar複製到Web項目的WEB-INF/lib目錄中。

複製spring-framework-2.5.6-with-dependencies\spring-framework-2.5.6\lib\log4j中的log4j相關的jar檔案到項目中WEB-INF/lib目錄中。

開啟WEB項目中的WEB-INF目錄中的web.xml檔案,添加及結合項目實際情況配置以下內容

 <!-- 以為是應用程式名稱 --><display-name>JI</display-name><!-- 以下是應用程式描述說明性文字 --><description>Job Integration</description><!-- 上下文參數,用於log4j以及spring中使用 --><context-param><param-name>webAppRootKey</param-name><param-value>ji.root</param-value></context-param><!-- 應用程式上下文參數,指定log4j日誌架構使用的配置參數檔案位置 --><context-param><param-name>log4jConfigLocation</param-name><param-value>/WEB-INF/log4j.properties</param-value></context-param><!-- 應用程式上下文參數,指定spring設定檔位置 --><context-param><param-name>contextConfigLocation</param-name><param-value>

 

例如 /WEB-INF/spring/applicationContext.xml

</param-value></context-param><!-- 監聽器,用於初始化log4j日誌架構的 --><listener><listener-class>org.springframework.web.util.Log4jConfigListener</listener-class></listener><!-- 監聽器,用於初始化spring架構 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>


2.3 向項目中添加Struts2架構

開啟解壓縮以後的Struts2架構目錄,找到\struts-版本-all\struts-版本\lib目錄,複製*.jar檔案到WEB項目的WEB-INF/lib目錄中。

複製jsonplugin-0.31.jar  到項目的WEB-INF/lib目錄中。

開啟WEB項目中的WEB-INF/web.xml檔案,添加以下內容:

<!-- 過濾器,struts2使用的,用於銷毀某些不再使用的對象等-->    <filter>        <filter-name>struts-cleanup</filter-name>        <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>    </filter><!--過濾器,struts2使用的 -->    <filter>        <filter-name>struts</filter-name>        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>    </filter>    <!-- 以下是struts2使用的用於清除或銷毀某些對象的過濾器,要保證在struts過濾器映射之前配置這一項 -->    <filter-mapping>        <filter-name>struts-cleanup</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>    <!-- struts2用於的過濾器映射 -->    <filter-mapping>        <filter-name>struts</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>


找到項目的來源程式目錄,一般在Eclipse開發工具中都是src目錄,添加以下幾個檔案(注意大小寫),struts.properties,struts.xml,globalMessages.properties ,其中

struts.properties檔案中的內容為:

struts.custom.i18n.resources=globalMessagesstruts.objectFactory=springstruts.objectFactory.spring.autoWire=typestruts.ui.theme=simplestruts.locale =zh_CNstruts.i18n.encoding=UTF-8struts.configuration.xml.reload=truestruts.multipart.parser=jakarta struts.multipart.maxSize=10000000struts.devMode=false


globalMessages.properties檔案中的內容為:

SMSPageTitle=\u5b89\u5fbd\u7701\u8840\u6db2\u4fe1\u606f\u77ed\u4fe1\u5e73\u53f0login.error=\u60a8\u8f93\u5165\u7684\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef\uff01userId.required=\u60a8\u7684\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a\uff01\uff01passward.required=\u60a8\u7684\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a\uff01\uff01datebase.error=\u6570\u636e\u5e93\u64cd\u4f5c\u9519\u8bef\uff01\uff01\uff01validCode_error=\u9a8c\u8bc1\u7801\u9519\u8bef\uff01\uff01retistSdk.error=\u6ce8\u518cSDK\u5931\u8d25\uff01\u8bf7\u68c0\u67e5\u5e8f\u5217\u53f7\u548c\u5bc6\u7801\uff01\uff01retistSdk.success=\u8f6f\u4ef6SDK\u6ce8\u518c\u6210\u529f\uff01\uff01\uff01logoutSdk.success=\u60a8\u5df2\u6210\u529f\u6ce8\u9500SDK\uff01\uff01logoutSdk.error=\u6ce8\u9500SDK\u5931\u8d25\uff0c\u68c0\u67e5\u7f51\u7edc\u8fde\u63a5\uff01\uff01\uff01chargUp.error=\u5145\u503c\u5931\u8d25\uff0c\u8bf7\u68c0\u67e5\u5361\u53f7\u548c\u5bc6\u7801\uff01\uff01sdkNotReg=\u7cfb\u7edfSDK\u6ca1\u6709\u6ce8\u518c\uff01\uff01\uff01\uff01struts.messages.error.uploading=\u6587\u4ef6\u65e0\u6cd5\u6b63\u5e38\u4e0a\u4f20struts.messages.error.file.too.large=\u6587\u4ef6\u5927\u5c0f\u8d85\u8fc7\u6700\u5927\u5141\u8bb8\u503cstruts.messages.error.content.type.not.allowed=\u6587\u4ef6\u7c7b\u578b\u4e0d\u5728\u4e0a\u4f20\u6587\u4ef6\u5141\u8bb8\u7c7b\u578b\u4e2d


最後一個檔案是struts.xml中的內容,這個檔案是struts的參數設定檔,參考配置內容:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"        "http://struts.apache.org/dtds/struts-2.0.dtd"><struts><constant name="struts.i18n.encoding" value="UTF-8"></constant><package name="login" extends="struts-default"><action name="login" class="edu.xw.ji.action.LoginAction"method="login"><result name="success">/dev_test/login.jsp</result></action></package><package name="ji_common" extends="json-default"><interceptors><interceptor-stack name="myDefaultStack"><interceptor-ref name="defaultStack" /></interceptor-stack></interceptors><default-interceptor-ref name="myDefaultStack"></default-interceptor-ref><global-results><result name="error">/pages/errorMessage.jsp</result><result name="warn">/pages/warnMessage.jsp</result></global-results></package><include file="edu/xw/ji/action/dict/struts2_dict.xml" /></struts>


注意上面的struts.xml設定檔中有兩個樣本package,名稱為login的package是從struts-default包繼承下來的,不能夠實現json格式的action返回,後面的ji_common是從json-default包繼承下來的,以後在項目中所有程式開發人員自己編寫的action中使用到json格式的返回結果時可以從ji_common包繼承下來。

2.4 向項目中添加iBATIS架構

找到解壓縮的iBATIS壓縮包中的ibatis-2.3.4.726\lib目錄,複製裡面的.jar檔案到項目中的WEB-INF/lib目錄中。

2.5 添加資料庫緩衝池架構

複製DBCP緩衝池架構中的commons-dbcp-x.x.x.jar檔案到項目中WEB-INF/lib目錄中去,複製DBCP架構工作時需要使用的common-pool相關的jar檔案到項目中的WEB-INF/lib目錄中去,DBCP在項目中是被配置到spring當中去使用,所以接下來的一系列工作都與spring的配置有關。

三、整合Spring2.5,Struts2,iBATIS,DBCP,Log4j

3.1 what’s the point。

為什麼要“整合”這些架構呢。在程式碼中由程式員負責處理與控制一切不是很好嗎。要這麼多的架構搭配在一起工作有什麼好處呢。答案只有一個,“省事”,節省程式員開發程式的時間。

整合這些架構的關鍵一點就是Spring,Spring是所有這些架構在一起工作的粘合劑,整合的工作重心就是將web MVC架構、ORM架構、資料庫緩衝池架構、日誌架構等全部交給Spring管理,由Spring調配使用這些架構綜合在一起工作。

3.2 Spring如何讓Web項目載入。

在第2.2小節中的配置參數中有一個listener是用來讓我們的web項目在啟動時就可以自動載入Spring架構及其參數設定檔的,即下面的這一行配置參數。

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>


3.3 Spring的參數設定檔如何被自動載入上。

配置了Spring自動載入以後,在web項目的WEB-INF/web.xml中應該配置Spring參數檔案的載入位置,即在2.2小節中需要配置的

<!-- 應用程式上下文參數,指定spring設定檔位置 --><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring/applicationContext.xml/WEB-INF/spring/ibatis_dao.xml /WEB-INF/spring/struts_action.xml</param-value></context-param>


在<param-value>後面配置Spring參數檔案的路徑,有多個Spring的參數設定檔存在時,各個參數檔案之間用空格分隔開。

3.4 如何讓Spring管理Struts2。

要讓Spring管理Struts2的action bean的建立等工作,需要在項目的src目錄中的struts.properties檔案中指定

struts.objectFactory=springstruts.objectFactory.spring.autoWire=type


即2.3 小節配置參數中包含的這兩行。

3.5 如何讓Spring管理資料庫緩衝池。

DBCP或者C3p0等資料庫緩衝池可以在Spring的參數設定檔當中去配置使用,例如在項目中配置DBCP資料庫緩衝池的話可以指定以下格式的參數配置:

<bean id="dataSource"class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName"value="${jdbc.driverClassName}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><property name="initialSize" value="4" /><property name="maxActive" value="20" /><property name="testWhileIdle" value="true" /><property name="validationQuery"                                                 value="select count(0) from t_db_history where 1=2" /><property name="testOnBorrow" value="true" /></bean>


上面各個參數值中有的使用的是$符號加{}的形式進行配置的,這種配置格式需要在Spring當中配置一個能夠載入.propertis檔案的bean,如以下格式:

<bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations"><list><value>WEB-INF/jdbc.properties</value></list></property></bean>


上面配置參數中的list元素後面跟隨.properties檔案清單。

當然,如果不想把參數檔案寫在Spring以外,也可以在配置DBCP的時候直接將串連資料庫URL,使用者,密碼等等參數寫死在Spring當中也是可以的。

3.6 如果整合iBATIS架構。

iBATIS架構要工作的話,需要指定一個全域的iBATIS參數設定檔,即在Spring中需要告訴iBATIS架構,你工作時需要使用的參數檔案在哪裡可以找到,另外,Spring架構對常見的ORM架構等等都進行了封裝,所以要在Spring當中配置iBATIS架構的話,實際上要配置的類是Spring架構當中的某個類,如下:

<bean id="sqlMapClient"class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"><property name="configLocations" value="WEB-INF/sql-map-config.xml" /><property name="dataSource" ref="dataSource" /></bean>


上面的配置參數中的value="WEB-INF/sql-map-config.xml"即是用來告訴iBATIS架構它要使用的配置參數檔案存放在哪個位置。

以上配置參數中的property name="dataSource" ref="dataSource"即是用來告訴iBATIS架構,它要使用的資料來源是在3.5小節中配置的資料庫緩衝池。

3.7 如何使用Spring 2.5 提供的AutoWired功能。

在Spring的參數設定檔中加入如下一行配置參數即可:

<context:annotation-config />

3.8 如何通過資料庫的表自動產生實體類以及參數設定檔等等。

需要使用iBATIS官方網站提供的iBATOR,在Eclipse當中可以安裝該外掛程式,Eclipse當中安裝外掛程式的方法這裡不做描述。

安裝好iBATOR外掛程式以後,用Eclipse的建立功能向項目中加入一個用於自動產生iBATIS實體類等的參數設定檔,在該檔案當中指定本機上的JDBC資料驅動以及串連資料庫的參數等等,配置好要產生的實體類,DAO,SQL對應檔的存放路徑,如果一切正常,配置完成以後即可自動根據資料庫當中的表結構來產生實體類以及DAO等等。

3.9 iBATOR產生的實體類以及DAO等如何應用。

第一步需要先將產生的SQL對應檔添加到iBATIS的全域參數設定檔當中去,具體是哪一個檔案是iBATIS架構的參數設定檔呢。3.6小節中的<property name="configLocations" value="WEB-INF/sql-map-config.xml" />這一行配置的是哪一個檔案,那麼那個檔案就是iBATIS架構的全域配置參數檔案。

向裡面加入某一個實體類對應的SQL對應檔的配置參數是如下格式:

<sqlMap resource="edu/xw/ji/sqlmaps/t_db_history_SqlMap.xml" />

3.10 在Spring當中如何配置iBATOR自動產生的DAO類呢。

iBATOR代碼產生工具自動產生的DAO類的實作類別有些特殊,即DAO實作類別在執行個體化的時候需要傳入一個構造參數,在3.6小節當中配置的那個類的資料類型就是這個建構函式要傳入的參數資料類型,那麼在Spring當中配置DAO執行個體時告訴它建構函式的參數是什麼就可以了,如下:

<bean id="sys_job_type_dao" class="edu.xw.ji.dao.SysJobTypeDAOImpl"><constructor-arg><ref bean="sqlMapClient" /></constructor-arg></bean>


3.11 Spring如何管理Struts2的Action類。

要讓Struts2的Action類與Spring一起工作,需要先在Spring當中定義bean,即將Struts2的Action當成普通的bean定義在Spring當中,唯一需要注意的地方是要在Spring的配置參數當中加一句scope="prototype"。

然後在Struts2的參數設定檔中再去使用這個在Spring當中定義好的bean id就行了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.