Struts2 Spring集成

2022-07-08 11:43 更新

Spring是當下流行的Web框架,可提供帶有許多常見Web任務(wù)的簡易的集成。那么問題是,當我們有Struts2時,為什么我們需要Spring?因為Spring不僅僅是一個MVC框架,它提供了許多其他在Struts中不可用的好東西。例如:依賴注入可以對任何框架有用。在本章中,我們將通過一個簡單的例子來了解如何將Spring和Struts2集成在一起。
首先,你需要將以下文件添加到Spring的項目的構(gòu)建路徑。你可以從http://www.springsource.org/download下載并安裝最新版本的Spring框架。

  • org.springframework.asm-x.y.z.M(a).jar

  • org.springframework.beans-x.y.z.M(a).jar

  • org.springframework.context-x.y.z.M(a).jar

  • org.springframework.core-x.y.z.M(a).jar

  • org.springframework.expression-x.y.z.M(a).jar

  • org.springframework.web-x.y.z.M(a).jar

  • org.springframework.web.servlet-x.y.z.M(a).jar

最后從你的struts lib目錄中添加struts2-spring-plugin-x.y.z.jar到你的WEB-INF/lib中。如果你使用Eclipse,那么你可能會遇到一個異常java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener。要解決這個問題,你應(yīng)該進到Marker選項卡中右鍵逐個點擊類依賴關(guān)系,然后快速修復以發(fā)布/導出所有的依賴關(guān)系。最后,確保在Marker選項卡下沒有可用的依賴沖突。

Struts和Spring集成

現(xiàn)在讓我們?yōu)镾truts-Spring集成設(shè)置web.xml,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">
	
   <display-name>Struts 2</display-name>
   <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>

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

   <filter>
      <filter-name>struts2</filter-name>
      <filter-class>
         org.apache.struts2.dispatcher.FilterDispatcher
      </filter-class>
   </filter>

   <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>

</web-app>

這里需要注意的重點是我們配置的監(jiān)聽器。加載spring上下文文件需要ContextLoaderListener。Spring的配置文件稱為applicationContext.xml文件,它必須放置在與web.xml文件相同的級別。
讓我們創(chuàng)建一個簡單的action類User.java,它有兩個屬性 - firstName和lastName。

package cn.w3cschool.struts2;

public class User {
   private String firstName;
   private String lastName;

   public String execute()
   {
      return "success";
   }

   public String getFirstName() {
      return firstName;
   }

   public void setFirstName(String firstName) {
      this.firstName = firstName;
   }

   public String getLastName() {
      return lastName;
   }

   public void setLastName(String lastName) {
      this.lastName = lastName;
   }
}

現(xiàn)在,創(chuàng)建spring配置文件applicationContext.xml并實例化User.java類。如前所述,此文件應(yīng)在WEB-INF文件夾下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
"http://www.springframework.org/dtd/spring-beans.dtd">
   <beans>
      <bean id="userClass" class="cn.w3cschool.struts2.User">
      <property name="firstName" value="Michael" />
      <property name="lastName" value="Jackson" />
   </bean>
</beans>

如上所示,我們已經(jīng)配置了用戶bean,并且我們已經(jīng)將值MichaelJackson注入到bean中。我們還給這個bean一個名稱“userClass”,以便我們可以在別處重新使用它。接下來,讓我們在WebContent文件夾中創(chuàng)建User.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<title>Hello World</title>
</head>
<body>

   <h1>Hello World From Struts2 - Spring integration</h1>

   <s:form>
      <s:textfield name="firstName" label="First Name"/><br/>
      <s:textfield name="lastName" label="Last Name"/><br/>
   </s:form>
	
</body>
</html>

User.jsp文件很簡單。它僅用于一個目的:顯示用戶對象的firstname和lastname的值。最后,讓我們使用struts.xml文件將所有實體放在一起。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
   <constant name="struts.devMode" value="true" />
   <package name="helloworld" extends="struts-default">
      <action name="user" class="userClass" 
         method="execute">
         <result name="success">/User.jsp</result>
      </action>
   </package>
</struts>

重點需要注意的是,我們使用id userClass來引用類,這意味著我們使用spring為User類做依賴注入。

現(xiàn)在,右鍵單擊項目名稱,然后單擊“Export”> “WAR File”以創(chuàng)建WAR文件。然后在Tomcat的webapps目錄中部署WAR文件。最后,啟動Tomcat服務(wù)器并嘗試訪問URL http://localhost:8080/HelloWorldStruts2/User.jsp,將顯示以下界面:

Struts和Spring集成

我們現(xiàn)在已經(jīng)看到如何將兩個偉大的框架結(jié)合在一起,這就結(jié)束了Struts-Spring集成章節(jié)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號