Struts 2 & Spring Integration
Spring là một khung công tác web phổ biến cung cấp khả năng tích hợp dễ dàng với nhiều tác vụ web phổ biến. Vậy câu hỏi đặt ra là tại sao chúng ta cần Spring khi chúng ta có Struts2? Chà, Spring không chỉ là một khuôn khổ MVC - nó cung cấp nhiều tính năng bổ sung khác không có sẵn trong Struts.
Ví dụ: chèn phụ thuộc có thể hữu ích cho bất kỳ khuôn khổ nào. Trong chương này, chúng ta sẽ đi qua một ví dụ đơn giản để xem cách tích hợp Spring và Struts2 với nhau.
Trước hết, bạn cần thêm các tệp sau vào đường dẫn xây dựng của dự án từ cài đặt Spring. Bạn có thể tải xuống và cài đặt phiên bản mới nhất của Spring Framework từhttps://www.springsource.org/download
- 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
Cuối cùng thêm struts2-spring-plugin-x.y.z.jar trong của bạn WEB-INF/libtừ thư mục lib struts của bạn. Nếu bạn đang sử dụng Eclipse thì bạn có thể gặp phải một ngoại lệ java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener .
Để khắc phục sự cố này, bạn phải vào Markervà nhấp chuột nhanh vào từng phụ thuộc lớp và thực hiện Sửa nhanh để xuất bản / xuất tất cả các phụ thuộc. Cuối cùng đảm bảo rằng không có xung đột phụ thuộc có sẵn trong tab đánh dấu.
Bây giờ hãy để chúng tôi thiết lập web.xml để tích hợp Struts-Spring như sau:
<?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>
Điều quan trọng cần lưu ý ở đây là trình nghe mà chúng ta đã cấu hình. CácContextLoaderListenerđược yêu cầu để tải tệp ngữ cảnh mùa xuân. Tệp cấu hình của Spring được gọi làapplicationContext.xml và nó phải được đặt ở cùng cấp với web.xml tập tin
Hãy để chúng tôi tạo một lớp hành động đơn giản có tên User.java với hai thuộc tính - firstName và lastName.
package com.tutorialspoint.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;
}
}
Bây giờ chúng ta hãy tạo applicationContext.xml tệp cấu hình mùa xuân và khởi tạo User.javalớp học. Như đã đề cập trước đó, tệp này phải nằm trong thư mục 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 = "com.tutorialspoint.struts2.User">
<property name = "firstName" value = "Michael" />
<property name = "lastName" value = "Jackson" />
</bean>
</beans>
Như đã thấy ở trên, chúng tôi đã định cấu hình bean người dùng và chúng tôi đã chèn các giá trị Michael và Jacksonvào đậu. Chúng tôi cũng đã đặt tên bean này là "userClass", để chúng tôi có thể sử dụng lại nó ở những nơi khác. Tiếp theo, chúng ta hãy tạoUser.jsp trong thư mục WebContent -
<%@ 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>
Các User.jsptệp khá thẳng về phía trước. Nó chỉ phục vụ một mục đích - để hiển thị các giá trị của họ và tên của đối tượng người dùng. Cuối cùng, hãy để tất cả các thực thể lại với nhau bằng cách sử dụngstruts.xml tập tin.
<?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>
Điều quan trọng cần lưu ý là chúng tôi đang sử dụng id userClassđể tham khảo lớp học. Điều này có nghĩa là chúng ta đang sử dụng spring để thực hiện việc tiêm phụ thuộc cho lớp Người dùng.
Bây giờ nhấp chuột phải vào tên dự án và nhấp vào Export > WAR Fileđể tạo tệp Chiến tranh. Sau đó, triển khai WAR này trong thư mục ứng dụng web của Tomcat. Cuối cùng, khởi động máy chủ Tomcat và cố gắng truy cập URLhttp://localhost:8080/HelloWorldStruts2/User.jsp. Điều này sẽ tạo ra màn hình sau:
Bây giờ chúng tôi đã thấy làm thế nào để kết hợp hai khuôn khổ tuyệt vời lại với nhau. Phần này kết thúc chương tích hợp Struts - Spring.