[JAVA] [Pour les super débutants] Struts2 Super Primer - Édition 2018

introduction

Certains peuvent l'appeler Legacy, mais il s'agit d'un article d'introduction sur Struts 2. Récemment, de nouvelles technologies côté client ont évolué et certaines personnes peuvent dire que la technologie côté serveur elle-même, sans parler de Struts2, est un héritage.

Cependant, si vous rencontrez quelque chose qui est actif et émouvant, vous devez vraiment le comprendre. J'ai récemment rencontré un tel modèle et étudié dur.

Quand j'ai essayé de faire HelloWorld, j'ai eu du mal à trouver un document qui couvrait tout, donc j'écrirai cet article pour rappeler cette époque.

Struts2 semble recevoir beaucoup de mises à niveau, même si on dit qu'il s'agit d'un héritage, et il est encore nouveau. Au moment de la rédaction de cet article, j'aimerais vous présenter via Hello World ce que vous pouvez créer un environnement de développement Struts2 en utilisant la dernière version.

1. Qu'est-ce que Struts?

Une infrastructure d'application Web qui utilise le modèle MVC implémenté en Java. Le modèle MVC est l'idée de séparer le modèle (données), la vue (écran) et le contrôleur (logique métier). Cependant, bien que Struts2 ait une fonction pour séparer V et C, il ne fournit pas de fonction pour séparer M de C, donc il est souvent réalisé en introduisant un mappeur OR etc. séparément.

1.1. Contexte de Struts2

Dans le passé, il y avait un framework appelé Struts, et il fut un temps où il était prédominant, mais Struts 2 est fondamentalement différent. Le processus de développement original est complètement différent, il semble qu'il ait été développé sous le nom "WebWork2", et ce nom a été changé en Struts2 avec la fin du support pour Struts.

Struts2 est toujours pris en charge et de nouvelles versions sont publiées assez souvent.

1.2. Avantages de l'introduction de Struts2

C'est un peu hors sujet, mais en déployant Struts2 dans des applications Web à grande échelle telles que les systèmes d'entreprise, vous pouvez considérablement améliorer votre productivité. De plus, bien que cela ne se limite pas à Struts2, en introduisant un framework, il est possible d'absorber et de niveler les différences de politiques d'implémentation dues aux habitudes des développeurs. Cependant, l'auteur pense qu'il n'est pas adapté au développement à petite échelle car il prend du temps à introduire.

2. Construction d'un environnement de développement

A partir de maintenant, nous allons créer un environnement de développement pour réaliser Hello World avec Struts2. Il existe trois façons de le construire.

  1. Construisez vous-même
  2. Construit avec Maven
  3. Utilisez le projet vide officiel

Cette fois, je vais le construire moi-même.

2 nécessite d'abord d'étudier Maven et peut ne pas être disponible dans certains environnements. Même si vous essayez d'utiliser 3, vous ne pouvez pas le démarrer à partir de l'état par défaut avec une erreur, il est donc plus rapide de le créer vous-même que de l'utiliser.

Par conséquent, construisons-le nous-mêmes, également en bougeant nos mains et en nous en souvenant!

2.1. Créer un projet Eclipse

L'auteur utilise un environnement de développement intégré pour le développement de base. Je pense que Eclipse de base sera utilisé pour le développement Java, mais cette fois j'utiliserai également Eclipse.

L'environnement que j'utilise est "Eclipse 4.4 (Luna)". Les versions d'Eclipse peuvent être différentes, les lecteurs doivent donc utiliser celles qui leur sont proches.

① Sélectionnez Fichier > Nouveau > Autre > Web > Projet Web dynamique et passez au suivant. p1.jpg

② Entrez les informations suivantes pour passer à la suivante.

Éléments de réglage Définir la valeur
Nom du projet Struts2HelloWorld
※Nom du projetは自由に決めていただいて構いません
Runtime cible Tomcat8 (Java8)
Version du module Web dynamique 3.1
Constitution Tomcat8 (Java8)デフォルトConstitution

p2.jpg

③ Ajoutez le dossier «ressources» en ajoutant un dossier et passez au suivant. p3.jpg

(4) Vérifiez la génération du descripteur de déploiement web.xml et terminez. p4.jpg

⑤ Si vous pouvez créer un projet comme indiqué dans l'image ci-dessous, la création du projet est terminée. p5.JPG

2.2. Introduction de Struts2

