Recently I’ve started learning the Struts 2 framework. Though I’ve been using Struts 1.3 for quite some time, understanding Struts 2 was little tricky as the ‘Hello World sample application’ provided by Struts 2 site is little confusing. So, I was searching for a simple ‘Hello world example for Struts 2′ and after going through many different sites, finally I was able to run my first Struts 2 application. Here are the steps that I did to start with Struts 2. I am using Eclipse IDE and all the steps explained below are in referring to Eclispe 3 IDE.
Struts 2 Hello World Application – Getting started with Struts 2
- Create New : Project : Dynamic Web Project and give a name to your project and the location to save your project. For this example, I gave HelloWorld as my project name.
- Second step will be including JAR files required by Struts 2 framework to our project’s WEB-INF/lib folder. You can either download below JARs separately or simple copy them from the lib folder of struts2-blank-application provided by Struts 2 website. Note that the version numbers in the JAR files are the latest ones when this article written. You may use the latest JARs if they are available.
- commons-logging-1.0.4.jar
- freemarker-2.3.8.jar
- ognl-2.6.11.jar
- struts2-core-2.0.11.jar
- xwork-2.0.4.jar
- Next step will be configuring struts 2 filter in web.xml file. Have a look at the below sample configuration.
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Struts 2 : Hello World</display-name> <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>
- Now we will create a struts action class HelloWorld.java. To do this, create a new package tutorial under the project’s source folder and inside the tutorial package, create a new class file and name it HelloWorld.java. Below is the source code for this class file.
package tutorial; import com.opensymphony.xwork2.ActionSupport; public class HelloWorld extends ActionSupport { private static final long serialVersionUID = 1L; private String message; public String execute() { setMessage("Hi there! This is a warm hello from Struts 2"); return SUCCESS; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } - Notice that above class extends
ActionSupportand it implements theexecute()method. As per Struts 2, any class which does these two things are considered as Struts action classes. - We have our action class is ready. Now it’s the time to create the presentation page, i.e JSP. Create a new JSP file HelloWorld.jsp inside the WebContent folder and type in below code in this JSP file.
<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Struts 2 - Hello World tutorial</title> </head> <body> <h2><s:property value="message"/></h2> If you can see above message, Congrats! You have successfully created your first Struts 2 application. </body> </html>
- Now we will create the very important struts.xml file which glues our action class with the presentation JSP file. Since Struts 2 requires struts.xml to be present in classes folder, we will create stuts.xml file inside the source folder, so that when building the WAR file, struts.xml will be put in classes folder. Below is the code for struts.xml file.
<?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.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="false" /> <package name="tutorial" namespace="/" extends="struts-default"> <action name="HelloWorld" class="tutorial.HelloWorld"> <result>/HelloWorld.jsp</result> </action> </package> </struts>
- Now we are good to go. Right click on the project name and click Export ? WAR File. Then deploy this WAR in the Tomcat’s webapps directory. Now start Tomcat server and point your browser to the URL http://localhost:8080/HelloWorld/HelloWorld.action and Tada! Your first struts 2 application is delivering the JSP page with a hello message to you!!
So, that’s it. Now the Hello World application is done using this latest Struts framework.


{ 69 comments… read them below or add one }
← Previous Comments
Hi,
thanks for the tips!..
but it does not work for me.. I meant: I did not see the words: “Hi there! This is a warm hello from Struts 2″
could you please help?
thanks & regards
Luc
can u please explain a bit more about the issue that you are facing? Any stack trace?
Thanks for your response,
problem:
I am unable to see the words: “Hi there! This is a warm hello from Struts 2?
I am using Netbeans 6.9
when I set the welcome-page to the HelloWorld.jsp .. it does not show the words “Hi there! This is a warm hello from Struts 2?
my struts.xml:
/example/HelloWorld.jsp
;
and If I removed the welcome-page .. and I point my browser to: http://localhost:8080/webapplication1/doHelloWorld.action
I got message below:
“HTTP Status 404 -
type Status report
message
descriptionThe requested resource () is not available.
GlassFish v3″
Thanks for your response,
problem:
I am unable to see the words: “Hi there! This is a warm hello from Struts 2?
I am using Netbeans 6.9
when I set the welcome-page to the HelloWorld.jsp .. it does not show the words “Hi there! This is a warm hello from Struts 2?
my struts.xml:
/example/HelloWorld.jsp
;
and If I removed the welcome-page .. and I point my browser to: http://localhost:8080/webapplication1/doHelloWorld.action
I got message below:
“HTTP Status 404 -
type Status report
message
descriptionThe requested resource () is not available.
GlassFish v3?
hi,
I am new to struts and I tried your code. It is working but the message
is not displaying.
I’m able to see “If you can see above message, Congrats! You have successfully created your first Struts 2 application”.
Any idea why the message in the tags not dispaying.
I got the error. Now it’s working.
Finally an example that actually works! Thanks a lot!
Thank you soooooooo much! you just made my day……..thanks again
can any one give me his number so that i can call him or her in regards with struts2 ……………..I need urgent help regards with struts 2 because i am running struts 1 and its running well,but when i am trying 2 run struts 2 program its not running at all and i am getting tensed……
Hello Sir,
Great Tutorial…………. I ran in first attempt……………
Thank you !
I followed steps but got this output in browser:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Filter execution threw an exception
root cause
java.lang.NoClassDefFoundError: Could not initialize class com.opensymphony.xwork2.util.profiling.UtilTimerStack
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:425)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
Thanks in advance..
problem:
I am unable to see the words: “Hi there! This is a warm hello from Struts 2?
i followed the same steps… but i am clueless what is going wrong here
← Previous Comments