日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

SSI框架

發(fā)布時(shí)間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SSI框架 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 框架簡(jiǎn)介
    MVC對(duì)于我們來(lái)說(shuō),已經(jīng)不陌生了,它起源于20世紀(jì)80年代針對(duì)smalltalk語(yǔ)言的一種軟件設(shè)計(jì)模式,現(xiàn)在已被廣泛應(yīng)用。近年來(lái),隨著java的盛行,MVC的低耦合性、高重用性、可維護(hù)性、軟件工程的可管理性等諸多優(yōu)點(diǎn)使其在java平臺(tái)中很受歡迎,其間,也誕生了許多優(yōu)秀的MVC框架,如專注于控制層的Struts、WebWork, Struts2, JSF等框架,專注于業(yè)務(wù)邏輯方面的Spring框架、專注于持久層的Hibernate、iBatis、Castor、JORM等框架。
    下面對(duì)SSI框架:Strtus2+Spring+iBatis的三個(gè)開源的MVC框架進(jìn)行說(shuō)明。
  • Struts2主要來(lái)源于webwork框架,與Struts1相比,在數(shù)據(jù)傳遞方面,Struts2提供了更加強(qiáng)大OGNL標(biāo)簽功能,使其能夠通過(guò)在action中定義變量來(lái)直接與jsp頁(yè)面中的數(shù)據(jù)進(jìn)行相互傳值,省去了Struts1中的formbean;而在跳轉(zhuǎn)控制方面,Struts2簡(jiǎn)化了配置文件的信息量,使頁(yè)面和action之間的交換更加的簡(jiǎn)潔和直觀,便于開發(fā)人員的管理。

    Spring功能非常的強(qiáng)大,比如它的控制反轉(zhuǎn)/依賴注入機(jī)制,省去了我們自己書寫工廠模式的工作,實(shí)現(xiàn)類對(duì)我們將要用到控制類、業(yè)務(wù)邏輯類、數(shù)據(jù)訪問(wèn)類、以及JNDI或者JDBC數(shù)據(jù)源的托管;Spring對(duì)AOP支持使我們?cè)谟脩鬰hmod.html’ target=’_blank’>權(quán)限控制、事務(wù)處理方面節(jié)省了很多工作量;

    iBatis則是一種輕量級(jí)的OR Mapping框架,與Hibernate相比,iBatis提供了半自動(dòng)化對(duì)象關(guān)系 映射的實(shí)現(xiàn),開發(fā)人員需要編寫具體的sql語(yǔ)句,為系統(tǒng)設(shè)計(jì)提供了更大的自由空間,為sql語(yǔ)句優(yōu)化提供了便利。

  • 框架結(jié)構(gòu)
    下面這張圖就是我們所用到的這三種框架的結(jié)合體,下面對(duì)其作以簡(jiǎn)單介紹。
  • 2.1控制層
    在控制層,利用Strtus2標(biāo)簽功能,在Action中直接與jsp頁(yè)面上的數(shù)據(jù)進(jìn)行交互。在調(diào)用業(yè)務(wù)邏輯層應(yīng)用時(shí),Struts2提供了對(duì)Sping的支持。開發(fā)人員需要完成對(duì)struts.xml的配置工作和對(duì)各個(gè)Action類的編寫。

    例如struts.xml: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <!-- 設(shè)置瀏覽器是否緩存靜態(tài)內(nèi)容,默認(rèn)值為true(生產(chǎn)環(huán)境下使用),開發(fā)階段最好關(guān)閉 --> <constant name="struts.serve.static.browserCache" value="false" /> <!-- 當(dāng)struts的配置文件修改后,系統(tǒng)是否自動(dòng)重新加載該文件,默認(rèn)值為false(生產(chǎn)環(huán)境下使用),開發(fā)階段最好打開 --> <constant name="struts.configuration.xml.reload" value="true" /> <!-- 開發(fā)模式下使用,這樣可以打印出更詳細(xì)的錯(cuò)誤信息 --> <constant name="struts.devMode" value="true" /> <!-- <constant name="struts.action.extension" value="do" /> --> <!--所有以*.do結(jié)尾的請(qǐng)求全部歸struts處理 ,如果沒(méi)有顯式指定action識(shí)別后綴,默認(rèn)就是action, 比如toInput.action --> <constant name="struts.ui.theme" value="simple"></constant> <!-- struts2將自動(dòng)幫程序員生成網(wǎng)頁(yè),提供了多種生成模版 --> <constant name="struts.i18n.encoding" value="utf-8"></constant> <constant name="struts.multipart.saveDir" value="/tmp" /> <constant name="struts.objectFactory" value="spring" /> <!-- 告訴struts不再自行創(chuàng)建action實(shí)例。而是到Spring里去取action實(shí)例 --> <constant name="struts.objectFactory.spring.autoWire" value="name" /><!-- package是若干個(gè)擁有相關(guān)功能的action的群組 --> <package name="demo-default" namespace="/"extends="struts-default,json-default"> </package><include file="user.xml" /> <include file="login.xml" /></struts>

    2.2 業(yè)務(wù)邏輯層
    在業(yè)務(wù)邏輯層,利用Spring框架的依賴注入實(shí)現(xiàn)對(duì)業(yè)務(wù)邏輯類和DAO類的實(shí)例托管;在事務(wù)處理方面,利用Spring提供的面向切面的事務(wù)處理功能,使對(duì)數(shù)據(jù)的事務(wù)控制脫離于數(shù)據(jù)訪問(wèn)接口實(shí)現(xiàn);在對(duì)象關(guān)系映射方面,利用Spring對(duì)數(shù)據(jù)庫(kù)連接池的托管和對(duì)iBatis框架的支持。開發(fā)人員需要完成對(duì)數(shù)據(jù)源的配置、對(duì)不同模塊所對(duì)應(yīng)的application*.xml文件的配置,以及對(duì)業(yè)務(wù)邏輯接口的定義和業(yè)務(wù)邏輯實(shí)現(xiàn)的編寫。

    例如:applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"><context:annotation-config /> <context:component-scan base-package="com.*" /><context:property-placeholder location="classpath:jdbc.properties" /> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${jdbc.driver}" /><property name="jdbcUrl" value="${jdbc.url}" /><property name="user" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><property name="autoCommitOnClose" value="true" /><property name="checkoutTimeout" value="${cpool.checkoutTimeout}" /><property name="initialPoolSize" value="${cpool.minPoolSize}" /><property name="minPoolSize" value="${cpool.minPoolSize}" /><property name="maxPoolSize" value="${cpool.maxPoolSize}" /><property name="maxIdleTime" value="${cpool.maxIdleTime}" /><property name="acquireIncrement" value="${cpool.acquireIncrement}" /> </bean><!--定義事務(wù)管理器 --> <bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /> </bean><!--引入IBATIS --> <bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" /> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"><property name="dataSource" ref="dataSource" /><property name="configLocation"value="classpath:com/boss/demo/config/SqlMapConfig.xml" /><property name="lobHandler" ref="lobHandler" /> </bean><bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate"><property name="sqlMapClient" ref="sqlMapClient" /> </bean><!--開啟事務(wù) --> <tx:annotation-driven transaction-manager="transactionManager" /> </beans>

    2.3 持久層
    在持久層,利用iBatis提供的半自動(dòng)化對(duì)象關(guān)系映射的實(shí)現(xiàn),開發(fā)人員需要編寫具體的sql語(yǔ)句,為系統(tǒng)設(shè)計(jì)提供了更大的自由空間。另外,開發(fā)人員需要完成對(duì)SqlMapConfig.xml和*SqlMap.xml的配置,以及對(duì)DAO接口的定義和DAO接口的實(shí)現(xiàn)。

    例如:SqlMapConfig.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <settings cacheModelsEnabled="false" enhancementEnabled="false"lazyLoadingEnabled="false" maxRequests="3000" maxSessions="3000"maxTransactions="3000" useStatementNamespaces="false" /> <sqlMap resource="com/boss/demo/entity/User_Map.xml" /> </sqlMapConfig>

    2.4 小結(jié)
    在各層之間進(jìn)行交換的過(guò)程中,利用數(shù)據(jù)傳輸類進(jìn)行數(shù)據(jù)的傳遞和交互。其中,數(shù)據(jù)傳輸類與數(shù)據(jù)庫(kù)表一一對(duì)應(yīng)。
    SSI框架能夠降低代碼的耦合度,增強(qiáng)了代碼的健壯性和可重用性,加快了開發(fā)速度,但是也有一些不足之處,比如由于三種框架的配置文件較多,也會(huì)帶來(lái)了一些不便,特別是對(duì)于較小的應(yīng)用來(lái)說(shuō)更是如此。

    總結(jié)

    以上是生活随笔為你收集整理的SSI框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。