Revenons – Classes Struts action

Struts Action Classes

Classes Struts action

Présentation

Apache Struts est un framework open source utilisé pour développer JSP ou une application web de servlet. Struts étendent l'API de servlet Java et basé sur le contrôleur de vue du modèle ou modèle de conception MVC. Class Action en framework Struts définit la logique métier. Une classe d'action gère la demande du client et prépare la réponse. Il détermine également la réponse doit être transmise. Fondamentalement, une classe d'action reçoit des données de la couche de présentation et transmet les données à la couche d'affaires correspondant. Il traite également les données qui provient de la couche d'affaires et transmet ceux qui reviennent à la couche de présentation. In short, une classe d'action est décrite comme –

  • classe d'action devrait étendre [Code] apache.struts.action.Action [/Code] classe.
  • Devrait remplacer le [Code] exécuter [/Code] Procédé selon la [Code] action [/Code] classe.
  • L'action Servlet sélectionne la classe d'action pour la requête HTTP entrantes définie sous la balise de mappage d'action dans le [Code] struts config.xml [/Code] dossier.
  • Ces classes sont utilisés pour appeler les cours à la couche de la couche d'affaires ou l'accès aux données pour obtenir les données à partir de la fève et de stocker les données traitées et retourner le résultat ou d'erreur en fonction de la situation.
  • Ces classes sont multi-thread. Ainsi, un développeur doit être prudent lors de la manipulation de la variable d'action car ils ne sont pas thread-safe.

Types de classes d'action

Nous avons suivant types de classes d'action dans struts –

  • action – La classe d'action de base dans laquelle nous appliquons notre logique métier.
  • Inclure l'action – Similaire comme directive include page en jsp.
  • Forward action – Utilisé dans le cas nous avons besoin de transmettre la demande d'un JSP à un autre. Si nous transmettons directement la demande d'une jsp elle viole l'architecture MVC. D'où une classe d'action est utilisée pour faire ce travail.
  • Dispatch action – Poignées de multiples opérations dans de multiples méthodes. Il est préférable d'avoir une méthode par opération au lieu de fusionner la logique métier entière en une seule méthode d'exécution d'une classe d'action.
  • Consulter Dispatch action – Identique à l'action de l'expédition, mais recommandé de ne pas utiliser.
  • Commutateur d'action – utilisé pour basculer entre les différents modules de l'application des entretoises.

Le plus souvent des classes d'action utilisés sont –

  • action
  • Dispatch action

Class action

Ceci est la classe d'action de base dans des entretoises. Ici, le développeur doit remplacer la méthode execute comme sous -

[Code]

package com.home.upload.action ;

importer java.io.IOException ;

importer java.util.HashMap ;

importer java.util.Map ;

importer javax.servlet.ServletException ;

importer javax.servlet.http.HttpServletRequest ;

importer javax.servlet.http.HttpServletResponse ;

importer org.apache.log4j.Logger ;

importer org.apache.struts.action.Action ;

importer org.apache.struts.action.ActionForm ;

importer org.apache.struts.action.ActionForward ;

importer org.apache.struts.action.ActionMapping ;

importer org.apache.struts.upload.FormFile ;

importer com.home.upload.action.forms.UploadForm ;

importer com.home.upload.service.FileUploadService ;

importer com.home.upload.service.impl.FileUploadServiceImpl ;

importer com.home.upload.util.UploadConstants ;

/**

* @auteur TechAlpine

*/

publique classe FileUploadAction s'étend action {

privé statique Logger logger = Logger.getLogger(FileUploadAction.classe);

publique ActionForward exécuter(cartographie ActionMapping, forme ActionForm, HttpServletRequest request,

HttpServletResponse réponse) jette IOException, ServletException {

si (forme != zéro) {

Téléchargez Formulaire upload = (UploadForm) forme;

FormFile file1 = uploadForm.getFilePath1 ();

FormFile file2 = uploadForm.getFilePath2 ();

FormFile file3 = uploadForm.getFilePath3 ();

Map< Chaîne, octet[] > FileMap = nouveau HashMap< Chaîne, octet[] > ();

fileMap.put(file1.getFileName(), file1.getFileData());

fileMap.put(file2.getFileName(), file2.getFileData());

fileMap.put(file3.getFileName(), file3.getFileData());

FileUploadService uploadService = nouveau FileUploadServiceImpl ();

si (uploadService.doUpload (

getServlet().getServletContext().getRealPath(“/”).concat( UploadConstants.UPLOAD_FOLDER), FileMap )

.Taille() > 0) {

logger.déboguer( “Upload est réussie” );

uploadForm.setUploadFlag(UploadConstants.UPLOAD_SUCCESS);

} autre {

logger.déboguer( ” Échec de l'envoi ” );

uploadForm.setUploadFlag(UploadConstants.UPLOAD_FAILURE);

}

}

return (mapping.findForward(UploadConstants.UPLOAD_SUCCESS));

}

}

[/Code]

La [Code] struts config.xml [/Code] déposer pour cette classe d'action devrait être aussi sous -

[Code]

<?xml version = “1.0” encoding = “ISO-8859-1” ?>

<!struts-config DOCTYPE PUBLIC ” -//Apache Software Foundation // DTD Struts Configuration 1.1 // EN” “http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd”>

<struts-config>

<form-beans>

<nom form-bean = “Formulaire de connexion” type = “com.home.upload.action.forms.LoginForm” />

<nom form-bean = “Formulaire de menu” type = “com.home.upload.action.forms.MenuForm” />

<nom form-bean = “UploadForm” type = “com.home.upload.action.forms.UploadForm” />

</form-beans>

<global-avant />

<action-mappings>

<chemin d'action = “/s'identifier” type = “com.home.upload.action.LoginAction” name = “Formulaire de connexion” entrée = “/login.jsp” >

<nom avant = “success” path = “/menu.jsp” />

<nom avant = “échec” path = “/loginFailure.jsp” />

</action>

<chemin d'action = “/menuAction” type = “com.home.upload.action.MenuAction” name = “Formulaire de menu” entrée = “/menu.jsp” paramètre = “méthode” >

<nom avant = “télécharger” path = “/fileUpload.jsp” />

<nom avant = “listFiles” path =“/listUploadedFiles.jsp” />

</action>

<chemin d'action = “/uploadAction” type = “com.home.upload.action.FileUploadAction” name =“UploadForm” entrée =“/fileUpload.jsp” >

<nom avant =“uploadSuccess” path =“/uploadSuccess.jsp” />

</action>

</action-mappings>

<message-resources paramètres = “ApplicationResources” />

<plug-in className = “org.apache.struts.validator.ValidatorPlugIn” >

<propriété set-property = “chemins”

value = “/WEB-INF / validateur-rules.xml,/WEB-INF / validation.xml” />

</brancher>

</struts-config>

[/Code]

Comme on le voit dans l'exemple ci-dessus que si la classe étend la classe d'action de base, il devrait remplacer le [Code] exécuter [/Code] méthode. De plus, le fichier de configuration des entretoises a une seule voie à suivre correspondant à la [Code] uploadAction [/Code].

Dispatch action

La classe d'action d'expédition étend également la classe d'action de base. Cette classe a un avantage sur la classe d'action qu'il ne doit pas remplacer explicitement la méthode execute plutôt les développeurs sont libres d'écrire leurs propres méthodes. Il permet aux développeurs d'utiliser les mêmes classes d'action pour de multiples flux. Un exemple classique d'utiliser la classe d'action d'expédition en cas de manipulation des opérations de menu comme sous -

[Code]

package com.home.upload.action ;

importer java.io.File ;

importer java.io.IOException ;

importer java.util.List ;

importer javax.servlet.ServletException ;

importer javax.servlet.http.HttpServletRequest ;

importer javax.servlet.http.HttpServletResponse ;

importer org.apache.log4j.Logger ;

importer org.apache.struts.action.ActionForm ;

importer org.apache.struts.action.ActionForward ;

importer org.apache.struts.action.ActionMapping ;

importer org.apache.struts.actions.DispatchAction ;

importer com.home.upload.action.forms.MenuForm ;

importer com.home.upload.service.FileUploadService ;

importer com.home.upload.service.impl.FileUploadServiceImpl ;

importer com.home.upload.util.UploadConstants ;

/**

* @auteur TechAlpine

*/

publique classe objet MenuAction s'étend DispatchAction {

privé statique Logger logger = Logger.getLogger( objet MenuAction.classe );

publique télécharger ActionForward( cartographie ActionMapping, forme ActionForm, HttpServletRequest request,

HttpServletResponse réponse ) jette IOException, ServletException {

return ( mapping.findForward ( UploadConstants.TÉLÉCHARGER ) );

}

publique ActionForward listfiles( cartographie ActionMapping, forme ActionForm, HttpServletRequest request,

HttpServletResponse réponse ) jette IOException, ServletException {

FileUploadService uploadService = nouveau FileUploadServiceImpl ();

Chaîne stagingLocation = getServlet().getServletContext().getRealPath( “/” ). concat( UploadConstants.UPLOAD_FOLDER );

Menu forme de menu Formulaire = (Formulaire de menu) forme;

si ((nouveau File( stagingLocation ) ).existe() ) {

liste<Chaîne> fileNames = uploadService.getFileNames( stagingLocation );

si (fileNames.size() > 0 ) {

menuForm.setFiles( fileNames );

menuForm.setListFlag ( UploadConstants.VRAI );

} autre {

menuForm.setListFlag ( UploadConstants.FAUX );

}

} autre {

menuForm.setListFlag( UploadConstants.FAUX );

}

logger.Info( ” retour LISTE “);

return (mapping.findForward(UploadConstants.LIST_UPLOADED_FILES));

}

}

[/Code]

Comme nous le voyons ici, il y a deux méthodes qui traitent la demande de l'utilisateur. Ces deux méthodes sont définies dans la [Code] struts config.xml [/Code] comme sous -

[Code]

<chemin d'action = “/menuAction” type = “com.home.upload.action.MenuAction” name = “Formulaire de menu” entrée = “/menu.jsp” paramètre = “méthode” >

<nom avant = “télécharger” path = “/fileUpload.jsp” />

<nom avant = “listFiles” path = “/listUploadedFiles.jsp” />

</action>

[/Code]

Les deux méthodes – télécharger et listfiles deux entrées distinctes contre la classe d'action – objet MenuAction. Chacune de ces méthodes a des chemins à terme distincts auxquels ils rediriger la réponse à.

Conclusion

  • Struts est un framework open source utilisé dans l'application web java basé.
  • Contrefiches est basé sur le contrôleur de vue du modèle – design pattern MVC.
  • Struts a cinq classes d'actions différentes dont les plus couramment utilisés sont –
    • action
    • DispatchAction
  • La classe d'action est la classe de base à laquelle toutes les classes d'action devraient étendre à.
  • Classes étendant la classe d'action doivent remplacer la méthode execute.
  • Classes étendant la classe d'action d'expédition ont leurs propres méthodes d'action à terme.
  • Classes étendant la classe d'action d'expédition peuvent avoir de multiples méthodes d'action à terme devenant ainsi utile en cas de flux multiples en option.

 

Tagged on:
============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share