Présentez Struts2 au projet créé.

2.2.1. Télécharger Struts2

Téléchargez Struts2 depuis ici. Au moment de la rédaction de cet article, la dernière version semble être "2.5.14.1". Bien qu'il ne soit pas utilisé dans HelloWorld, téléchargez "struts-2.5.14.1-all.zip" avec un exemple d'application. Veuillez également télécharger "log4j-core-2.9.1.jar" séparément car vous en aurez besoin plus tard. Veuillez faire correspondre la version du fichier jar téléchargé ici avec log4j-api. p6.jpg

"Struts-2.5.14.1-min-lib.zip" est un projet Struts2 vide avec une configuration minimale. Dans mon environnement, je ne pouvais pas commencer par une erreur depuis le début. C'était un problème à résoudre, donc je l'ai construit moi-même depuis le début, mais j'apprécierais que vous puissiez commenter si vous pouviez bien l'utiliser.

2.2.2. Emplacement des bibliothèques requises

Présentez Struts 2 à votre projet. Décompressez le fichier struts-2.5.14.1-all.zip téléchargé et copiez le fichier jar suivant du dossier lib dans le dossier «Project Root / Struts2HelloWorld / WebContent / WEB-INF / lib».

nom de fichier Remarques
commons-fileupload-1.3.3.jar
commons-io-2.5.jar
commons-lang-2.4.jar
commons-lang3-3.6.jar
commons-logging-1.1.3.jar
freemarker-2.3.26-incubating.jar
javassist-3.20.0-GA.jar
log4j-api-2.9.1.jar
log4j-core-2.9.1.jar Il s'agit d'un fichier jar téléchargé séparément.
log4j-Veuillez faire correspondre la version avec l'API.
ognl-3.1.15.jar
struts2-core-2.5.14.1.jar
xmlpull-1.1.3.1.jar
xpp3_min-1.1.4c.jar
xstream-1.4.10.jar

Il s'agit de la configuration minimale de la bibliothèque pour exécuter Struts2. p7.JPG

2.2.3. Placement du fichier de paramètres

Créez le fichier de configuration Struts2 "struts.xml" dans "/ Struts2 HelloWorld / resources".

En passant, Struts2 vous permet d'implémenter une application sans fichier de configuration XML, ce qui est appelé configuration zéro. Cependant, les développeurs aiment-ils XML? Même si Struts2 est introduit, la plupart des cas que j'ai vus sont écrits en XML. Bien qu'il y ait un avantage que les paramètres de l'application ne peuvent être compris qu'en regardant ce fichier, l'auteur pense qu'il n'y a rien de mieux que pas, compte tenu de la difficulté d'écrire le fichier de paramètres.

Surtout dans Struts2, comme mentionné au début, il est souvent utilisé en combinaison avec d'autres frameworks tels que Spring et OR mapper, et chaque framework nécessite un fichier de paramètres XML, de sorte que la quantité de XML à gérer augmente considérablement. Cela devrait être une configuration zéro pour libérer le développeur de cet enfer XML, mais pour une raison quelconque, il n'est pas utilisé (rires)

Cela fait longtemps, mais cette fois, je vais écrire le fichier de paramètres ensemble pour plus de cas. J'ai inclus des commentaires avec, mais sautez-les pour le moment.

■ Contenu de struts.xml <! - Définition du package d'actions-> <! - Exemple d'action Hello world-> /view/sample/HelloWorld.jsp

Placez le fichier de configuration "log4j2.xml" de la bibliothèque de sortie de journal "log4j2".

■ Contenu de log4j2.xml (veuillez restaurer la partie de commentaire arbitrairement) <! - Paramètres de l'appender utilisés pour la journalisation-> [%d{yyyy-MM-dd HH:mm:ss.SSS}], %-5p, %t, %c, %m%n

<! - Réglage de l'enregistreur utilisé pour la sortie->

Ce n'est pas nécessaire, mais il est pratique de placer un fichier appelé "struts.properties" dans le même dossier et d'écrire "struts.ui.theme = simple" car cela peut supprimer la génération automatique de balises de feuille de style par Struts2.

2.3 Confirmation de la configuration

À ce stade, l'introduction de Struts 2 est terminée. J'ai fait pas mal de travail, je vais donc lister l'arborescence des projets que j'ai configurés. Si le projet a l'arborescence suivante, la construction de l'environnement de développement est terminée.

