Struts 2和Spring集成


Spring是一个流行的Web框架,提供与大量常见Web任务的轻松集成。所以问题是,当我们有Struts2时,为什么我们需要Spring呢?那么,Spring不仅仅是一个MVC框架

  • 它提供了许多在Struts中不可用的其他好东西。

例如:对任何框架都有用的依赖注入。在本章中,我们将通过一个简单的例子来看看如何将Spring和Struts2集成在一起。

首先,您需要将以下文件添加到Spring安装的项目构建路径中。您可以从https://www.springsource.org/download下载并安装最新版本的Spring 框架

  • 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

最后,从struts库目录中的 WEB-INF / lib中 添加 struts2-spring-plugin-xyzjar

要解决这个问题,你必须进入 Marker 选项卡并逐个点击类依赖关系,并快速修复以发布/导出所有依赖关系。最后确保在标记选项卡下没有可用的相关性冲突。

Struts和Sprint集成

现在让我们为Struts-Spring集成设置 web.xml ,如下所示 -

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

这里要注意的重要一点是我们配置的监听器。所述 的ContextLoaderListener 需要加载弹簧上下文文件。Spring的配置文件被称为 applicationContext.xml 文件,它必须放置在与 web.xml 文件相同的级别

让我们使用两个属性 - firstName和lastName 创建一个名为 User.java 的简单操作类。

package com.CodingDict.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;
   }
}

现在让我们创建 applicationContext.xml spring配置文件并实例化 User.java 类。如前所述,这个文件应该在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.CodingDict.struts2.User">
      <property name = "firstName" value = "Michael" />
      <property name = "lastName" value = "Jackson" />
   </bean>
</beans>

如上所示,我们已经配置了用户bean,并且我们已经将值 MichaelJackson 注入了bean。我们还给这个bean命名了“userClass”,以便我们可以在别处重用它。接下来让我们在WebContent文件夹中创建 User.jsp -

<%@ 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.jsp文件非常简单。它只有一个目的 - 显示用户对象的名字和姓氏的值。最后,让我们使用struts.xml文件将所有实体放在一起。

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

重要的是要注意的是,我们使用id userClass来引用类。这意味着我们使用spring为User类进行依赖注入。现在右键单击项目名称,然后单击导出> WAR文件创建一个WAR文件。然后将这个WAR部署到Tomcat的webapps目录中。

最后,启动Tomcat服务器并尝试访问URL http:// localhost:8080 / HelloWorldStruts2 / User.jsp。这将产生以下屏幕 -

Struts和Spring集成

现在我们已经看到如何将两个伟大的框架结合在一起。这就结束了Struts - Spring集成章节。