There are loads and loads of Struts 2 Tutorials on the web but most of them are confusing for beginners and mostly outdated. Here is a very simple, basic and easy to understand tutorial.
Before we start you must make sure that you too are working with Apache Tomcat version 7.0.xx or higher (Apache Tomcat version 9.0 is yet in Beta), make sure you have Eclipse IDE with J2EE plugin and you have downloaded the struts2 related jar files (http://mirror.cc.columbia.edu/pub/software/apache/tomcat/tomcat-7/v7.0.61/bin/apache-tomcat-7.0.61.tar.gz) and have created a Server under eclipse.
My Configurations and Setups :- Operating system: Mac OS X 10.10.2 (Yosemite)
- Application Server : Apache Tomcat version 7.0.61
- IDE: Eclipse Indigo Service Release 2 (20120216-1857)
This is a very simple example to get started, we will have an index.php page with two fields username and password, if username = "code2care" and password ="1234" the LoginAction lets you to Homepage.jsp or else to ErrorLogin.jsp, let's get started!
1. Create a new Project under Eclipse Project Explorer: SimpleStrutsEx
2. Place the index.jsp page under SimpleStrutsEx -> WebContent
index.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>Simple Struts Example : Code2care</title>
</head>
<body>
<h1>Login Page : </h1>
<form action="loginForm">
<label for="uname">Enter UserName : </label>
<input type="text" name="uname"/><br/>
<label for="password">Enter Password : </label>
<input type="password" name="password"/><br/>
<input type="submit" value="Login"/>
</form>
</body>
</html>
3. Create HomePage.jsp file under SimpleStrutsEx -> WebContent
homepage.jsp<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Welcome : Admin</title>
</head>
<body>
Welcome : <s:property value="uname"/>
</body>
</html>
4. Create LoginError.jsp page and place it also under : SimpleStrutsEx -> WebContent
LoginError.jsp<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Login Error!</title>
</head>
<body>
No user found!! : <s:property value="uname"/>
</body>
</html>
5. Now lets create a package under SimpleStrutsEx -> Java Resources -> src and name it com.code2care.struts
6. Under the package, we just created in step 5 place our Action class called LoginAction.java
LoginAction.javapackage com.code2care.struts;
public class LoginAction {
private String uname;
private String password;
public String execute() throws Exception {
if(uname.equals("code2care") && password.equals("1234"))
return "SUCCESS";
else
return "ERROR";
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
7. Now lets create our web.xml file under : SimpleStrutsEx -> WebContent -> WEB-INF
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_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>StrutsExample</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>loginProj</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginProj</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
8. Now create a folder named classes under : SimpleStrutsEx -> WebContent -> WEB-INF
9. Create struts.xml under classes folder w created at step 8.
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="SimpleStrutsEx" extends="struts-default" >
<action name="loginForm"
class="com.code2care.struts.LoginAction" method="execute">
<result name="SUCCESS">/HomePage.jsp</result>
<result name="ERROR">/LoginError.jsp</result>
</action>
</package>
</struts>
Note that you have added all Struts supporting jars under SimpleStrutsEx -> WebContent -> lib folder.
commons-fileupload-1.3.1.jar
commons-io-2.2.jar
commons-lang-2.4.jar
commons-lang3-3.2.jar
commons-logging-api-1.1.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.6.jar
struts2-core-2.3.20.1.jar
xwork-core-2.3.20.1.jar
Source Code Download Link: Dropbox: SimpleStrutsEx.zip
Download PDF: Strut2 Simple Tutorial with Example.pdf
- Java XML-RPC 3.1.x based web service example
- List of jars required for Struts2 project
- list of jars required for hibernate 4.x.x
- How to create StackOverflow error in java
- Tutorial Java SOAP WebServices JAS-WS with Eclipse J2EE IDE and Tomcat Server Part 1
- import servlet API to eclipse project (javax.servlet cannot be resolved error)
- [Solved] com.sun.xml.ws.transport.http.servlet.WSServletContextListener ClassNotFoundException
- Convert String to int in Java
- JSP Hello World Program Tutorial with Eclipse and Tomcat Server
- SharePoint Open in the client application document opens in browser
- Java: TimeZone List with GMT/UTC Offset
- Struts2 : java.lang.ClassNotFoundException: org.apache.commons.fileupload.RequestContext
- Remove Trailing zeros BigDecimal Java
- [Solution] Java Error Code 1603. Java Update did not complete.
- Maven Eclipse (M2e) No archetypes currently available
- error: file not found: HelloWorld.java
- Exception in thread main java.lang.NoClassDefFoundError: package javaClass
- 7 deadly java.lang.OutOfMemoryError in Java Programming
- How to check if Java main thread is alive
- [Hibernate] The method buildSessionFactory() from the type Configuration is deprecated
- Java XML-RPC java.net.BindException: Address already in use
- Eclipse : The type java.lang.CharSequence cannot be resolved. Indirectly referenced from required .class files
- Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end users experience
- Eclipse : A java Runtime Environment (JRE) or Java Development kit (JDK) must be available
- List of jar files for Jax-ws (SOAP) based Java Web Services
- [Java Threads] Should we extend Thread Class or implement Runnable interface
- Maven Unsupported major.minor version 51.0
- hibernate.cfg.xml Configuration and Mapping xml Example
- How to verify if java is installed on the computer and get version detail
- Unhandled exception type InterruptedException : Java Threads
- XmlRpcException ConnectException connection refused error
- Error: Unable to access jarfile jarFileName.jar file [Windows]
- BeanDefinitionStoreException IOException parsing XML document from class path resource [spring.xml]
- How to serialize-deserialize an object in java
- List of Java Keywords
- Simple Struts 2 Tutorial in eclipse with tomcat 7 server
- Struts 2 Hello World Example in Eclipse
- Your JBoss Application Server 7 is running However you have not yet added any users to be able to access the admin console
- List of Java versions
- Create simple struts2 project using maven commands
- Struts 2 : There is no Action mapped for namespace [/] and action name [form] associated with context path [/proj]
- Error: Can not find the tag library descriptor for
- connection.url property value in hibernate.cfg.xml for mysql
- Unbound classpath container: JRE System Library [JavaSE-1.7]
- Setting Java_Home Environment variable on Windows Operating System
- How to know if someone has read your WhatsApp message - WhatsApp
- Android Studio NoClassDefFoundError: java.awt.Toolkit - Android-Studio
- WhatsApp launches WhatsApp Web to Access Messages over web browser - WhatsApp
- What is Android Toast.LENGTH_SHORT and Toast. LENGTH_LONG durations - Android
- Check Wifi Connection static Android Programming - Android
- Android Constant and Resource Type Mismatches Lint - Android
- How to Word wrap eclipse console logs width - Eclipse
- How to hide Navigation bar from Android Screen Activity - Android
- Share image and text Twitter using your Android Application Programatically - Twitter
- WhatsApp Web escanner - WhatsApp
- Programmatically check if Facebook is installed on Android device - Android
- Install Apache Tomcat ver 8 on Mac OS X Yosemite 10.10 - Mac-OS-X
- Disable Control Scroll Zoom-in and Zoom-out in Notepad++ - NotepadPlusPlus
- Can we move apps like WhatsApp, Facebook to external MicroSD card - WhatsApp
- Java: Check Internet connection on Android Device (Wifi or Mobile) - Android