■ Arborescence du projet Racine de l'application ├─src ├─resources │ log4j2.xml │ struts.properties │ struts.xml │ ├─build │ └─classes * Les mêmes matériaux placés dans le dossier source sont automatiquement générés ici. │ log4j2.xml │ struts.properties │ struts.xml └─WebContent ├─META-INF │ MANIFEST.MF │ └─WEB-INF │ web.xml │ └─lib commons-fileupload-1.3.3.jar commons-io-2.5.jar commons-lang-2.4.jar commons-lang3-3.6.jar commons-logging-1.1.3.jar freemarker-2.3.26-incubating.jar javassist-3.20.0-GA.jar log4j-api-2.9.1.jar log4j-core-2.9.1.jar ognl-3.1.15.jar struts2-core-2.5.14.1.jar xmlpull-1.1.3.1.jar xpp3_min-1.1.4c.jar xstream-1.4.10.jar

3. Mise en œuvre de l'application

Maintenant que nous avons construit l'environnement de développement, nous allons commencer à implémenter l'application elle-même.

3.1. Préparation de la première page

Préparez la première page lors de l'accès à l'application. Cette fois, nous allons l'implémenter en utilisant JSP.

Cliquez avec le bouton droit sur WebContent> Nouveau> JSP pour ouvrir la boîte de dialogue. Entrez "index.jsp" dans le nom du fichier pour terminer. p8.jpg

■index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<! - Activer la bibliothèque de balises Struts2-> <%@ taglib prefix="s" uri="/struts-tags"%> <! - Utiliser une déclaration de type HTML5->

