Struts 1.3.10
Als erstes: Was ist Struts überhaupt?
Wirklich kurz gesagt ist Struts ein Java-Framework zur Erstellung von Webapplikationen. Seine Stärken spielt es erst in größeren Projekten aus, was man mit der Zeit auch selbst mitkriegt. Allerdings kann ich derzeit nicht sagen, wie groß es sein muss. Der Grundstamm an Dateien und Librarys ist sehr groß und man hat das Gefühl für eine Kleinigkeit sehr viele Dateien anfassen zu müssen aber ich möchte Struts auf keinen Fall seine Existenzberechtigung absprechen. Was wäre ich auch für ein Entwickler, wenn ich mich vor irgendwas sperren würde 🙂
“Für eine Kleinigkeit sehr viele Dateien anfassen zu müssen” kommt daher, dass Struts sehr streng nach MVC arbeitet. Diese wirklich strenge Teilung hat den Vorteil, dass man bei einer Änderung sehr genau weiß wo man gucken muss. Und natürlich alle weiteren Vorteile, die das MVC-Modell so mit sich bringt.
Wir brauchen:
Installation der Komponenten
Es ist wichtig, dass man das Struts 1.3x Framework nimmt, sonst funktioniert das, was ich hier schreibe alles nicht. Zur Version 2.0 hat sich ziemlich viel geändert.
- 1. Als erstes lädt man sich den Tomcat-Server als *.zip herunter und entpackt den Ordner an eine beliebige Stelle.
- 2. Anschließend startet man Eclipse und legt ein neues Dynamisches Web Projekt an.
Screenshot – New Dynamic WebProject - 3. Diesem Projekt soll auch der Tomcat-Server zugeordnet werden, damit wir die Applikation bequem über Eclipse ausführen und (theoretisch) sogar debuggen können.
Screenshot – New Server Runtime Environment
Die Umsetzung
Fangen wir mit dem Codeschreiben an 🙂
Zuvor allerdings noch ein Bild. Auf diesem kann man die notwendige Ordnerstruktur und alle notwendigen Librarys erkennen. Außerdem sieht man sehr schön, was man alles braucht um das Ergebnis, ein einfaches “Hello World”, zu schreiben. Letztere Aussage ist völlig ohne Wertung. Struts ist nicht für kleine Projekte gedacht und deshalb braucht es halt einen Grundstamm an Dateien. Und letztendlich ist es gar nicht so schwer da durchzusehen.

Kommen wir zu den Inhalten der Dateien (klicken zum anschauen):
[java title=”web.xml” collapse=”true”]
<?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>StrutsHelloWorld</display-name>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
</web-app>
[/java]
[java title=”struts-config.xml” collapse=”true”]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
<form-bean name="helloWorldForm" type="forms.HelloWorldForm" />
</form-beans>
<global-forwards>
<forward name="helloWorld" path="/helloWorld.do" />
</global-forwards>
<action-mappings>
<action path="/helloWorld"
type="actions.HelloWorldAction"
name="helloWorldForm">
<forward name="success" path="/helloWorld.jsp" />
</action>
</action-mappings>
</struts-config>
[/java]
[java title=”index.jsp” collapse=”true”]
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<logic:redirect forward="helloWorld" />
[/java]
[java title=”helloWorld.jsp” collapse=”true”]
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<bean:write name="helloWorldForm" property="message" />
</body>
</html>
[/java]
[java title=”HelloWorldForm.java” collapse=”true”]
package forms;
import org.apache.struts.action.ActionForm;
public class HelloWorldForm extends ActionForm {
private static final long serialVersionUID = 1L;
private String message;
public void setMessage(String message)
{
this.message = message;
}
public String getMessage()
{
return this.message;
}
}
[/java]
[java title=”HelloWorldAction.java” collapse=”true”]
package actions;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import forms.HelloWorldForm;
public class HelloWorldAction extends Action {
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception
{
HelloWorldForm hwForm = (HelloWorldForm)form;
hwForm.setMessage("Hello World");
return mapping.findForward("success");
}
}
[/java]
Zum Ausführen der Applikation, klickt man im Projekt-Explorer mit Rechtsklick auf den Namen des Projektes -> Run As -> Run on Server
Was passiert nun bei einem Aufruf der Seite?
Ich hab das mal in dieser Grafik skizziert, weil mir das sehr geholfen hat zu verstehen, was wann passiert. Teilweise ist mir das zu viel “gezaubere”.
- 1 und 2: Beim Aufruf der URL schaut Tomcat in die web.xml und leitet den User zu der in der
<welcome-file-list>definierten index.jsp weiter. - 3: Da in der index.jsp ein forward zu einer weiteren Seite angegeben wurde, geht der Request zurück an den Server und dort direkt in die struts-config.xml. Dort gibt es ein
<global-forward>-Eintrag, der den Request “helloWorld” erwartet und an das “/helloWorld.do” verweist. - 4 und 5: Nun wird in der web.xml geschaut, was man mit .do’s macht und landet wieder in der struts-config.xml
- 6: in der struts-config sind wir jetzt bei den
<action-mappings>(?) angekommen. Es wird die dort definierte Action aufgerufen und die ActionForm “HelloWorldForm” der in der Action existierenden “execute”-Methode als Parameter mitgeliefert wird - 7: in der execute-Methode werden alle Anweisungen abgearbeitet und ein “success” zurückgegeben. Statt success kann auch jede beliebige Zeichenfolge dort stehen…
- 8: nach dem return befinden wir uns wieder in der struts-config.xml; da das erwartete “success” eingetreten ist, kann nun die welcome.jsp an den User ausgeliefert werden

[…] Für die Installation des Tomcat-Servers bitte ich dann aber doch in diesen Artikel zu schauen: Struts 1 – Hello World […]