zoukankan      html  css  js  c++  java
  • (二十四)Struts2 Spring集成

    Spring是当下流行的Web框架,可提供带有许多常见Web任务的简易的集成。那么问题是,当我们有Struts2时,为什么我们需要Spring?因为Spring不仅仅是一个MVC框架,它提供了许多其他在Struts中不可用的好东西。例如:依赖注入可以对任何框架有用。在本章中,我们将通过一个简单的例子来了解如何将Spring和Struts2集成在一起。
    首先,你需要将以下文件添加到Spring的项目的构建路径。你可以从http://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 lib目录中添加struts2-spring-plugin-x.y.z.jar到你的WEB-INF/lib中。如果你使用Eclipse,那么你可能会遇到一个异常java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener。要解决这个问题,你应该进到Marker选项卡中右键逐个点击类依赖关系,然后快速修复以发布/导出所有的依赖关系。最后,确保在Marker选项卡下没有可用的依赖冲突。

    Struts和Spring集成

    现在让我们为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>
    

      

    这里需要注意的重点是我们配置的监听器。加载spring上下文文件需要ContextLoaderListener。Spring的配置文件称为applicationContext.xml文件,它必须放置在与web.xml文件相同的级别。
    让我们创建一个简单的action类User.java,它有两个属性 - firstName和lastName。

    package cn.w3cschool.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;
       }
    }
    

      

    现在,创建spring配置文件applicationContext.xml并实例化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="cn.w3cschool.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文件很简单。它仅用于一个目的:显示用户对象的firstname和lastname的值。最后,让我们使用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类做依赖注入。

    现在,右键单击项目名称,然后单击“Export”> “WAR File”以创建WAR文件。然后在Tomcat的webapps目录中部署WAR文件。最后,启动Tomcat服务器并尝试访问URL http://localhost:8080/HelloWorldStruts2/User.jsp,将显示以下界面:

    Struts和Spring集成

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

  • 相关阅读:
    关于linux命令 cp,rm,mv执行时是否询问的问题,不同用户有不同的别名设置
    用jquery根据json动态创建多级菜单导航(by https://www.cnblogs.com/fatty-yu/p/7088955.html)
    前台向后台传值的两种方法 以及 从后台获取数据的方法
    “加载更多”功能如何实现
    AngularJS的主要组成部分:
    数组与字符串的相互转化
    angular过滤器的使用 By http://www.tuicool.com/articles/ueUZBv
    transclude
    内嵌模版 template 原创
    导航栏选中效果 ng-repeat
  • 原文地址:https://www.cnblogs.com/w894819398/p/7298322.html
Copyright © 2011-2022 走看看