Bonjour tout le monde dans Struts2 </ title> </head> <body> <! - Le formulaire de saisie utilise les balises Struts2-> <s:form action="hello"> <s:textfield name="name" /> <s: submit value = "Accéder à la page Hello World" /> </s:form> </body> </html> <h2>3.2. Mise en œuvre de l'action</h2> <p>Dans Struts2, la classe responsable du traitement des applications Web, par exemple lorsqu'elles sont soumises par JSP, est appelée Action. La page de destination d'action et de transition est définie dans struts.xml, mais comme l'explication sera donnée plus tard, veuillez implémenter comme suit pour le moment.</p> <p>Cliquez avec le bouton droit sur le dossier src> Nouveau> De la classe, entrez les informations suivantes pour terminer.</p> <table> <thead> <tr> <th style="text-align:left">Éléments d'entrée</th> <th style="text-align:left">Valeur d'entrée</th> </tr> </thead> <tbody> <tr> <td style="text-align:left">paquet</td> <td style="text-align:left">sample</td> </tr> <tr> <td style="text-align:left">Nom</td> <td style="text-align:left">HelloWorldAction</td> </tr> </tbody> </table> <p><img src="https://qiita-image-store.s3.amazonaws.com/0/189344/cd06f569-89c9-dd9a-5a00-eb14c7ee6b87.jpeg" alt="p9.jpg" /></p> <pre><code>■HelloWorldAction package sample; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; /** </code></pre> <ul> <li>[Hello World Action Class] <br> <ul> <li> <br> </li> <li>@author tarosa0001 */ public class HelloWorldAction { / ** Enregistreur * / private Logger logger = LogManager.getLogger(HelloWorldAction.class);</li> </ul> </li> </ul> <p>/** Nom */ private String name;</p> <pre><code> /** </code></pre> <ul> <li> <p>[Processus d'exécution de l'action] <br></p> </li> <li> <p>Exécutez le processus pour sortir Hello World. <br></p> </li> <li> <p>Implémentez la méthode à exécuter en utilisant le nom de méthode spécifié dans struts.xml. <br></p> </li> <li> <p>Dans Struts2, la destination de transition de page est déterminée par le résultat du traitement de l'action,</p> </li> <li> <p>Cette fois, la chaîne de caractères fixe de "succès" est renvoyée. <br> * <br> * @return */ public String execute() { logger.info ("Le paramètre entré est" {} ".", nom); return "success"; }</p> <pre><code> /** </code></pre> </li> <li> <p>[Processus d'acquisition du nom] <br></p> </li> <li> <p>Obtenez le nom. <br></p> </li> <li> <p>Lorsque Struts2 utilise la valeur saisie dans le formulaire comme paramètre</p> </li> <li> <p>Comme getter est utilisé, les informations que vous souhaitez utiliser en tant que paramètre sont</p> </li> <li> <p>Déclarez-le comme une propriété de la classe Action et préparez un getter. * <br></p> </li> <li> <p>nom @return */ public String getName() { return name; }</p> <pre><code> /** </code></pre> </li> <li> <p>[Processus de définition du nom] <br></p> </li> <li> <p>Définissez le nom. <br></p> </li> <li> <p>Comme pour le getter, préparez un setter pour les valeurs que vous souhaitez transmettre entre les pages. <br> * <br></p> </li> <li> <p>@param nom nom */ public void setName(String name) { this.name = name; } }</p> </li> </ul> <h2>3.3. Mise en œuvre de la destination de transition</h2> <p>Implémentez la destination de la transition lorsque vous appuyez sur le bouton de la première page. Créez un dossier vue / exemple dans le répertoire WebContent et placez-y la page de destination de la transition. Le répertoire d'emplacement lui-même peut être n'importe où dans WebContent, mais cette fois, ce sera le répertoire ci-dessus. Ajoutez «HelloWorld.jsp» au dossier exemple dans la même procédure que la page supérieure.</p> <pre><code>■HelloWorld.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Hello Struts2 world!</title> </head> <body> </code></pre> <p><! - Affiche les données passées entre les messages. -> Bonjour le monde Struts2, <s: property value = "name" /> </body> </html></p> <h2>3.4. Mettre à jour les paramètres de l'application</h2> <p>À ce stade, le traitement de l'application lui-même a été mis en œuvre. Enfin, configurez l'application implémentée pour qu'elle fonctionne comme une application Struts2.</p> <p>Modifiez «web.xml» qui existe dans le WEB-INF du projet comme suit. Puisqu'il s'agit d'une connaissance de base de l'application Web elle-même plutôt que de Struts2, l'explication de web.xml elle-même est omise.</p> <pre><code>■web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>Struts2HelloWorld</display-name> <welcome-file-list> </code></pre> <p><! - Afficher les paramètres du fichier lorsqu'ils sont habitués par la racine de l'application-> <! - Ce n'est pas nécessaire, mais cette fois, nous n'utiliserons que index.jsp pour éviter les fautes de frappe dans l'URL. -> <welcome-file>index.jsp</welcome-file> </welcome-file-list></p> <p><! - Filtre de servlet Struts2-> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter></p> <p><! - Définition du filtre à utiliser pour l'URL-> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app></p> <h2>3.5. Achèvement de la mise en œuvre</h2> <p>Les paramètres de web.xml ont également été mis à jour et l'implémentation de l'application Struts2 est enfin terminée. Pour confirmation, je vais lister l'arbre final.</p> <p>■ Arbre du projet terminé Racine du projet ├─src │ └─sample │ HelloWorldAction.java │ ├─resources │ log4j2.xml │ struts.properties │ struts.xml │ ├─build │ └─classes │ │ log4j2.xml │ │ struts.properties │ │ struts.xml │ │ │ └─sample │ HelloWorldAction.class │ └─WebContent │ index.jsp │ ├─META-INF │ MANIFEST.MF │ ├─view │ └─sample │ HelloWorld.jsp │ └─WEB-INF │ web.xml │ └─lib commons-fileupload-1.3.3.jar commons-io-2.5.jar commons-lang-2.4.jar commons-lang3-3.6.jar commons-logging-1.1.3.jar freemarker-2.3.26-incubating.jar javassist-3.20.0-GA.jar log4j-api-2.9.1.jar log4j-core-2.9.1.jar ognl-3.1.15.jar struts2-core-2.5.14.1.jar xmlpull-1.1.3.1.jar xpp3_min-1.1.4c.jar xstream-1.4.10.jar</p> <h1>4. Exécuter</h1> <p>À présent, la mise en œuvre et la configuration sont terminées. Enfin, exécutez l'application implémentée.</p> <h2>4.1. Préparer Tomcat</h2> <p>Préparez un conteneur de servlet pour exécuter l'application Web. Cette fois, nous utiliserons Tomcat comme conteneur de servlet.</p> <p>(1) Sélectionnez Fenêtre> Vue Vue> Autres> Serveur pour afficher la vue de surface. <img src="https://qiita-image-store.s3.amazonaws.com/0/189344/85194334-17c2-42d8-a948-07046747306c.jpeg" alt="p10.jpg" /></p> <p>(2) Cliquez avec le bouton droit de la souris sur la marge de la vue du serveur affichée> Nouveau> Sélectionner le serveur pour afficher la boîte de dialogue du nouveau serveur. Sélectionnez "Serveur Tomcat v8.0" et passez au suivant. <img src="https://qiita-image-store.s3.amazonaws.com/0/189344/7f9d0c59-9921-fd44-c2d9-fdfdfcad098a.jpeg" alt="p11.jpg" /></p> <p>③ Ajoutez Struts2HelloWorld et terminez <img src="https://qiita-image-store.s3.amazonaws.com/0/189344/b67d289a-c698-6e15-1b33-3db62a2c38a7.jpeg" alt="p12.jpg" /></p> <ul> <li>Si Struts2HelloWorld ne peut pas être ajouté, il est possible que la création du projet ait échoué. Assurez-vous que la configuration de votre projet est compatible avec Tomcat 8.</li> </ul> <h2>4.2. Démarrer Tomcat</h2> <p>Démarrez Tomcat. Cliquez avec le bouton droit sur le Tomcat ajouté à la vue du serveur et démarrez. <img src="https://qiita-image-store.s3.amazonaws.com/0/189344/003f2b34-3ebc-ee0c-f078-b5cf92b3ea27.jpeg" alt="p13.jpg" /></p> <p>La chaîne de caractères suivante est sortie vers la console. Il apparaît en rouge, mais ce n'est pas une erreur.</p> <p>■ Sortie de la console * Ignorez l'avertissement. Avertissement: [SetPropertiesRule] {Serveur / Service / Moteur / Hôte / Contexte} La définition de la source de la propriété 'to'org.eclipse.jst.jee.server: Struts2HelloWorld' n'a pas trouvé de propriété correspondante. [Tue 2 13 00:39: 25 JST 2018] Info: Version du serveur: Apache Tomcat / 8.0.20 [Tue 2 13 00:39:25 JST 2018] Info: Serveur construit: 15 février 2015 18:10:42 UTC [Tue 2 13 00:39:25 JST 2018] Info: Numéro du serveur: 8.0.20.0 [Tue 2 13 00:39:25 JST 2018] Info: Nom du système d'exploitation: Windows 7 [Tue 2 13 00:39:25 JST 2018] Info: Version du système d'exploitation: 6.1 [Tue 2 13 00:39:25 JST 2018] Info: Architecture: amd64 [Tue 2 13 00:39:25 JST 2018] Info: Java Home: C: \ Users \ Nakajima \ Desktop \ Personal \ Skill Up \ pleiades \ eclipse \ jre \ jre [Tue 2 13 00:39:25 JST 2018] Info: Version JVM: 1.8.0_40-b25 [Tue 2 13 00:39:25 JST 2018] Info: Fournisseur JVM: Oracle Corporation [Tue 2 13 00:39:25 JST 2018] Info: CATALINA_BASE: C: \ Users \ Nakajima \ Desktop \ Personal \ Skill Up \ pleiades \ sample \ .metadata \ .plugins \ org.eclipse.wst.server.core \ tmp0 [Tue 2 13 00:39:25 JST 2018 ] Info: CATALINA_HOME: C: \ Users \ Nakajima \ Desktop \ Personal \ Skill Up \ pleiades \ tomcat \ 8 [Tue 2 13 00:39:25 JST 2018] Info: Argument de ligne de commande: -Dcatalina.base = C: \ Users \ Nakajima \ Desktop \ Personal \ Skill Up \ pleiades \ sample \ .metadata \ .plugins \ org.eclipse.wst.server.core \ tmp0 [Tue 2 13 00:39:25 JST 2018] Info: Argument de ligne de commande: -Dcatalina.home = C: \ Users \ Nakajima \ Desktop \ Personal \ Skill Up \ pleiades \ tomcat \ 8 [Tue 2 13 00:39:26 JST 2018] Info: Argument de ligne de commande: -Dwtp.deploy = C: \ Users \ Nakajima \ Desktop \ Personal \ Skill Up \ pleiades \ sample \ .metadata \ .plugins \ org.eclipse.wst.server.core \ tmp0 \ wtpwebapps [mar 2 13 00:39:26 JST 2018] Info: Argument de ligne de commande: -Djava.endorsed.dirs = C: \ Users \ Nakajima \ Desktop \ Personal \ Skill Up \ pleiades \ tomcat \ 8 \ Endossed [Tue 2 13 00:39:26 JST 2018] Info: Argument de ligne de commande: -Dfile.encoding = UTF-8 [Tue 2 13 00:39:26 JST 2018] Info: La bibliothèque Apache Tomcat Native basée sur APR qui permet des performances optimales dans les environnements de production n'a pas été trouvée sur le chemin java.library.path: C: \ Users \ Nakajima \ Desktop \ Personal \ Skill Up \ pleiades \ eclipse \ jre \ bin; C : \ Windows \ Sun \ Java \ bin; C: \ Windows \ system32; C: \ Windows; C: / Users / Nakajima / Desktop / Personal / Skill Up / pleiades / eclipse / jre / bin / ../ jre / bin / server; C: / Users / Nakajima / Desktop / Personal / Skill up / pleiades / eclipse / jre / bin / ../ jre / bin; C: / Users / Nakajima / Desktop / Personal / Skill up / pleiades / eclipse / jre / bin / ../ jre / lib / amd64; C: \ Users \ Nakajima \ Desktop \ Personal \ Skill up \ pleiades \ java \ 8 \ bin; C: \ gradle-4.0 \ bin; C: \ app \ Nakajima \ product \ 11.2.0 \ dbhome_1 \ bin; C: \ Windows \ system32; C: \ Windows; C: \ Windows \ System32 \ Wbem; C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 ; C: \ Program Files \ WIDCOMM \ Bluetooth Software ; C: \ Program Files \ WIDCOMM \ Bluetooth Software \ syswow64; C: \ Program Files \ Intel \ WiFi \ bin ; C: \ Program Files \ Common Files \ Intel \ WirelessCommon ; C: \ Program Files (x86) \ Justsystems \ JSLIB32 ; C: \ Program Files (x86) \ Sony \ VAIO Outil de paramétrage de démarrage; C: \ Program Files (x86) \ Common Files \ Sony Shared \ FeliCaLibrary; C: \ Program Files \ Common Files \ Sony Shared \ FeliCaLibrary; C: \ Program Files (x86) \ Common Files \ Sony Shared \ FeliCaNFCLibrary; C: \ Program Files \ Common Files \ Sony Shared \ FeliCaNFCLibrary; C: \ Program Files (x86) \ GtkSharp \ 2.12 \ bin; C: \ maven \ bin; C: \ Program Files \ nodejs \ v6.10.2 \ C: \ cygwin64 \ bin; C: \ Users \ Nakajima \ AppData \ Roaming \ npm; C: \ ProgramData \ Oracle \ Java \ javapath ;; C: \ Users \ Nakajima \ Desktop \ Personal \ Skill Up \ pleiades \ eclipse ;;. [Tue 2 13 00:39:26 JST 2018] Info: Initialisation de ProtocolHandler ["http-nio-8080"] [Tue 2 13 00:39:26 JST 2018] Info: Utilisation d'un sélecteur partagé pour l'écriture / la lecture de servlet [Tue 2 13 00:39:26 JST 2018] Informations: Initialisation de ProtocolHandler ["ajp-nio-8009"] [Tue 2 13 00:39:26 JST 2018] Info: Utilisation d'un sélecteur partagé pour l'écriture / la lecture de servlet [Tue 2 13 00:39:26 JST 2018] Info: Initialisation traitée en 951 ms [Tue 2 13 00:39:26 JST 2018] Info: Démarrer le service Catalina [Tue 2 13 00:39:26 JST 2018] Info: Démarrage du moteur de servlet: Apache Tomcat / 8.0.20 [Tue 2 13 00:39:26 JST 2018] Info: La création d'une instance SecureRandom pour la génération d'ID de session à l'aide de [SHA1PRNG] a pris [117] millisecondes. [Tue 2 13 00:39:26 JST 2018] Info: Démarrage de ProtocolHandler ["http-nio-8080"] [Tue 2 13 00:39:30 JST 2018] Informations: Démarrage de ProtocolHandler ["ajp-nio-8009"] [Tue 2 13 00:39:30 JST 2018] Info: démarrage du serveur dans 4438 ms [Tue 2 13 00:39:30 JST 2018]</p> <p>Si "Server startup ~" apparaît, le démarrage est terminé.</p> <h2>4.3. Accéder à l'application</h2> <p>Démarrez votre navigateur et saisissez l'URL suivante pour accéder à votre application Web. 「http://localhost:8080/Struts2HelloWorld」</p> <p>Ensuite, le contenu de l'index.jsp implémenté sera affiché. <img src="https://qiita-image-store.s3.amazonaws.com/0/189344/9dffcdec-a57a-7aef-c743-92c8c0bdcf91.jpeg" alt="p14.jpg" /></p> <h2>4.4. Transition vers la page Hello World</h2> <p>Maintenant, exécutons Hello World, que nous implémentons depuis longtemps. Entrez une valeur dans la zone de texte et cliquez sur "Aller à la page Hello World".</p> <p>Toutes nos félicitations! La valeur d'entrée de la zone de texte est héritée et Hello World peut être affiché! <img src="https://qiita-image-store.s3.amazonaws.com/0/189344/797045f0-f1c9-2c7b-69a0-1a7bf14f837f.jpeg" alt="p15.jpg" /></p> <p>Comme le processus de sortie du journal vers Action est implémenté, les données transmises peuvent être confirmées par la sortie du journal vers la console.</p> <h1>5. Description de l'application</h1> <p>Merci tout le monde. À ce stade, l'implémentation de Hello World est terminée. De là, nous expliquerons l'application.</p> <h2>5.1. JSP et actions</h2> <p>Struts2 utilise le modèle MVC. Dans de nombreux cas, View (écran) est implémenté en utilisant JSP, et le traitement de chaque formulaire et lien de JSP est implémenté par une classe utilisant Java.</p> <p>5.1.1. Action Action est une classe qui effectue le traitement métier dans Struts2. Lorsque vous soumettez un formulaire JSP, la fonction Struts2 appelle Action. Quelle action entreprendre sur quel formulaire est défini dans la balise form et Struts.xml.</p> <p>Cette fois, l'action de HelloWorld se déroule ici.</p> <p><! - Spécifiez l'action à exécuter dans l'attribut action de la balise form. -> <s:form action="hello"></p> <p>Struts2 fournit une bibliothèque de balises qui peut être utilisée avec JSP, et lors de l'implémentation d'une application à l'aide de Struts2, beaucoup utilisent la bibliothèque de balises fournie par Struts2. L'action à utiliser lors de la soumission du formulaire est spécifiée dans l'attribut action de la balise \ <s: form>, et le paramètre spécifique de l'action est décrit dans Struts.xml. Struts.xml sera décrit plus tard, je vais donc l'expliquer en détail ici.</p> <h3>5.1.2. Données à transmettre</h3> <p>Les données utilisées dans l'écran suivant et la classe Action, telles que le formulaire saisi à l'écran, sont stockées en tant que propriété dans la classe Action. Si vous définissez une propriété avec un nom qui correspond à l'attribut de nom défini dans la balise sur la JSP, la fonction Struts2 définira la valeur dans la propriété correspondant au formulaire.</p> <p>Cette fois, seul le nom saisi dans index.jsp est transmis, mais plus la page est grande, plus il y a de données à transmettre. Dans un tel cas, vous souhaiterez peut-être créer une classe contenant les données sous forme de bloc. Dans un tel cas, ajoutez ". (Point)" à l'attribut de nom et décrivez-le au format "nom de classe.nom de propriété".</p> <p>■ Exemple: lors de la définition d'une valeur pour le nom de la classe LoginInfo <s:textfield name="LoginInfo.name" /></p> <p>5.2. Struts.xml Struts.xml est un fichier de configuration qui contrôle le comportement de Struts2. Ici, les paramètres d'action de la balise de formulaire expliqués précédemment et les constantes utilisées dans l'application sont définis. Je n'ai abordé que les constantes, mais vous pouvez également les lister toutes ensemble dans struts.properties.</p> <p>Il existe divers autres paramètres, mais ici nous n'expliquerons que l'action utilisée dans Hello World. Dans Struts.xml, les paramètres de l'action HelloWorld se trouvent ici.</p> <p>■ Emplacement du paramètre d'action Hello World <! - Exemple d'action Hello world-> <action name="hello" class="sample.HelloWorldAction" method="execute"> <result name="success">/view/sample/HelloWorld.jsp</result> </action></p> <p>Dans Struts2, définissez le nom de l'action, la classe à utiliser et la méthode. Dans l'action définie, la prochaine destination de transition est définie par la valeur de retour de la classe Action. Cette fois, il est défini uniquement lorsque la valeur de retour est "succès", mais si vous souhaitez diviser la destination de la transition en fonction du résultat du traitement dans Action, décrivez la balise \ <result> pour chaque valeur de retour.</p> <p>La JSP de destination de la transition décrit l'arborescence après WebContent en tant que racine (/). Vous pouvez également définir un chemin relatif à partir de la JSP source de la transition, mais il peut se déplacer, il est donc préférable de le décrire comme un chemin absolu depuis la racine de l'application.</p> <p>5.3. web.xml web.xml est un fichier qui décrit les paramètres d'une application Web, mais si vous utilisez Struts2, vous devez définir un filtre de servlet et un mappage pour Struts2. Cela ne change pas du contenu de web.xml mentionné ci-dessus, sauf si vous faites quelque chose de spécial.</p> <h1>finalement</h1> <p>Jusqu'à présent, l'exemple d'application Web utilisant Struts2 et la description de l'application sont tous. Cette fois, ce n'est qu'un exemple, je l'ai donc implémenté avec la configuration minimale. Il n'est peut-être pas facile de créer une nouvelle application Struts2 à partir de zéro, mais il existe de nombreuses autres fonctionnalités, donc si vous êtes intéressé, essayez-le.</p> <h1>EX. Web de référence</h1> <p>En écrivant cet article, je me suis référé à la page Web publiée ci-dessous.</p> <p>・ Introduction au développement d'applications Web Java avec la version 2014 Eclipse + Struts2 http://www.cyokodog.net/blog/first-struts2/</p> <!-- ENDDDDDDDDDDDDDDDDDDDDDDDDDDDDD --> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- ng_ads_new_ui --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6575041992772322" data-ad-slot="8191531813" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <div style="margin-top: 30px;"> <div class="link-top" style="margin-top: 1px;"></div> <p> <font size="4">Recommended Posts</font> <!-- BEGIN LINK ************************* --> <div style="margin-top: 10px;"> <a href="/fr/889faa2ab5853005f26b">[Pour les super débutants] Struts2 Super Primer - Édition 2018</a> </div> <div style="margin-top: 10px;"> <a href="/fr/70a1efa9edac2d83ba1a">[Pour les super débutants] Super introduction à DBUnit</a> </div> <div style="margin-top: 10px;"> <a href="/fr/93c19155bc803f10cea0">[Pour les super débutants] Ant super introduction</a> </div> <div style="margin-top: 10px;"> <a href="/fr/e5667cfa857529900216">[Pour les super débutants] Super introduction à Maven</a> </div> <div style="margin-top: 10px;"> <a href="/fr/8b500ff605fe9246bd28">[Pour les super débutants] Super introduction à Mirage SQL</a> </div> <div style="margin-top: 10px;"> <a href="/fr/80cb21319531ae2e02b9">[Pour les super super débutants] Qu'est-ce que l'orientation objet?</a> </div> <div style="margin-top: 10px;"> <a href="/fr/db3badd0810f39d97cba">[Pour les super débutants] Comment utiliser l'autofocus: vrai</a> </div> <div style="margin-top: 10px;"> <a href="/fr/f6d155f8c431033b37b2">Comment utiliser GitHub pour les super débutants (développement d'équipe)</a> </div> <div style="margin-top: 10px;"> <a href="/fr/3c43b674e2b7c4b5c5cb">Exécution de débogage Java [pour les débutants Java]</a> </div> <div style="margin-top: 10px;"> <a href="/fr/8b1dfa2204dc3890f5f1">(Pour les débutants) [Rails] Installer Devise</a> </div> <div style="margin-top: 10px;"> <a href="/fr/a0566982022983d0305e">Plus utilisable Enumerable pour les débutants</a> </div> <div style="margin-top: 10px;"> <a href="/fr/b660bb9744e26b95a209">Java pour les débutants, masquage des données</a> </div> <div style="margin-top: 10px;"> <a href="/fr/ec79fc901e956ae90b30">Application Java pour les débutants: stream</a> </div> <!-- END LINK ************************* --> </p> </div> </div> </div> <div class="footer text-center" style="margin-top: 40px;"> <!-- <p> Licensed under cc by-sa 3.0 with attribution required. </p> --> </div> <script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@10.1.2/build/highlight.min.js"></script> <!-- ads --> <script data-ad-client="ca-pub-6575041992772322" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- end ads --> </body> </html>