Exemple de Google App Engine Struts 2

Exemple Google App Engine + Struts 2

Dans ce tutoriel, nous allons vous montrer comment développer l'application WebStruts 2 dans l'environnementGoogle App Engine (GAE).

Outils et technologies utilisés:

  1. JDK 1.6

  2. Eclipse 3.7 + Plugin Google pour Eclipse

  3. SDK Java de Google App Engine 1.6.3.1

  4. Struts 2.3.1.2

Note
Avant de poursuivre ce didacticiel, assurez-vous de lire ceci -GAE + Java example etStruts 2 hello world example.

1. Nouveau projet d'application Web

Dans Eclipse, créez un nouveau projet d'application Web, nommé «Struts2GoogleAppEngine».

gae struts2 example new project

Le plug-in Google pour Eclipse va générer un exemple de structure de projet GAE. Plus tard, nous vous montrerons comment intégrer Struts2 à ce projet GAE généré.

gae struts2 example sample project

2. Intégrer les bibliothèques Struts 2

Obtenez les bibliothèques de dépendances Struts 2 suivantes,download Struts2 here.

  • 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

Mettez tout dans le dossier «war/WEB-INF/lib».

gae struts2 example libraries

Faites un clic droit sur le dossier du projet, sélectionnez «Properties» → «Java Build Path» → onglet «Libraries», cliquez sur le bouton «Add Jars» et sélectionnez ci-dessus 11 jars de «war/WEB-INF/lib ”dans le chemin de construction.

gae struts2 example java build path

3. Intégrer le code Struts 2

3.1 Delete the generated Struts2GoogleAppEngineServlet.java, you don’t need this.

3.2 Create a new Struts 2 Action class.

Fichier: src / com / exemple / utilisateur / action / WelcomeUserAction.java

package com.example.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 Create a listener class, and set ognl security to null.

Note
Struts 2 a besoin de cet écouteur pour s'exécuter dans l'environnement GAE. Lire ceci -Issues when deploying Struts 2 on GAE etError: result ‘null’ not found

Fichier: src / com / example / listener / Struts2ListenerOnGAE.java

package com.example.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 To run Struts2 project in local GAE environment, you have to create a TextBlock class and overload the original TextBlok class, otherwise you will hit “javax.swing.tree.TreeNode is a restricted class” error message. Hope Struts2 team peut résoudre ce problème à l'avenir.

TextBlock Source Code
Accédez à cette URL àdownload TextBlock source code.

3.5 Review project directory structure.

gae struts2 example directory

4. Intégrer Struts 2 Pages

4.1 Create a login.jsp page, to accept user input.

Fichier: war / User / pages / login.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>



GAE + Struts 2 Example

4.2 Create a welcome_user.jsp page.

Fichier: war / User / pages / welcome_user.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>



GAE + Struts 2 Example

Hello

4.3 Review project directory structure again.

gae struts2 example directory

5. Configuration XML de Struts

Créez un fichierstruts.xml et placez-le dans «src/struts.xml».

Fichier: struts.xml






  
    
        pages/login.jsp
    
    
        pages/welcome_user.jsp
    
   

6. web.xml

Mettez à jourweb.xml, intégrez Struts2 et configurez l'écouteur de sécurité ognl.

Fichier: web.xml



    
        struts2
        
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
        
    

    
        struts2
        /*
    

    
        
                   com.example.listener.Struts2ListenerOnGAE
                
    
    
        index.html
    

7. Structure du répertoire

Vérifiez la structure finale du répertoire.

gae struts2 example final directory

8. Exécuter en local

Terminé, il est temps d'effectuer les tests. Faites un clic droit sur le projet, exécutez en tant que «Web Application».

gae struts2 example run on local

gae struts2 example run on local

9. Déployer sur GAE

Mettez à jourappengine-web.xml, entrez votre ID d'application App Engine.



  example-struts2gae
  1

  
  
    
  

Sélectionnez le projet, cliquez sur l'icône Google, «Deploy to App Engine». Le plug-in Google pour Eclipse déploiera automatiquement tous les fichiers nécessaires à la production GAE.

gae struts2 example deploy to GAE

Pendant le déploiement, les messages similaires suivants seront affichés dans la vue de la console Eclipse.

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

Preparing to deploy:
    Created staging directory at: 'C:\Users\example\AppData\Local\Temp\appcfg7432687551.tmp'
    Scanning for jsp files.
    Compiling jsp files.
    Scanning files on local disk.
    Initiating update.
    Cloning 2 static files.
    Cloning 46 application files.

Deploying:
    Uploading 12 files.
    Uploaded 3 files.
    Uploaded 6 files.
    Uploaded 9 files.
    Uploaded 12 files.
    Initializing precompilation...
    Sending batch containing 11 file(s) totaling 44KB.
    Sending batch containing 1 blob(s) totaling 1KB.
    Deploying new version.

Verifying availability:
    Will check again in 1 seconds.
    Will check again in 2 seconds.
    Will check again in 4 seconds.
    Closing update: new version is ready to start serving.

Updating datastore:
    Uploading index definitions.

Deployment completed successfully

URL: * http: //example-struts2gae.appspot.com/User/Login.action*

gae struts2 example run on GAE

Note
Enfin, j'ai terminé ce long article. L'intégration globale n'est pas très difficile, il suffit de résoudre les problèmes de sécurité et de TextBlock de Struts2 ognl, espérons que l'équipe de Struts2 pourra résoudre ce problème à l'avenir.

Télécharger le code source

En raison de la grande taille du fichier, tous les pots Struts2 sont exclus, vous devez le télécharger manuellement.

Télécharger -Struts2GoogleAppEngine.zip (23 KB)