Struts 2 & Spring Integration
Spring adalah kerangka kerja web populer yang menyediakan integrasi mudah dengan banyak tugas web umum. Jadi pertanyaannya adalah, mengapa kita membutuhkan Spring saat kita memiliki Struts2? Yah, Spring lebih dari sekedar kerangka MVC - ia menawarkan banyak barang lain yang tidak tersedia di Struts.
Misalnya: injeksi ketergantungan yang dapat berguna untuk kerangka kerja apa pun. Dalam bab ini, kita akan melihat contoh sederhana untuk melihat bagaimana mengintegrasikan Spring dan Struts2 secara bersamaan.
Pertama-tama, Anda perlu menambahkan file berikut ke jalur build proyek dari instalasi Spring. Anda dapat mengunduh dan menginstal versi terbaru Spring Framework darihttps://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
Terakhir tambahkan struts2-spring-plugin-x.y.z.jar di Anda WEB-INF/libdari direktori struts lib Anda. Jika Anda menggunakan Eclipse maka Anda mungkin menghadapi pengecualian java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener .
Untuk memperbaiki masalah ini, Anda harus masuk Markertab dan klik kanan pada dependensi kelas satu per satu dan lakukan Quick fix untuk mempublikasikan / mengekspor semua dependensi. Terakhir, pastikan tidak ada konflik ketergantungan yang tersedia di bawah tab penanda.
Sekarang mari kita atur web.xml untuk integrasi Struts-Spring sebagai berikut -
<?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>
Hal penting yang perlu diperhatikan di sini adalah listener yang telah kita konfigurasikan. ItuContextLoaderListenerdiperlukan untuk memuat file konteks pegas. File konfigurasi Spring dipanggilapplicationContext.xml file dan itu harus ditempatkan pada tingkat yang sama dengan web.xml mengajukan
Mari kita buat kelas tindakan sederhana bernama User.java dengan dua properti - firstName dan 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;
}
}
Sekarang mari kita buat applicationContext.xml file konfigurasi musim semi dan buat instance User.javakelas. Seperti yang disebutkan sebelumnya, file ini harus berada di bawah folder 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>
Seperti yang terlihat di atas, kami telah mengkonfigurasi kacang pengguna dan kami telah memasukkan nilainya Michael dan Jacksonke dalam kacang. Kami juga telah memberi kacang ini nama "userClass", sehingga kami dapat menggunakannya kembali di tempat lain. Selanjutnya mari kita buatUser.jsp di folder 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>
Itu User.jspfile cukup lurus ke depan. Ini hanya melayani satu tujuan - untuk menampilkan nilai nama depan dan nama belakang objek pengguna. Terakhir, mari kita gabungkan semua entitas menggunakanstruts.xml mengajukan.
<?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>
Hal penting yang perlu diperhatikan adalah kami menggunakan id userClassuntuk merujuk ke kelas. Ini berarti bahwa kami menggunakan pegas untuk melakukan injeksi ketergantungan untuk kelas Pengguna.
Sekarang klik kanan pada nama proyek dan klik Export > WAR Fileuntuk membuat file Perang. Kemudian terapkan WAR ini di direktori webapps Tomcat. Terakhir, jalankan server Tomcat dan coba akses URLhttp://localhost:8080/HelloWorldStruts2/User.jsp. Ini akan menghasilkan layar berikut -
Sekarang kita telah melihat bagaimana menyatukan dua kerangka kerja yang hebat. Ini menyimpulkan bab integrasi Struts - Spring.