Maison  >  Article  >  Java  >  Qu'est-ce que l'action en jsp

Qu'est-ce que l'action en jsp

(*-*)浩
(*-*)浩original
2019-05-15 11:18:0810490parcourir

La classe Action dans JSP est le pont entre les demandes des utilisateurs et la logique métier. Chaque action agit comme un agent commercial pour le client Lorsque la classe "RequestProcessor" prétraite la demande, et après avoir créé l'instance d'action, vous. peut appeler sa propre méthode "processActionPerform".

Qu'est-ce que l'action en jsp

La classe Action est le pont entre les demandes des utilisateurs et la logique métier. Chaque action agit comme un agent commercial pour le client. Lorsque la classe RequestProcessor prétraite une requête, après avoir créé une instance d'Action, elle appelle sa propre méthode processActionPerform(), qui appelle execute() de la classe Action.

Cours recommandé : Tutoriel Java.

Ce qui suit présente la fonction d'action en jsp :

Action complète

<action path="/aFullAction" 
type="somePackage.someActionClass">  
name="someForm" 
input="someJSP.jsp" 
<forward name="successful" path="someJSP.jsp"/>  
<forward name="failed" path="someOtherJSP.jsp"/>  
</action>

Tout d'abord, l'ActionServlet de Struts reçoit une requête, puis selon à struts- La configuration de config.xml localise le mappage correspondant ; puis, si la portée du formulaire est une demande ou s'il est difficile de trouver le formulaire dans la portée définie, créez une nouvelle instance de formulaire, appelez ; sa méthode reset ( ), puis placez les paramètres du formulaire dans le formulaire. Si l'attribut validate n'est pas faux, appelez la méthode validate () si validate () renvoie des ActionErrors non vides, il sera transféré à l'URI ; spécifié par l'attribut d'entrée. S'il renvoie des ActionErrors vides, exécutez la méthode execute() d'Action et déterminez l'URI cible en fonction de l'ActionForward renvoyé.

L'effet de ceci est le suivant : exécuter() ne sera exécuté qu'après la réussite de validate() ; l'attribut d'entrée spécifie un URI.

Uniquement l'action JSP

<action path="/aJSPOnlyAction" 
type="org.apache.struts.actions.ForwardAction" 
parameter="someOtherJSP.jsp" 
/>

Tout d'abord, ActionServlet appelle la méthode execute() de ForwardAction après avoir reçu la demande d'exécution() en fonction de la valeur de l'attribut du paramètre configuré. à cet URI.

L'effet de ceci est le suivant : aucun formulaire n'est instancié. Une situation plus réaliste peut être que le formulaire est défini dans la portée de la demande de niveau supérieur ou que cette action est utilisée pour agir comme un système après l'application ; est compilé Paramètres, il vous suffit de modifier ce document de configuration sans recompiler le système.

Deux actions correspondent à un seul formulaire

<action path="/anAction" 
type="somePackage.someActionClass">  
name="someForm" 
input="someJSP.jsp" 
<forward name="successful" path="/anotherAction.do"/>  
</action>  
<action path="/anotherAction" 
type="somePackage.someOtherActionClass">  
name="someForm" 
input="someOtherJSP.jsp" 
<forward name="successful" path="someResultJSP.jsp"/>  
</action>

En ce qui concerne chaque action individuelle, le traitement n'est pas terminé. est la différence réelle entre les actions ? Ce modèle de combinaison peut être utilisé pour transmettre des objets de commande (formulaires). Il est à noter que les méthodes reset() et validate() du formulaire seront également appelées dans cette dernière action, il faut donc s'assurer que les informations du formulaire ne soient pas écrasées.

Les méthodes de traitement sont grossièrement divisées en deux types :

a) Mettre un indicateur dans la requête pour indiquer que l'action précédente a l'intention de transmettre le formulaire à l'action suivante, donc que cette dernière action Action peut conserver la valeur sous cette forme. Cette méthode ne peut être utilisée que lors de l'utilisation de forward.

b) Lorsque vous utilisez la redirection au lieu de transmettre, vous pouvez placer l'indicateur au niveau de la session ou au niveau supérieur, et effacer cet indicateur au dernier maillon de la chaîne de commande.

<action path="/anAction" 
type="somePackage.someActionClass">  
name="someForm" 
input="someJSP.jsp" 
<forward name="successful" path="/anotherAction.do" redirect="true"/>  
</action>  
<action path="/anotherAction" 
type="somePackage.someOtherActionClass">"  
name="someOtherForm" 
input="someOtherJSP.jsp" 
<forward name="successful" path="someResultJSP.jsp"/>  
</action>

Cette méthode de combinaison n'est pas très différente de la précédente en termes de processus, sauf que nous proposons désormais des formulaires séparés pour les deux actions, donc le code semble plus clair. Nous pouvons donc gérer séparément l’entrée et la sortie de l’application WEB.

Il convient de noter que cette dernière action tentera également d'écrire ces paramètres dans le formulaire, mais nous pouvons le gérer comme ceci :

a) Utiliser un autre ensemble de noms d'attributs dans ce dernier form ;

b) Seuls les getters sont fournis mais pas les setters.

Le traitement approximatif est le suivant :

L'action précédente reçoit une entrée, la vérifie, puis écrit les données dans la couche métier ou la couche de persistance et les redirige vers la couche de gestion. dernière action. Cette dernière action récupère manuellement les données de la couche métier/couche de persistance, les écrit dans le formulaire (via d'autres méthodes) et les transmet au JSP frontal pour affichage.

L'avantage est que vous n'avez pas besoin de conserver la valeur dans le formulaire de saisie, vous pouvez donc utiliser la redirection au lieu de transférer. Cela réduit le couplage entre les deux actions et évite des soumissions répétées inutiles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:qu'est-ce que jstlArticle suivant:qu'est-ce que jstl