Beispiel für Google App Engine Struts 2

In diesem Tutorial zeigen wir Ihnen, wie Sie eine Struts 2 - Webanwendung in einer Google App Engine (GAE) -Umgebung entwickeln.

Verwendete Werkzeuge und Technologien:

  1. JDK 1.6

  2. Eclipse 3.7 Google Plugin für Eclipse

  3. Google App Engine Java SDK 1.6.3.1

  4. Streben 2.3.1.2

1. Neues Webanwendungsprojekt

Erstellen Sie in Eclipse ein neues Webanwendungsprojekt mit dem Namen "Struts2GoogleAppEngine".

gae struts2 beispiel neues projekt

Das Google Plugin für Eclipse generiert ein Muster der GAE-Projektstruktur. Später zeigen wir Ihnen, wie Sie Struts2 in dieses generierte GAE-Projekt integrieren.

gae struts2 Beispielprojekt

2. Struts 2 Bibliotheken integrieren

Erhalten Sie die folgenden Abhängigkeitsbibliotheken von Struts 2, download Struts2 hier .

  • asm-3.3.jar

  • asm-commons-3.3.jar

  • asm-tree-3.3.jar

  • commons-fileupload-1.2.2.jar

  • commons-io-2.0.1.jar

  • commons-lang-2.5.jar

  • freemarker-2.3.18.jar

  • javassist-3.11.0.GA.jar

  • ognl-3.0.4.jar

  • struts2-core-2.3.1.2.jar

  • xwork-core-2.3.1.2.jar

Legen Sie alle in den Ordner " war/WEB-INF/lib ".

gae struts2 Beispielbibliotheken

Klicken Sie mit der rechten Maustaste auf den Projektordner, wählen Sie " Properties " → " Java Build Path " → " Libraries ", klicken Sie auf " Add Jars " und wählen Sie über 11 Jar aus " war/WEB -INF/lib ”Ordner in den Erstellungspfad.

gae struts2 Beispiel Java-Buildpfad

3. Struts 2 Code integrieren

3.1 Löschen Sie die generierte Struts2GoogleAppEngineServlet.java , die Sie nicht benötigen.

3.2 Erstellen Sie eine neue Struts 2 Action-Klasse.

Datei: src/com/mkyong/user/action/WelcomeUserAction.java

package com.mkyong.user.action;

public class WelcomeUserAction {

    private String username;

    public String getUsername() {
        return username;
    }

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

    public String execute() {

        return "SUCCESS";

    }
}

3.3 Erstellen Sie eine Listener-Klasse und setzen Sie die Erkennungssicherheit auf null.

Ergebnis 'null' nicht gefunden]

Datei: src/com/mkyong/listener/Struts2ListenerOnGAE.java

package com.mkyong.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

import ognl.OgnlRuntime;

public class Struts2ListenerOnGAE implements ServletContextListener,
        HttpSessionListener, HttpSessionAttributeListener {

    public void contextInitialized(ServletContextEvent sce) {
        OgnlRuntime.setSecurityManager(null);
    }

    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
       //TODO Auto-generated method stub

    }

    @Override
    public void sessionCreated(HttpSessionEvent arg0) {
       //TODO Auto-generated method stub

    }

    @Override
    public void sessionDestroyed(HttpSessionEvent arg0) {
       //TODO Auto-generated method stub

    }

    @Override
    public void attributeAdded(HttpSessionBindingEvent arg0) {
       //TODO Auto-generated method stub

    }

    @Override
    public void attributeRemoved(HttpSessionBindingEvent arg0) {
       //TODO Auto-generated method stub

    }

    @Override
    public void attributeReplaced(HttpSessionBindingEvent arg0) {
       //TODO Auto-generated method stub

    }

}

3.4 Um das Struts2-Projekt in einer lokalen GAE-Umgebung ausführen zu können, müssen Sie eine TextBlock -Klasse erstellen und die ursprüngliche` TextBlok`-Klasse überladen. Andernfalls werden Sie die Fehlermeldung ‘javax.swing.tree.TreeNode ist eine eingeschränkte Klasse’-Fehlermeldung drücken. Hope Struts2-Team kann dies in Zukunft veröffentlichen.

  • TextBlock-Quellcode ** Gehen Sie zu dieser URL://google-app-engine/javax-swing-tree-treenode-is-a-restricted-class/[download TextBlock-Quellcode].

3.5 Überprüfen Sie die Verzeichnisstruktur des Projekts.

gae struts2-Beispielverzeichnis

4. Struts 2 Pages integrieren

4.1 Erstellen Sie eine Seite "login.jsp", um Benutzereingaben zu akzeptieren.

