DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
  • Refcardz
  • Trend Reports
  • Webinars
  • Zones
  • |
    • Agile
    • AI
    • Big Data
    • Cloud
    • Database
    • DevOps
    • Integration
    • IoT
    • Java
    • Microservices
    • Open Source
    • Performance
    • Security
    • Web Dev
DZone >

Struts 2 Spring Integration Tutorial

Meyyappan Muthuraman user avatar by
Meyyappan Muthuraman
·
Jun. 15, 12 · · Tutorial
Like (0)
Save
Tweet
59.93K Views

Join the DZone community and get the full member experience.

Join For Free

In this simple hello world example you will see how to integrate Spring and Struts 2 using the struts2-spring-plugin. By doing this you can utilize the Spring's powerful Dependency Injection feature. To learn more about Dependency Injection refer this example.

First add the org.springframework.web.context.ContextLoaderListener to the web.xml file.

<?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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Struts2Example14</display-name>
  	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter. StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<listener>
    	<listener-class>org.springframework.web.context. ContextLoaderListener</listener-class>
	</listener>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

By default the applicationContext.xml file will be used for doing the Spring bean configuration.

<?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="helloWorldClass" class="com.vaannila.HelloWorld" >
    	<property name="message" value="Hello World!" />
    </bean>
</beans>

As you can see we have registered the HelloWorld class and injected the "Hello World!" message to the message attribute using the setter injection method.

All the Struts 2 action configuration goes in the struts.xml file.

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <package name="default" extends="struts-default">
        <action name="helloWorld" class="helloWorldClass">
            <result name="SUCCESS">/success.jsp</result>
        </action>
    </package>
</struts>

The only change here is instead of referring the com.vaannila.HelloWorld class directly, we relate it using the bean name given in the spring bean configuration file.

The HelloWorld class is shown below. In the execute() method we simply return "SUCCESS" and the message attribute is set using setter injection.

package com.vaannila;

public class HelloWorld {

	private String message;

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
	
	public String execute() {
        return "SUCCESS";
    }
}

In the index.jsp page we forward the request to the helloWorld action.

<META HTTP-EQUIV="Refresh" CONTENT="0;URL=helloWorld.action">

After invoking the execute() method the user will be directed to the success.jsp page. In this page we dispaly the message value.

You need to have the following jar files in the WEB-INF/lib directory.

commons-fileupload-1.2.1
commons-io-1.3.2
commons-logging-1.1
freemarker-2.3.13
junit-3.8.1
ognl-2.6.11
struts2-convention-plugin-2.1.6
struts2-core-2.1.6
xwork-2.1.2

struts2-spring-plugin-2.1.6

antlr-runtime-3.0
org.springframework.asm-3.0.0.M3
org.springframework.beans-3.0.0.M3
org.springframework.context-3.0.0.M3
org.springframework.core-3.0.0.M3
org.springframework.expression-3.0.0.M3
org.springframework.web-3.0.0.M3
org.springframework.web.servlet-3.0.0.M3

The directory structure of the example is shown below.

You can download and try the example here.

Source :Download
Source + Lib :Download
Spring Framework Spring Integration Integration Dependency injection

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • After Inspection, Comes Adaptation: How to Do Action-Based Retrospectives Right
  • How BDD Works Well With EDA
  • How to Hash, Salt, and Verify Passwords in NodeJS, Python, Golang, and Java
  • Usage of Java Streams and Lambdas in Selenium WebDriver

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • MVB Program
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends:

DZone.com is powered by 

AnswerHub logo