shenang博客技術文檔


          理論不懂就實踐,實踐不會就學理論!

          posts - 35,comments - 55,trackbacks - 0

           

                             整合Springstruts學習筆記

          整合共有三種方法:

          使用 Spring ActionSupport類整合 Structs

          使用 Spring DelegatingRequestProcessor

          覆蓋 Struts RequestProcessor Struts Action管理委托給 Spring 框架

          前面二種很簡單,但不是最優化的,最優優化是第三種,有興趣的同志,可以到下面網址去看看

          http://www.ibm.com/developerworks/cn/java/j-sr2.html#N1008C

          下面,我將以一個實例簡單介紹一下二者的整合,以作為個人備忘

          對于像我一樣的新手,大家一起共同學習,有錯誤的地方,還望指教。

          具體步聚如下:

          1、首先是導入需要的包
           看了很多別人的文章,這里都寫得不太清楚,我覺得這是比較重要的一步,如果包導入不對,程序就高度不出來,所以,我比較看重這步,因為不是所有人都是很清楚這一步,對于像我這種新手還是有用的,呵呵。

          Spring的二個包:
          spring.jar
          struts2-spring-plugin-2.0.9.jar(其實這個包應該是struts的包哈)
          Struts的五個基本包
          commons-logging-1.1.jar
          freemarker-2.3.8.jar
          ognl.jar
          struts2-core-2.0.9.jar
          xwork-2.0.4.jar
          (當然,在我寫的這個小程序中,有一些struts包是用不到的!導入了包,下一步就開始了!)

          2、配置Spring監聽器.
          向web.xml加入下面語句:

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

          下面是完整的web.xml 為了方便大家調試,我給出全碼如下:

           

           1 <?xml version="1.0" encoding="UTF-8"?>   
           2 <web-app id="WebApp_ID" version="2.4"   
           3     xmlns="http://java.sun.com/xml/ns/j2ee"   
           4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
           5     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">   
           6     <display-name>struts2tutorial</display-name>   
           7         
           8     <filter>   
           9         <filter-name>struts2</filter-name>   
          10         <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>   
          11     </filter>   
          12         
          13     <filter-mapping>   
          14         <filter-name>struts2</filter-name>   
          15         <url-pattern>*.action</url-pattern>   
          16     </filter-mapping>   
          17         
          18     <welcome-file-list>   
          19         <welcome-file>index.jsp</welcome-file>   
          20     </welcome-file-list>   
          21         
          22     <listener>   
          23         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>   
          24     </listener>   
          25         
          26 </web-app>


          3、利用Spring配置文件來注冊對象

          在原有的struts.xml文件加入

           

           1 <!DOCTYPE struts PUBLIC    
           2     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    
           3     "http://struts.apache.org/dtds/struts-2.0.dtd">
           4 <struts>
           5     <!-- 下面這句表明對象是由spring負責產生的.加上這句后,struts會產生讓spring負責 
           6         產生bean,如果spring不能產生bean,則由struts自己產生.也可以在struts.properties 
           7         文件內定義這個屬性.-->
           8     <constant name="struts.objectFactory.spring.autoWire" value="type" />
           9     <constant name="struts.objectFactory" value="spring" />
          10     <!--
          11     <constant name="objectFactory" value="spring"></constant>
          12     -->
          13     <package name="struts2tutoial" extends="struts-default"
          14         namespace="/">
          15         <!-- 注意,現在action的class屬性不再是類的名字了,而是在spring中的bean的id 
          16             詳細信息請看下面的spring的bean配置文件applicationContext.xml -->
          17         <action name="HelloWorld" class="helloWorld">
          18             <result>/helloWorld.jsp</result>
          19         </action>
          20         <!-- Add your actions here -->
          21     </package>
          22 </struts>
          23 

          看到上文中的
          8     <constant name="struts.objectFactory.spring.autoWire" value="type" />
           9     <constant name="struts.objectFactory" value="spring" />
          10     <!--
          11     <constant name="objectFactory" value="spring"></constant>
          12     -->

          這個地方只需要注釋中的也行!

          4、配置applicationContext.xml

          注意,這個文件一定要放在WEB-INF下面,否則會出錯,默認情況下,容器會到WEB-INF目錄下面去尋找applicationContext.xml文件。如果我們想指定別的地方的配置文件或者指定多個配置文件,可以通過在web.xml文件中定義 context-param元素來指定,除非你在web.xml作如下配置

           1 <context-param>
           2 
           3     <param-name>contextConfigLocation</param-name>
           4  <!-- 下面指的是文件存放路徑,下面我還用了一個通配路徑,classpath下的所在形如:applicationContext-XX.xml都引入-->
           5     <param-value>
           6         /WEB-INF/applicationContext.xml,classpath:applicationContext-*.xml
           7     </param-value>
           8 
           9  </context-param>
          10 


          下面是我的appliccationContext.xml全碼:

          <?xml version="1.0" encoding="UTF-8"?>   
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">   
          <beans>   
              
          <bean id="helloWorld" class="com.tianji.test.HelloWorld"></bean>   
          </beans>
          <!--上面的解釋下:在前面說了,這個bean中的ID,必須與struts中的action指定的class值一樣,此bean中的class就是你要處理的action類,如果你在action時有傳值,則在此bean中加入形如:
          <property name="message">
              
          <value>i love you</value></property>
          形式的語句!
           
          -->


          5、寫一個action類
          HelloWord.java

           1 package com.tianji.test;    
           2 import com.opensymphony.xwork2.ActionSupport;    
           3 public class HelloWorld extends ActionSupport {    
           4    
           5     public static final String MESSAGE = "Struts is up and running ";    
           6    
           7     public String execute() throws Exception {    
           8         setMessage(MESSAGE);    
           9         return SUCCESS;    
          10     }    
          11    
          12     private String message;    
          13    
          14     public void setMessage(String message){    
          15         this.message = message;    
          16     }    
          17    
          18     public String getMessage() {    
          19         return message;    
          20     }    
          21 }   
          22 
          23 

          這個不用解釋哈!

          6、創建HelloWord.jsp

          1 <%@ taglib prefix="s" uri="/struts-tags" %>   
          2 <html>   
          3     <head>   
          4         <title>Hello World!</title>   
          5     </head>   
          6     <body>   
          7         <h2><s:property value="message" /></h2>   
          8     </body>   
          9 </html>  

          發布,運行服務器,在瀏覽器中打開:
          http://localhost:8080/love/HelloWorld.action

          注意修改上面紅色部份!

          結果:成功!

          Struts is up and running````````


           

           


           

          posted on 2009-03-25 16:11 重慶理工小子 閱讀(706) 評論(3)  編輯  收藏 所屬分類: Spring2Struts2技術整合

          FeedBack:
          # re: 整合Spring和struts學習筆記
          2009-03-25 17:54 | 學習的人
          好文章,我也在學習,謝謝樓主!我是第一個評論的,呵呵!  回復  更多評論
            
          # re: 整合Spring和struts學習筆記
          2009-03-25 17:55 | 關注
          謝謝,關注中!  回復  更多評論
            
          # re: 整合Spring和struts學習筆記
          2009-03-25 18:04 | 重慶理工小子
          @學習的人

          由于剛學,文章寫得不好!謝謝!

          大家一起進步!
            回復  更多評論
            
          主站蜘蛛池模板: 金川县| 辰溪县| 石河子市| 盖州市| 威信县| 贵定县| 平乐县| 阳春市| 荆门市| 鸡西市| 泰宁县| 韩城市| 苍南县| 永靖县| 福鼎市| 大埔区| 淮南市| 临洮县| 丰镇市| 崇义县| 永昌县| 阿拉善右旗| 边坝县| 教育| 余姚市| 大渡口区| 华池县| 桐乡市| 江源县| 南丰县| 崇仁县| 鄂托克旗| 海盐县| 崇礼县| 庆城县| 台东市| 攀枝花市| 沅江市| 兰溪市| 尼玛县| 莱州市|