Dikmeler 2 ve Yay Entegrasyonu

Spring, birçok yaygın web göreviyle kolay entegrasyon sağlayan popüler bir web çerçevesidir. Öyleyse soru şu, Struts2'ye sahip olduğumuzda neden Spring'e ihtiyacımız var? Bahar, bir MVC çerçevesinden daha fazlasıdır - Struts'ta bulunmayan birçok başka güzellik sunar.

Örneğin: herhangi bir çerçeve için yararlı olabilecek bağımlılık enjeksiyonu. Bu bölümde, Spring ve Struts2'yi nasıl entegre edeceğimizi görmek için basit bir örnek üzerinden gideceğiz.

Öncelikle, aşağıdaki dosyaları Spring kurulumundan projenin inşa yoluna eklemeniz gerekir. Spring Framework'ün son sürümünü şu adresten indirip yükleyebilirsiniz: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

Son olarak ekle struts2-spring-plugin-x.y.z.jar senin içinde WEB-INF/libstruts lib dizininizden. Eclipse kullanıyorsanız, bir istisna ile karşılaşabilirsiniz java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener .

Bu sorunu çözmek için içeri girmelisiniz Markersekmesine tıklayın ve sınıf bağımlılıklarına birer birer sağ tıklayın ve tüm bağımlılıkları yayınlamak / dışa aktarmak için Hızlı düzeltme yapın. Son olarak, işaretçi sekmesi altında herhangi bir bağımlılık çakışması olmadığından emin olun.

Şimdi kurulum yapalım web.xml Struts-Spring entegrasyonu için aşağıdaki gibidir -

<?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>

Burada dikkat edilmesi gereken önemli nokta, yapılandırdığımız dinleyicidir. ContextLoaderListeneryay bağlam dosyasını yüklemek için gereklidir. Spring'in konfigürasyon dosyasıapplicationContext.xml dosya ve aynı seviyeye yerleştirilmelidir. web.xml dosya

Adlı basit bir eylem sınıfı oluşturalım User.java iki özelliğe sahip - firstName ve 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;
   }
}

Şimdi oluşturalım applicationContext.xml Spring konfigürasyon dosyasını oluşturun ve User.javasınıf. Daha önce belirtildiği gibi, bu dosya WEB-INF klasörünün altında olmalıdır -

<?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>

Yukarıda görüldüğü gibi, kullanıcı çekirdeğini yapılandırdık ve değerleri enjekte ettik. Michael ve Jacksonfasulyeye. Bu fasulyeye ayrıca "userClass" adını verdik, böylece bunu başka bir yerde yeniden kullanabiliriz. Sonra, oluşturalımUser.jsp WebContent klasöründe -

<%@ 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.jspdosya oldukça basittir. Yalnızca bir amaca hizmet eder - kullanıcı nesnesinin adının ve soyadının değerlerini görüntülemek. Son olarak, tüm varlıkları bir araya getirelim.struts.xml dosya.

<?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>

Unutulmaması gereken önemli nokta, kimliği kullanmamızdır. userClasssınıfa başvurmak için. Bu, User sınıfı için bağımlılık enjeksiyonunu yapmak için spring kullandığımız anlamına gelir.

Şimdi proje adına sağ tıklayın ve tıklayın Export > WAR FileSavaş dosyası oluşturmak için. Sonra bu SAVAŞI Tomcat'in webapps dizininde konuşlandırın. Son olarak, Tomcat sunucusunu başlatın ve URL'ye erişmeyi deneyinhttp://localhost:8080/HelloWorldStruts2/User.jsp. Bu, aşağıdaki ekranı oluşturacaktır -

Şimdi iki harika çerçeveyi nasıl bir araya getireceğimizi gördük. Bu, Dikmeler - Yay entegrasyonu bölümünü bitirir.