Apache Struts 2 Documentation > Home > Tutorials > Bootstrap > Ready, Set, Go! > Simple Setup
Added by Ted Husted, last edited by Ted Husted on Sep 04, 2006  (view change)

If for some reason the blank template or archetype doesn't work for you, here's how to setup an application from square one.

Setup the Web Application File Structure

/tutorial/
/tutorial/META-INF/
/tutorial/WEB-INF/
/tutorial/WEB-INF/classes/
/tutorial/WEB-INF/lib/
/tutorial/WEB-INF/lib/CORE&OPTIONAL *.jar
/tutorial/WEB-INF/web.xml
  • Copy to your webapp/lib directory
    • the struts2-core-(VERSION).jar,
    • all the *.jar files in /lib/default, and
    • any necessary optional *.jar files from /lib/.
If you need to customize your own templates (how HTML is rendered from Struts UI tags), copy into your webapp directory the /src/java/template directory.

Install the Minimum Set of Libraries and Configuration Files

The following files are a minium requirement for your application.

Filename Description
struts2-core.jar Framework library itself, found in distribution root directory
xwork.jar XWork library on which Struts 2 is built (version 2.0 or later)
oscore.jar OSCore, a general-utility library from OpenSymphony
ognl.jar Object Graph Navigation Language (OGNL), the expression language used throughout the framework
commons-logging.jar Commons logging, which the framework uses to support transparently logging to either Log4J or JDK 1.4+
freemarker.jar All UI tag templates are written in Freemarker (also a good option for your own views)
spring*.jar The default dependency injection container for the framework.
web.xml Java web application configuration file that defines the filters (and other components) for your web application
struts.xml Framework configuration file that defines the actions, results, and interceptors for your application

The library files (*.jar) needs to be copied to your /mywebapp/WEB-INF/lib/ directory. If you need optional functionalities requiring dependencies on optional JARs, those JARs need to be copied to this directory too.

Setup the Web Application Deployment Descriptor (web.xml)

Create an web.xml file in [webapp]/WEB-INF (or merge into it the framework resources).

web.xml
<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
  <display-name>My Application</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>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
</web-app>

The standard web.xml registers a FilterDispatcher to enable framework functionality for your requests. The ContextLoaderListener configures Spring as our dependency injection container. The framework uses Spring internally. (You may wish to use Spring to deploy your own objects too.)

See also: web.xml

Setup the Struts Configuration (struts.xml)

Create a skeleton struts.xml file in /$APP/WEB-INF/classes.

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

<struts><!-- Include framework defaults (from Struts 2 JAR). -->
	<include file="struts-default.xml" />

	<!-- Configuration for the default package. -->
	<package name="default" extends="struts-default">
	</package>
</struts>

For now, the struts.xml does only two things:

  • It tells the framework that it should import the configuration information from struts-default.xml. (This file is located at the root of the struts2-core.jar, so it is sure to be found.)
  • It defines a default package (with the <package> section) where framework elements like actions, results and interceptors are registered.

See also: struts.xml

Next Onward to Hello World
Prev Return to Ready, Set, Go!