Tích hợp Struts 2 với Spring




Spring Framework cung cấp cho bạn một cách dễ dàng để quản lý sự phụ thuộc. Nó có thể dễ dàng được tích hợp với Struts Framework. Lớp ContextLoaderListener được sử dụng để giao tiếp ứng dụng Spring với Struts 2. Nó phải được xác định trong web.xml file.

Bạn cần theo các bước sau:

  • Tạo ứng dụng Struts 2 và thêm spring jar file.

  • Trong web.xml file, định nghĩa lớp ContextLoaderListener.

  • Trong struts.xml file, định nghĩa bean name cho lớp action.

  • Trong applicationContext.xml file, tạo bean. Tên lớp của nó nên là tên lớp action và id nên kết nối với tên lớp action của struts.xml file.

  • Trong lớp action, định nghĩa thuộc tính phụ, ví dụ message.

Ví dụ tích hợp Spring và Struts 2

Bạn cần tạo các file sau cho ứng dụng Spring và Struts 2 đơn giản:

1. Tạo index.jsp

JSP page này lấy tên từ người dùng.

<%@ taglib uri="/struts-tags" prefix="s"%>

<s:form action="login">
<s:textfield name="userName" label="UserName"></s:textfield>
<s:submit></s:submit>
</s:form>

2. Tạo web.xml

Nó định nghĩa lớp Controller cho Struts 2 và lớp ContextLoaderListener để tạo kết nối giữa ứng dụng Struts 2 và Spring.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>
  		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  	</filter-class>
  </filter>
  
<listener> 
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 
  
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
  
  </web-app>

3. Tạo struts.xml

Nó định nghĩa package với action và result. Ở đây tên lớp action là login mà sẽ được tìm kiếm trong applicationContext.xml file.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" 
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="abc" extends="struts-default">
<action name="login" class="login">
<result name="success">welcome.jsp</result>
</action>

</package>

</struts> 

4. Tạo applicationContext.xml

Nó định nghĩa một bean với id login. Bean này tương ứng với lớp mypack.login. Tại đây, nó được xem như là lớp action. Nó nên được đặt bên trong thư mục WEB-INF.

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean id="login" class="mypack.Login">
<property name="message" value="Welcome Spring"></property>
</bean>

</beans>

5. Tạo Login.java

Nó định nghĩa hai thuộc tính userName và message với phương thức execute, tại đây success được trả về.

package mypack;
public class Login {
private String userName,message;

public String getMessage() {
	return message;
}
public void setMessage(String message) {
	this.message = message;
}
public String getUserName() {
	return userName;
}
public void setUserName(String userName) {
	this.userName = userName;
}
public String execute(){
	return "success";
}
}

6. Tạo welcome.jsp

Nó in các giá trị của các thuộc tính userName và message.

<%@ taglib uri="/struts-tags" prefix="s"%>

Welcome, <s:property value="userName"/><br/>
 

6. Tạo error.jsp

Đây là error page. Nhưng nó không cần thiết trong ví dụ này bởi vì chúng ta đã không định nghĩa bất cứ trình logic nào trong phương thức execute của lớp action.

Sorry!