<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                Spring和struts結合. 上篇中把spring應用到hibernate中,本篇中把spring應用到struts中,首先復習一下struts基礎知識。 [Struts旅程(一)Struts簡介和原理](http://blog.csdn.net/lovesummerforever/article/details/18942381) [struts旅程(二)Struts登錄示例](http://blog.csdn.net/lovesummerforever/article/details/17348871) [Struts旅程(三)Struts表單處理器ActionForm(靜態動態)](http://blog.csdn.net/lovesummerforever/article/details/18951649) [Struts旅程(四)MVC向strutsMVC框架演變過程](http://blog.csdn.net/lovesummerforever/article/details/18963959) [Struts旅程(五)struts控制器DispatchAction](http://blog.csdn.net/lovesummerforever/article/details/18967831) [Struts旅程(六)Struts頁面轉發控制ActionForward和ActionMapping](http://blog.csdn.net/lovesummerforever/article/details/19125933) ????? ? ? ? ?Struts調用流程如下圖所示。 ![](https://box.kancloud.cn/2016-06-21_576908fbb61a4.jpg) 看到這幅圖一下子就能了解了struts的原理。Spring的核心就是IOC容器和AOP,所以我們用spring主要是管理業務對象和事務的管理,所以主要是Model層來讓spring管理,這是我們的一種方案。 **第一種集成方案在Action中取得beanFactory** 還記的在上篇文章中,測試的時候是在單元測試中拿到的BeanFactory,與struts結合就是在Action中取得beanFactory。步驟如下。 1、建立一個web項目。 2、建立相關頁面,代碼如下所示。 Login.jsp代碼入下所示。 ~~~ <%@ pagelanguage="java" contentType="text/html; charset=GB18030" ??pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <metahttp-equiv="Content-Type" content="text/html;charset=GB18030"> <title>Insert titlehere</title> </head> <body> ??????<formaction="login.do" method="post"> ?????????????用戶:<input type="text"name="username"><br> ?????????????密碼:<input type="password"name="password"><br> ?????????????<inputtype="submit" value="登錄"> ??????</form> </body> </html> Login_success.jsp? <%@ pagelanguage="java" contentType="text/html; charset=GB18030" ??pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <metahttp-equiv="Content-Type" content="text/html;charset=GB18030"> <title>Insert titlehere</title> </head> <body> ??????xx,用戶登錄成功! </body> </html> ~~~ 3、配置struts環境,關于struts的配置,拷貝struts和jstl的依賴包;在web.xml中配置ActionServlet,提供struts-config.xml文件。前篇文中有說明,在此就不贅述了。 struts-config.xml代碼如下所示。 ~~~ <struts-config> ?????? ?????? <form-beans> ????????????? <form-beanname="loginForm"type="com.bjpowernode.usermgr.web.forms.LoginActionForm"></form-bean> ?????? </form-beans> ?????? ?????? <action-mappings> ????????????? <actionpath="/login" ????????????? type="com.bjpowernode.usermgr.web.actions.LoginAction" ????????????? name="loginForm" ????????????? scope="request" ????????????? > ????????????? ????????????? <forwardname="success" path="/login_success.jsp"/> ????????????? </action> ?????? </action-mappings> ?????? ?<message-resourcesparameter="resources.MessageResources" /> </struts-config> ~~~ 4、配置spring環境,拷貝spring相關jar包,建立spring配置文件applicationContext-beans.xml。 applicationContext-beans.xml代碼如下所示。 ~~~ <beansxmlns="http://www.springframework.org/schema/beans" ??????????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ??????????xmlns:aop="http://www.springframework.org/schema/aop" ??????????xmlns:tx="http://www.springframework.org/schema/tx" ??????????xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.0.xsd ?????????http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-2.0.xsd ?????????http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> ??????<beanid="userManager"class="com.bjpowernode.usermgr.manager.UserManagerImpl"/> </beans> ~~~ 5、建立相關的Action和ActionForm。代碼如下所示。 ? ? LoginAction.java代碼如下所示。 ~~~ public class LoginAction extendsAction { ? ? ?@Override ??????publicActionForward execute(ActionMapping mapping, ActionForm form, ?????????????????????HttpServletRequestrequest, HttpServletResponse response) ?????????????????????throwsException { ????????????? ?????????????LoginActionFormlaf = (LoginActionForm)form; ????????????? ?????????????Stringusername = laf.getUsername(); ?????????????Stringpassword = laf.getPassword(); ? ? ? ? ? ?? ?//但是我們每次都要去調用,去創建太麻煩了. ?????????????//我們在這里只需要去配置Listener就可以了,spring給實現好了. ?????????????BeanFactoryfactory = newClassPathXmlApplicationContext("applicationContext.xml"); ?????????????UserManageruserManager = (UserManager)factory.getBean("userManager"); ?????????????userManager.login(username,password); ??????} } ? ? LoginActionForm.java代碼如下所示。 public class LoginActionFormextends ActionForm { ??????//表單上有什么提供什么屬性. ??????//名字一定要與表單中的一樣. ?????? ??????privateString username; ?????? ??????publicString getUsername() { ?????????????returnusername; ??????} ??????publicvoid setUsername(String username) { ?????????????this.username= username; ??????} ??????privateString password; ??????publicString getPassword() { ?????????????returnpassword; ??????} ??????publicvoid setPassword(String password) { ?????????????this.password= password; ??????} } ~~~ 6、建立業務邏輯層,代碼如下所示。 ? ? UserManager代碼如下所示。 ~~~ public interface UserManager { ??????publicvoid login(String username, String password); } ? ? UserManagerImpl.java代碼如下所示。 public class UserManagerImplimplements UserManager { ??????publicvoid login(String username, String password) { ?????????????System.out.println("UserManagerImpl"+"username="+ username); ??????} } ~~~ 7、?web.xml配置文件代碼如下所示。 ~~~ <servlet> ??<servlet-name>action</servlet-name> ??<servlet-class>org.apache.struts.action.ActionServlet</servlet-class> ??<init-param> ????<param-name>config</param-name> ????<param-value>/WEB-INF/struts-config.xml</param-value> ??</init-param> ??<init-param> ????<param-name>debug</param-name> ????<param-value>2</param-value> ??</init-param> ??<init-param> ????<param-name>detail</param-name> ????<param-value>2</param-value> ??</init-param> ??<load-on-startup>2</load-on-startup> </servlet> ~~~ ? ? 就這樣我們在LoginAction中,使用beanFactory讀取spring配置文件,找到UserManagerImpl實例。如果每次在Action中讀取application-beans.xml文件,我們是否可以在服務器啟動的時候就就創建BeanFactory呢?在這里我們可以使用spirng的工具WebApplicationContextUtils.getRequiredWebApplicationContext()從? ServletContext中 ?取得BeanFactory,然后再web.xml中配置Spring的Listener。 修改后,LoginAction代碼如下所示。 ~~~ public class LoginAction extendsAction { ??????@Override ??????publicActionForward execute(ActionMapping mapping, ActionForm form, ?????????????????????HttpServletRequestrequest, HttpServletResponse response) ?????????????????????throwsException { ?????????????LoginActionFormlaf = (LoginActionForm)form; ????????????? ?????????????Stringusername = laf.getUsername(); ?????????????Stringpassword = laf.getPassword(); ????????????? ?????????????//用工具包直接拿出來就可以了。 ?????????????BeanFactoryfactory =WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext()); ?????????????UserManageruserManager = (UserManager)factory.getBean("userManager"); ?????????????userManager.login(username,password); ?????????????returnmapping.findForward("success"); ??????} }?????? ~~~ ? ? 加入相關配置,web.xml代碼如下所示。 ~~~ <context-param> ?????<param-name>contextConfigLocation</param-name> ?????<param-value>classpath:applicationContext-*.xml</param-value> </context-param> <listener>?? ?????<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> ~~~ 第一種方案缺點: ? ?我們在在Action中仍然看到Spring相關東西,看到Spring相關類,要是程序只看到的是接口,那要怎么做呢? ? ?第二種方案,將struts的Aciton交給Spring來創建,讓代理Action負責拿到beanFactory,根據Path名稱到IOC中把對應的Action取出來。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看