Struts2+Spring+iBatis整合使用者管理執行個體之一:多個Action、service的配置

來源:互聯網
上載者:User


    自己用來練習的入門級的執行個體,高手可以直接忽略 哈哈。

    這幾天沒時間,沒加許可權控制,前台顯示也有些Scriptlet沒換成標籤,等過些天有空再加吧。

    仨架構的分工就不贅述了,之前的部落格裡有兩兩整合的詳細記錄,主要說說程式。

         一:結構

    程式功能主要分為“登入登出”和“使用者管理”兩部分:

    相應的Action和Service也按這兩個內容分為相應的LoginAction和UserManagerAction兩部分。Dao只有一個,也就是action和service在Struts和Spring管理時按業務分為兩條線,到iBatis管理時在DAO匯合。

    另外Struts通過Session管理登入、登出資訊,檔案結構體系如下:

    

    


    二:SSI的配置

    先說大體執行流程,再分析具體實現


1.struts配置

    struts配有倆action:Login和UserManager(當然是靠spring注入進來)

    登入和登出走LoginAction,

    使用者管理的增刪改查走UserManager

<struts><!-- 中文防止亂碼 -->      <constant name="struts.i18n.encoding" value="GBK"/>     <package name="struts2-spring" namespace="/" extends="struts-default"><!-- 1.Login的Action-->  <action name="login" class="Login" method="login"><!-- Login 是Spring注入的LoginAction執行個體(LoginAction裡包含一個LoginService) --><result name="success">loginSuccess.jsp</result><result name="error">loginFail.jsp</result></action><action name="logOut" class="Login" method="logOut"><!-- 同一個執行個體的不同方法 --><result name="success">index.jsp</result></action><!-- 2.Manager的Action--><action name="register" class="UserManager" method="register"><!-- UserManager是Spring注入的UserManagerAction執行個體 --><result name="success">operSuccess.jsp</result><result name="error">register.jsp</result></action><action name="queryall" class="UserManager" method="queryall"><result name="success">manage.jsp</result></action><action name="update" class="UserManager" method="update"><result name="success">operSuccess.jsp</result></action><action name="delete" class="UserManager" method="delete"><result name="success">operSuccess.jsp</result></action></package></struts>


2.spring配置

    spring配置大體分為四部分:

    1:配置資料來源,從ibatis配置改到spring配置

    2:spring的ibatis配製,目的是要SqlMapClientTemplate

    3:Spring 注入過程(這裡和struts配合)

    4:交易處理,aop實現的

<!-- 1:配置資料來源(從ibatis配置改到spring配置) -->        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">            <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />            <property name="url" value="jdbc:oracle:thin:@localhost:1521:ORCL" />            <property name="username" value="scott" />            <property name="password" value="890307" />        </bean>       <!-- 2:spring的ibatis配製,目的是要SqlMapClientTemplate -->         <bean id="sqlMapClient"  class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">            <property name="configLocation" value="/WEB-INF/SqlMapConfig.xml"/>            <property name="dataSource" ref="dataSource" />        </bean> <!-- 3.Spring 注入過程 --><bean id="User_SSI" class="vo.User_SSI" /><!-- DAOImpl的注入 --><bean name="UserDao" class="dao.UserDaoImpl" ><property name="sqlMapClient" ref="sqlMapClient"></property>      </bean> <!-- Login的注入 --><bean name="LoginService" class="service.LoginService" ><property name="user" ref="User_SSI"></property><property name="dao" ref="UserDao" /></bean><bean name="Login" class="action.LoginAction"><!-- 產生一個叫Login的執行個體之前,調用set‘Service’方法,注入上一個執行個體‘LoginService’ --><property name="service" ref="LoginService" /></bean><!-- Manager的注入 --><bean name="ManagerService" class="service.ManagerService" ><property name="user" ref="User_SSI"></property><property name="dao" ref="UserDao" /></bean><bean name="UserManager" class="action.UserManagerAction"><property name="service" ref="ManagerService" /></bean>    <!-- 4.交易處理,需要配套的xmlns和schemaLocation -->      <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">             <property name="dataSource" ref="dataSource"/>        </bean>       <tx:advice id="transactionManagerAdivice" transaction-manager="transactionManager">           <tx:attributes>              <tx:method name="query*" propagation="REQUIRED" read-only="true" rollback-for="java.lang.RuntionException" />              <tx:method name="update*" propagation="REQUIRED" rollback-for="java.lang.RuntionException" />           </tx:attributes>        </tx:advice>        <aop:config>           <aop:pointcut id="allManagerMethod" expression="execution( * service.*.*(..))"/>  <!-- 執行的範圍 -->         <aop:advisor advice-ref="transactionManagerAdivice" pointcut-ref="allManagerMethod"/>        </aop:config> 


3.iBatis配置

大部分配置都讓spring接管了,

只有命名空間和vo的具體配置兩項內容了

<sqlMapConfig>     <!-- iBatis的命名空間,整合後仍然歸此檔案管 -->    <!-- 但是dataSource配置歸spring管了 -->    <settings useStatementNamespaces="true"/>       <!-- 資料庫配置都交給applicationContext-common.xml檔案管理了    <transactionManager type="JDBC">      <dataSource type="SIMPLE">        <property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver"/>        <property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@localhost:1521:ORCL"/>        <property name="JDBC.Username" value="scott"/>        <property name="JDBC.Password" value="890307"/>      </dataSource>  -->      <!-- 各個表和類對應的配置,這個不變 -->    <!-- 具體的配置,也不變,還用ibatis原來的配置 -->     <sqlMap resource="User_SSI.xml" /></sqlMapConfig>


4.webApp的web.xml

這裡邊要指定過濾器是struts2、增加一個spring的監聽器 還要配置spring的設定檔位置等

  <filter>    <filter-name>struts2</filter-name>    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  </filter>  <filter-mapping>    <filter-name>struts2</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping>

 <listener>    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener>  <context-param>    <param-name>contextConfigLocation</param-name>    <param-value>/WEB-INF/applicationContext.xml,classpath*:applicationContext.xml</param-value>  </context-param>





































聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.