Getting started with struts2
Remarks#
While the framework is simple to use, creating non-trivial applications assumes a working knowledge of many JEE technologies, including:
- Java
- Filters
- JSP
- Tag Libraries
- JavaBeans
- HTML and HTTP
- Web Containers (such as Tomcat)
- XML
Download
A distribution can be downloaded from the Apache Struts website. The full distribution contains:
- the
struts2-core.jarfile - related dependencies
- example applications
- a copy of the documentation in HTML format
- the complete source code.
Blank Application
The blank web application in the distribution’s apps directory is meant as a template.
There is even a simple batch file in the source code directory that we can use to recompile the application in place.
We can make a copy of the blank.war, deploy it to our container, and use the exploded copy as the basis for our application.
New application from Maven Archetype
For those of us using Maven as a build system, we can use the Maven Archetype to create a new application.
First consult the maven archetype catalog
mvn archetype:generate -DarchetypeCatalog=https://struts.apache.org/you can use one of the following achetypes:
The Blank Convention Archetype (struts2-archetype-convention)
It has the following features:
- Convention-based validation
- Example actions
- Package-level resource bundle
- Unit-testing
- Google AppEgine aware
to download it trough maven run the command
mvn archetype:generate -B -DgroupId=com.mycompany.mysystem \
-DartifactId=myWebApp \
-DarchetypeGroupId=org.apache.struts \
-DarchetypeArtifactId=struts2-archetype-convention \
-DarchetypeVersion=<CURRENT_STRUTS_VERSION> \
-DremoteRepositories=https://struts.apache.orgThe Blank Archetype (struts2-archetype-blank)
It has the following features:
- XML-based configuration, demonstrates including additional config file
- Example actions
- Package-level resource bundle
- XML-based validation
- Unit-testing
to download it trough maven run the command
mvn archetype:generate -B -DgroupId=com.mycompany.mysystem \
-DartifactId=myWebApp \
-DarchetypeGroupId=org.apache.struts \
-DarchetypeArtifactId=struts2-archetype-blank \
-DarchetypeVersion=<CURRENT_STRUTS_VERSION> \
-DremoteRepositories=https://struts.apache.orgThe Starter Archetype (struts2-archetype-starter)
It has the following features:
- Sitemesh integration
- Action example (instantiated both through Spring and Struts)
- Spring integration
- Validation example (action and action-alias level)
- Conversion example (global and action level)
- Resource bundle (both global, action and package level)
to download it trough maven run the command
mvn archetype:generate -B -DgroupId=com.mycompany.mysystem \
-DartifactId=myWebApp \
-DarchetypeGroupId=org.apache.struts \
-DarchetypeArtifactId=struts2-archetype-starter \
-DarchetypeVersion=<CURRENT_STRUTS_VERSION> \
-DremoteRepositories=https://struts.apache.orgThe AngularJS Archetype (struts2-archetype-angularjs)
It has the following features:
- Convention-based Action Configuration
- Example actions with JSON Result
- Example for AngularJS and Struts2 Integration
to download it trough maven run the command
mvn archetype:generate -B -DgroupId=com.mycompany.mysystem \
-DartifactId=myWebApp \
-DarchetypeGroupId=org.apache.struts \
-DarchetypeArtifactId=struts2-archetype-angularjs \
-DarchetypeVersion=<CURRENT_STRUTS_VERSION> \
-DremoteRepositories=https://struts.apache.orgThe Portlet Blank Archetype (struts2-archetype-portlet)
It has the following features:
-
View, Edit, and Help mode examples - Simple form for preferences in Edit mode
- Can be deployed as a servlet or portlet application
- Can use Maven Jetty plugin to deploy with the pluto-embedded profile
(usage ‘mvn jetty:run -Ppluto-embedded’, then access
https://localhost:8080/
/pluto/index.jsp)
to download it trough maven run the command
mvn archetype:generate -B -DgroupId=com.mycompany.mysystem \
-DartifactId=myWebApp \
-DarchetypeGroupId=org.apache.struts \
-DarchetypeArtifactId=struts2-archetype-portlet \
-DarchetypeVersion=<CURRENT_STRUTS_VERSION> \
-DremoteRepositories=https://struts.apache.orgThe Portlet Database Archetype (struts2-archetype-dbportlet)
It has the following features:
-
Uses Spring and Hsql to show a real database query - Builtin caching of query results
- View, Edit, and Help mode examples
- Simple form for preferences in Edit mode
- Can be deployed as a servlet or portlet application
- Can use Maven Jetty plugin to deploy as a servlet webapp
to download it trough maven run the command
mvn archetype:generate -B -DgroupId=com.mycompany.mysystem \
-DartifactId=myWebApp \
-DarchetypeGroupId=org.apache.struts \
-DarchetypeArtifactId=struts2-archetype-dbportlet \
-DarchetypeVersion=<CURRENT_STRUTS_VERSION> \
-DremoteRepositories=https://struts.apache.orgThe Plugin Archetype (struts2-archetype-plugin)
It has the following features:
- Example new result type
- Example XML-based configuration
to download it trough maven run the command
mvn archetype:generate -B -DgroupId=com.mycompany.mysystem \
-DartifactId=myPlugin \
-DarchetypeGroupId=org.apache.struts \
-DarchetypeArtifactId=struts2-archetype-plugin \
-DarchetypeVersion=<CURRENT_STRUTS_VERSION> \
-DremoteRepositories=https://struts.apache.org