熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

spring 整合strut2

2013-11-23 20:24:33  來源: Java開源技術 
Spring整合Struts
  
  雖然Spring也提供了自己的MVC組件但一來Spring的MVC組件過於繁瑣二     來Struts的擁護者實在太多因此很多項目都會選擇使用Spring整合Struts框架而且Spring確實可以無縫整合Struts框架二者結合成一個更實際的JEE開發平台
  
  使用Spring的Web應用時不用手動創建Spring容器而是通過配置文件聲明式地創建Spring容器因此在Web應用中創建Spring容器有如下兩個方式
  
  ● 直接在webxml文件中配置創建Spring容器
  
  ● 利用第三方MVC框架的擴展點創建Spring容器
  
  其實第一種創建Spring容器的方式更加常見為了讓Spring容器隨Web應用的啟動而自動啟動有如下兩個方法
  
  ● 利用ServletContextListener實現(推薦)
  
  ● 采用loadonstartup Servlet實現
  
  Spring 提供ServletContextListener的一個實現類ContextLoaderListener該類可以作為Listener使用會在創 建時自動查找WEBINF/下的applicationContextxml文件因此如果只有一個配置文件並且文件名為 applicationContextxml只需在webxml文件中增加如下配置片段即可
  
  <listener>
  
  <listenerclass>orgsprntext ContextLoaderListener
  
  </listenerclass>
  
  </listener>
  
  如 果有多個配置文件需要載入則考慮使用<contextparam>元素來確定配置文件的文件名 ContextLoaderListener加載時會查找名為contextConfigLocation的參數因此配置context param時參數名字應該是contextConfigLocation
  
  帶多個配置文件的webxml文件如下
  
  <?xml version= encoding=GBK?>
  
  <! 指定Web配置文件的根元素以及相應的Schema信息 >
  
  <webapp xmlns=javasun/xml/ns/jee
  
  xmlns:xsi=//XMLSchemainstance
  
  xsi:schemaLocation=javasun/xml/ns/jee
  
  javasun/xml/ns/jee/webapp__xsd
  
  version=>
  
  <! 確定多個配置文件 >
  
  <contextparam>
  
  <! 參數名為contextConfigLocation >
  
  <paramname>contextConfigLocation</paramname>
  
  <! 多個配置文件之間以隔開 >
  
  <paramvalue>/WEBINF/daoContextxml/WEBINF/
  
  applicationContextxml</paramvalue>
  
  </contextparam>
  
  <! 采用listener創建ApplicationContext實例 >
  
  <listener>
  
  <listenerclass>orgsprntext
  
  ContextLoaderListener</listenerclass>
  
  </listener>
  
  </webapp>
  
  如 果沒有通過contextConfigLocation指定配置文件Spring會自動查找application Contextxml配置文件如果有contextConfigLocation則利用該參數確定的配置文件如果無法找到合適的配置文件 Spring將無法正常初始化
  
  Spring 根據bean定義創建WebApplicationContext對象並將其保存在web應用的ServletContext中大部分情況下應用中 的Bean無須感受到ApplicationContext的存在只要利用ApplicationContext的IoC即可
  
  如果需要在應用中獲取ApplicationContext實例可以通過如下代碼獲取
  
  //獲取當前Web應用的Spring容器
  
  WebApplicationContext ctx =
  
  WebApplicationContextUtilsgetWebApplicationContext(servletContext)
  
  除此之外Spring提供了一個特殊的Servlet類ContextLoaderServlet該Servlet在啟動時會自動查找WEBINF/下的applicationContextxml文件
  
  完整的webxml文件可能如下
  
  <?xml version= encoding=UTF?>
  
  <webapp version= xmlns=/xml/ns/javaee
  
  xmlns:xsi=//XMLSchemainstance
  
  xsi:schemaLocation=/xml/ns/javaee
  
  /xml/ns/javaee/webapp__xsd>
  
  <! 使用ContextLoaderListener初始化Spring容器 >
  
  <listener>
  
  <listenerclass>orgsprntextContextLoaderListener</listenerclass>
  
  </listener>
  
  <! 定義Struts 的FilterDispathcer的Filter >
  
  <filter>
  
  <filtername>struts</filtername>
  
  <filterclass>orgapachestrutsdispatcherngfilterStrutsPrepareAndExecuteFilter</filterclass>
  
  </filter>
  
  <! FilterDispatcher用來初始化Struts 並且處理所有的WEB請求 >
  
  <filtermapping>
  
  <filtername>struts</filtername>
  
  <urlpattern>/*</urlpattern>
  
  </filtermapping>
  
  <welcomefilelist>
  
  <welcomefile>l</welcomefile>
  
  </welcomefilelist>
  
  </webapp>
  
  struts的配置文件strutsxml可能如下
  
  <?xml version= encoding=UTF?>
  
  <!DOCTYPE struts PUBLIC
  
  //Apache Software Foundation//DTD Struts Configuration //EN
  
  /dtds/strutsdtd>
  
  <struts>
  
  <constant name=strutsdevMode value=true />
  
  <constant name=strutsactionextension value=doaction />
  
  <constant name=strutsinencoding value=UTF />
  
  <package name=aboutlogin extends=strutsdefault>
  
  <action name=login class=loginAction method=CheckUser>
  
  <result name=success>/WEBINF/pages/Homejsp</result>
  
  <result name=input>/WEBINF/pages/loginjsp</result>
  
  <result name=failed>/WEBINF/pages/loginjsp</result>
  
  </action>
  
  </package>
  
  <include file=strutsinformationxml />
  
  </struts>
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28457.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.