Tutorial:Struts Spring framework example in Eclipse.

Let us see how to add Spring support (Spring IOC) to a Struts application using Eclipse IDE. I will use the hello world struts project that we created in this tutorial as base reference and step by step we will add Spring support to it. In this tutorial we will use Spring IOC (Inversion Of Control) mechanism. There will be a business delegate class that will be used to authenticate user. In Login class we will inject this BusinessDelegate class using Spring Injection. Let us start with tutorial. First, Download required JAR file required for setting Spring support to our Struts application. For this we will need Spring.jar. Download it from here (Spring.jar, version 1.1, 985kb). You can download latest JAR file from Spring frameworks download page. Copy spring.jar file in WEB-INF/lib folder of our struts project. Now open your struts-config.xml from WEB-INF folder and add following entry for plugin in it. This will add Spring support to your struts project.
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property > </plug-in>
Code language: HTML, XML (xml)
Create an xml file called ApplicationContext.xml in WEB-INF directory. Copy following content in ApplicationContext.xml file.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- Business Objects --> <bean id="businessDelegate" class="net.viralpatel.struts.helloworld.business.BusinessDelegate"> </bean> <!-- Actions Classes --> <bean name="/login" class="net.viralpatel.struts.helloworld.action.LoginAction"> <property name="businessDelegate"><ref local="businessDelegate"/></property> </bean> </beans>
Code language: HTML, XML (xml)
Note that in this example we are using Spring framework to instantiate an object of BusinessDelegate class as well as LoginAction class and injecting this object of BusinnessDelegate in LoginAction. So create a package net.viralpatel.struts.helloworld.business and create a java file BusinessDelegate.java in it. Copy following code for login validation in BusinessDelegate class.
package net.viralpatel.struts.helloworld.business; public class BusinessDelegate { public String validateUser(String userName, String password) { if(userName.equals("admin") && password.equals("123")) { return "success"; } return "failure"; } }
Code language: Java (java)
Also add a property for BusinessDelegate class in LoginAction and its getter and setter method. This property will get injected by Spring. Copy/Paste following code in your LoginAction.java file.
package net.viralpatel.struts.helloworld.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.viralpatel.struts.helloworld.business.BusinessDelegate; import net.viralpatel.struts.helloworld.form.LoginForm; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class LoginAction extends Action { private BusinessDelegate businessDelegate; public BusinessDelegate getBusinessDeletage() { return businessDelegate; } public void setBusinessDelegate(BusinessDelegate businessDeletage) { this.businessDelegate = businessDeletage; } public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { String target = null; LoginForm loginForm = (LoginForm)form; target = businessDelegate.validateUser(loginForm.getUserName(), loginForm.getPassword()); return mapping.findForward(target); } }
Code language: Java (java)
Note that LoginAction class is also instantiate using Spring. Hence we will modify entry in struts-config.xml.
<action-mappings> <action path="/login" name="LoginForm" validate="true" input="/index.jsp" type="org.springframework.web.struts.DelegatingActionProxy"> <forward name="success" path="/welcome.jsp" /> <forward name="failure" path="/index.jsp" /> </action> </action-mappings>
Code language: HTML, XML (xml)
In type attribute, instead of LoginAction, we have used org.springframework.web.struts.DelegatingActionProxy. This is spring framework class that will delegate the call to action to specific class in ApplicationContext.xml file. Note that path=”/login” should match to name=”/login” entry that we made in ApplicationContext.xml file. And that’s it. We have just implemented Spring support to our struts application. You can download war file of struts-spring application with full source here. SOURCE CODE

View Comments

Share
Published by
Viral Patel
Tags: application-context JavaEE Spring spring injection spring ioc Struts Tutorial

Recent Posts

  • Java

Java URL Encoder/Decoder Example

Java URL Encoder/Decoder Example - In this tutorial we will see how to URL encode/decode…

4 years ago
  • General

How to Show Multiple Examples in OpenAPI Spec

Show Multiple Examples in OpenAPI - OpenAPI (aka Swagger) Specifications has become a defecto standard…

4 years ago
  • General

How to Run Local WordPress using Docker

Local WordPress using Docker - Running a local WordPress development environment is crucial for testing…

4 years ago
  • Java

Create and Validate JWT Token in Java using JJWT

1. JWT Token Overview JSON Web Token (JWT) is an open standard defines a compact…

4 years ago
  • Spring Boot

Spring Boot GraphQL Subscription Realtime API

GraphQL Subscription provides a great way of building real-time API. In this tutorial we will…

4 years ago
  • Spring Boot

Spring Boot DynamoDB Integration Test using Testcontainers

1. Overview Spring Boot Webflux DynamoDB Integration tests - In this tutorial we will see…

4 years ago