Datei: war/Benutzer/pages/login.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head></head>
<body>
<h1>GAE + Struts 2 Example</h1>

<s:form action="Welcome">
    <s:textfield name="username" label="Username"/>
    <s:password name="password" label="Password"/>
    <s:submit/>
</s:form>

</body>
</html>

4.2 Erstellen Sie eine `welcome__user.jsp'-Seite.

Datei: war/Benutzer/pages/welcome user.jsp__

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head></head>
<body>
<h1>GAE + Struts 2 Example</h1>

<h2>Hello <s:property value="username"/></h2>

</body>
</html>

4.3 Überprüfen Sie die Projektverzeichnisstruktur erneut.

gae struts2-Beispielverzeichnis

5. Struts XML-Konfiguration

Erstellen Sie eine struts.xml -Datei und geben Sie„ src/struts.xml “ein.

Datei: 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>

  <package name="user" namespace="/User" extends="struts-default">
    <action name="Login">
        <result>pages/login.jsp</result>
    </action>
    <action name="Welcome" class="com.mkyong.user.action.WelcomeUserAction">
        <result name="SUCCESS">pages/welcome__user.jsp</result>
    </action>
   </package>

</struts>

6. web.xml

Aktualisieren Sie web.xml , integrieren Sie Struts2 und konfigurieren Sie den ognl-Sicherheitslistener.

Datei: 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"
    version="2.5">
    <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>

    <listener>
        <listener-class>
                   com.mkyong.listener.Struts2ListenerOnGAE
                </listener-class>
    </listener>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>

7. Verzeichnisstruktur

Überprüfen Sie die endgültige Verzeichnisstruktur.

gae struts2 Beispielendverzeichnis

8. Auf lokaler Ebene ausführen

Fertig, Zeit zum Testen. Klicken Sie mit der rechten Maustaste auf das Projekt und führen Sie es als " Web Application " aus.

URL: http://localhost : 8888/Benutzer/Login.aktion

gae struts2-Beispiel wird auf local ausgeführt

gae struts2-Beispiel wird auf local ausgeführt

9. Bereitstellen auf GAE

Aktualisieren Sie appengine-web.xml und geben Sie Ihre App Engine-Anwendungs-ID ein.

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>mkyong-struts2gae</application>
  <version>1</version>

  <!-- Configure java.util.logging -->
  <system-properties>
    <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
  </system-properties>

</appengine-web-app>

Wählen Sie ein Projekt aus und klicken Sie auf das Google-Symbol „ Auf App Engine bereitstellen “. Google Plugin für Eclipse stellt alle erforderlichen Dateien automatisch für die GAE-Produktion bereit.

Beispiel für die Implementierung von gae struts2 in GAE

Während der Bereitstellung werden ähnliche Meldungen in der Eclipse-Konsolenansicht angezeigt.

------------ Deploying frontend ------------

Bereitstellung vorbereiten:

Das Staging-Verzeichnis wurde unter "C: \ Users \ mkyong \ AppData \ Local \ Temp \ appcfg7432687551.tmp" erstellt.

JSP-Dateien kompilieren

Scannen von Dateien auf lokaler Festplatte.

Update wird gestartet.

Klonen von 2 statischen Dateien.

46 Anwendungsdateien klonen.

Bereitstellen:

12 Dateien werden hochgeladen.

3 Dateien hochgeladen.

6 Dateien hochgeladen.

9 Dateien hochgeladen.

12 Dateien hochgeladen.

Vorkompilierung wird initialisiert ...

Stapelversand mit 11 Dateien insgesamt 44KB.

Sendebatch mit 1 Blob (s), insgesamt 1 KB.

Neue Version bereitstellen.

Verfügbarkeit prüfen:

Wird in 1 Sekunden erneut geprüft.

Wird in 2 Sekunden erneut geprüft.

Wird in 4 Sekunden erneut geprüft.

Abschluss des Updates: Die neue Version kann jetzt bereitgestellt werden

Aktualisieren des Datastores:

Indexdefinitionen hochladen

Die Bereitstellung wurde erfolgreich abgeschlossen

gae struts2 Beispiel läuft weiter GAE Hinweis
Endlich ist dieser lange Artikel fertig. Die Gesamtintegration ist nicht viel schwierig, nur die Probleme mit Struts2 ognl Security und TextBlock müssen behoben werden, Ich hoffe, dass das Team von Struts2 dies in Zukunft beheben kann.

Quellcode herunterladen

Aufgrund der großen Dateigröße sind alle Struts2-Gläser ausgeschlossen Laden Sie es manuell herunter.

Herunterladen - Struts2GoogleAppEngine.zip (23 KB)