codestory

Die Anleitung zum Struts2 für den Anfänger (XML Config)

  1. Die Vorstellung
  2. Maven Project erstellen
  3. Die Konfiguration von Maven
  4. Struts & web.xml konfigurieren
  5. Code Project
  6. Der Thread vom Programm
  7. Die Applikation laufen

1. Die Vorstellung

This document was written based on:
  • Eclipse 4.6
  • Struts 2 (2.3.20)
Sie sehen gerade die Anleitung der Erstellung der Applikation Hello World Struts, die XML zur Konfiguration benutzt. Sie können das entsprechende Beispiel von Benutzung Annotation zur Konfiguration bei... sehen:

2. Maven Project erstellen

  • File/New/Other..
Geben Sie ein:
  • Group ID: org.o7planning
  • Artifact ID: Struts2XML
  • Package: org.o7planning.tutorial.struts2xml
Das Projekt wurde erstellt und hat eine Fehleranmeldung. Sorgen Sie nicht dafür. Der Grund liegt darin, dass Sie die Bibliothek Servlet noch nicht deklarieren.
Maven erstellt das Projekt webapp, das die falsche Struktur haben kann. Sie brauchen korrigieren.
Das ist das Foto des Projekt nach der Erledigung:

3. Die Konfiguration von Maven

Konfigurieren Sie Maven um die Bibliothek zur Benutzung zu deklarieren, einschließend die Bibliothek Servlet, Struts2. Gleichzeitig konfigurieren Sie Maven Tomcat Plugin zur direkten Durchführung der Web-Applikation in Eclipse.
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/maven-v4_0_0.xsd">
    
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.o7planning</groupId>
    <artifactId>Struts2XML</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>

    <name>Struts2XML Maven Webapp</name>
    <url>http://maven.apache.org</url>


    <dependencies>
    
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>


        <!-- Servlet Library -->
        <!-- http://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

        <!-- Jstl for jsp page -->
        <!-- http://mvnrepository.com/artifact/javax.servlet/jstl -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>


        <!-- JSP API -->
        <!-- http://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api -->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
            <scope>provided</scope>
        </dependency>

        <!-- http://mvnrepository.com/artifact/org.apache.struts/struts2-core -->
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>2.3.20</version>
        </dependency>

    </dependencies>

    <build>
        <finalName>Struts2XML</finalName>
        <plugins>

            <!-- Config: Maven Tomcat Plugin -->
            <!-- http://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat7-maven-plugin -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <!-- Config: contextPath and Port (Default: /Struts2XML : 8080) -->
                <!--
                <configuration>
                  <path>/</path>
                  <port>8899</port>
                </configuration>
                -->
            </plugin>
        </plugins>
    </build>
    
</project>
Jetzt hat Ihr Projekt keine Fehleranmeldung.

4. Struts & web.xml konfigurieren

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"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
 id="WebApp_ID" version="3.0">

 <display-name>Struts2XML</display-name>


 <filter>
   <filter-name>struts2</filter-name>
   <filter-class>
           org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
   </filter-class>
 </filter>

 <filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
 </filter-mapping>

 <welcome-file-list>
   <welcome-file>/WEB-INF/pages/Login.jsp</welcome-file>
 </welcome-file-list>

</web-app>
struts.xml ist eine File resource, die in src/main/resources gestellt werden soll. Diese File wird benutzt, struts zu konfigurieren.
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.enable.DynamicMethodInvocation"
       value="false" />
        
   <constant name="struts.devMode" value="true" />
   <constant name="struts.custom.i18n.resources"
       value="ApplicationResources" />
 
   <package name="default" namespace="/" extends="struts-default">
       <action name="login"
           class="org.o7planning.tutorial.struts2xml.action.LoginAction">
           <result name="success" type="redirect">/userInfo</result>
           <result name="error">/WEB-INF/pages/Login.jsp</result>
       </action>
       
       <action name="userInfo"
           class="org.o7planning.tutorial.struts2xml.action.UserInfoAction">
           <result name="userInfoPage">/WEB-INF/pages/UserInfo.jsp</result>
       </action>
       
   </package>  
    
</struts>

5. Code Project

Die File ApplicationResources.properties in src/main/resources erstellen:
ApplicationResources.properties
label.username= Username
label.password= Password
label.login= Login
error.login= Invalid Username/Password. Please try again.
Login.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Struts 2 - Login Application </title>
</head>

<body>
<h2>Struts 2 - Login Application</h2>
<s:actionerror />
<s:form action="/login" method="post">
  <s:textfield name="username" key="label.username" size="20" />
  <s:password name="password" key="label.password" size="20" />
  <s:submit method="execute" key="label.login" align="center" />
</s:form>

<br>
Username: admin, password: admin123

</body>
</html>
UserInfo.jsp
<%@ page contentType="text/html; charset=UTF-8"%>

<html>
<head>
<title>User Info</title>
</head>
 
<body>
    <h2>Hello, ${loginedUsername}...!</h2>
</body>
</html>
LoginAction.java
package org.o7planning.tutorial.struts2xml.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

	private static final long serialVersionUID = 7299264265184515893L;

	private String username;
	private String password;

	@Override
	public String execute() {

		HttpServletRequest request = ServletActionContext.getRequest();

		if (this.username != null && this.password != null && this.username.equals("admin")
				&& this.password.equals("admin123")) {

			HttpSession session = request.getSession();
			
			//  userName in session lagern.
			session.setAttribute("loginedUsername", this.username);

			return "success";
		} else {
			addActionError(getText("error.login"));
			return "error";
		}
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
}
UserInfoAction.java
package org.o7planning.tutorial.struts2xml.action;

import com.opensymphony.xwork2.ActionSupport;

public class UserInfoAction extends ActionSupport {

    private static final long serialVersionUID = 7299264265184515893L;
    
    
    @Override
    public String execute() {
    
        return "userInfoPage";
    }

 
}

6. Der Thread vom Programm

Die folgende Illustration bezeichnet das Thread vom Programm seit dem Zugriff auf die Seite bis zur Erhaltung der Anwort vom Server

    7. Die Applikation laufen

    Um die Applikation direkt in Eclipse zu laufen, sollen Sie zur Laufen von Tomcat Maven Plugin konfigurieren.
    Geben Sie ein:
    • Name: Run Struts2XML
    • Base Directory: ${workspace_loc:/Struts2XML}
    • Goals: tomcat7:run
    Tomcat Maven Plugin wurde gelaufen
    Auf dem Browser geben Sie den Pfad:
    Wenn Sie username/password falsch eingeben, wird die Seite wie folgend angezeigt:
    Falls recht eingeben: