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 tạo các file sau cho ứng dụng Spring và Struts 2 đơn giản:
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>
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>
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" ?>
<struts>
<package name="abc" extends="struts-default">
<action name="login" class="login">
<result name="success">welcome.jsp</result>
</action>
</package>
</struts>
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>
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";
}
}
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/>
Đâ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!
Unpublished comment
Viết câu trả lời