HCL Commerce structure Struts

Struts est une structure bien documentée, ayant atteint son stade de maturité et populaire destinée à la construction d'applications frontales pour les applications Java. Pour répondre aux besoins des applications logicielles, elle utilise une architecture Modèle-Vue-Contrôleur (MVC) : Le modèle représente le code métier ou de base de données, la vue représente le code de conception de page et le contrôleur, la code de la navigation.

Le diagramme suivant décrit les interactions entre les composants clés de l'application Web de HCL Commerce. Une brève description de chaque composant clé suit le diagramme. HCL Commerce utilise actuellement Struts version 1.1. Pour obtenir des informations générales sur Struts, voir Struts official home page.

Interactions entre les composants clés de l'application Web HCL Commerce

Servlet Action

Action servlet est un composant clé du contrôleur qui implémente les mêmes méthodes et a le même cycle de vie que javax.servlet.http.HttpServlet.

Comme illustré dans les étapes 1 et 2 du diagramme précédent, le servlet action reçoit une requête HTTP, utilise les fichiers de configuration Struts pour déterminer le module d'application approprié et achemine la requête au processeur de requêtes du module.

Ce servlet est aussi chargé de l'initialisation et du nettoyage des ressources.

ECActionServlet (com.ibm.commerce.struts.ECActionServlet) est l'extension HCL Commerce de la classe Struts ActionServlet (org.apache.struts.action.ActionServlet). Il fournit des fonctionnalités supplémentaires, comme la possibilité d'actualiser la configuration Struts sans redémarrer l'application Web, requises par divers composants HCL Commerce.

Cette implémentation est définie en tant que servlet action dans le descripteur d'application Web de HCL Commerce et doit être utilisée dans l'application Web de HCL Commerce.

Processeur de requêtes

Après avoir reçu une requête HTTP du servlet action, le request processor, qui est lui aussi l'un des composants clés du contrôleur, effectue le traitement de la requête centrale comme suit :

  1. Il détermine un certain nombre de caractéristiques de la requête, comme l'environnement local et le type de contenu, requises pour la suite du traitement.
  2. Il utilise le fichier de configuration Struts du module afin de déterminer le mappage d'action configuré pour la requête.
  3. Il utilise le fichier de configuration Struts du module afin de localiser ou d'instancier une forme d'action appropriée pour la requête, le cas échéant, et alimente celle-ci en données et la valide.
  4. Il utilise le fichier de configuration Struts du module afin de localiser ou d'instancier une action appropriée pour la requête.
  5. Il transmet la requête, sa forme et son mappage d'action à l'action (étape 3 du diagramme précédent).
  6. Il réachemine l'utilisateur vers l'élément de vue adéquat lorsque l'action est terminée (étape 6 du diagramme précédent).

Par défaut, HCL Commerce est configuré pour utiliser l'implémentation de processeur de requêtes standard fournie par la structure Struts. Vu qu'elle ne requiert pas d'implémentation personnalisée, l'application Web de HCL Commerce peut exploiter n'importe quel processeur de requête spécialisé (tel que celui requis pour la prise en charge de Tiles).

Actions

Les Actions s'acquittent de la logique commerciale pour la requête spécifique, telle que la logique d'autorisation et de session, la localisation et l'appel de la logique commerciale (modèle) appropriée, etc.

Les actions connectent une requête entrante avec la logique métier correspondante devant être exécutée pour son traitement. Les actions utilisent les données de forme d'action pour appeler les opérations de la logique métier pour le compte du client (étape 4 du diagramme précédent) et renvoient un objet ActionForward indiquant si le contrôleur doit rediriger l'utilisateur (étape 5 du digramme précédent).

Une classe Action est créée pour prendre en charge chaque type de requête pouvant être reçu par le contrôleur.

BaseAction (com.ibm.commerce.struts.BaseAction) représente l'extension HCL Commerce de la classe Action de Struts (org.apache.struts.action.Action). Elle fournit la fonctionnalité requise pour l'appel de commandes HCL Commerce en fonction de la configuration d'action fournie par le mappage d'action correspondant. L'action de base fournit également des points d'ancrage d'appels supplémentaires en vue d'étendre l'action pour y inclure une logique pré- et post-traitement.

Toute action personnalisée appelant des commandes HCL Commerce doit étendre cette classe.

Mappages d'action

Les Action mappings représentent les informations connues du contrôleur sur le mappage d'une requête donnée avec une instance d'une classe Action spécifique. Le processeur de requêtes sélectionne une action appropriée pour chaque requête en fonction des mappages d'action (éléments action-mapping) définis dans le fichier de configuration Struts.

La classe de base ActionMapping étend org.apache.struts.config.ActionConfig, qui représente toutes les informations de configuration fournies dans un élément action d'un fichier de configuration de module Struts.

ECActionMapping ( com.ibm.commerce.struts.ECActionMapping) représente l'extension HCL Commerce de la classe ActionMapping de Struts (org.apache.struts.action.ActionMapping) qui permet la transmission des informations de configuration personnalisée aux actions de l'application Web de HCL Commerce. Celles-ci comprennent à la fois des propriétés personnalisées spécifiques à HCL Commerce et des propriétés supplémentaires arbitraires :

  • Les propriétés https, authentificate et credentialsAccepted sont des exemples de propriétés personnalisées spécifiques à HCL Commerce. (Voir Configuration de l'application Web pour obtenir des exemples de définition déclarative de ces propriétés.)
  • Des propriétés supplémentaires arbitraires peuvent être transmises aux instances des classes action basées sur la classe BaseAction en configurant la propriété intitulée defaultProperties.
    Remarque : La propriété defaultProperties remplace l'attribut parameter utilisé dans org.apache.struts.action.ActionMapping. Dans HCL Commerce, ce dernier est utilisé pour fournir le nom d'interface de la commande de contrôleur devant être utilisée par une action.

Pour spécifier un mappage pour une instance de la classe BaseAction ou de des descendants, vous devez utiliser ou étendre la classe ECActionMapping.

Formes d'action

Les Action forms sont un composant de vue clé utilisé pour transférer des informations entre la vue et la paire contrôleur-modèle.

Un objet ActionForm est une représentation Java (JavaBeans) de données de forme HTML. En tant que tel, il encapsule des données de forme pour faciliter l'alimentation en données et leur extraction, prend en charge la validation des données de forme et est réutilisable .

Les données en entrée sont transférées automatiquement aux objets ActionForm par la structure Struts.

A compter de la version 1.1, Struts prend aussi en charge les formes d'action dynamiques. Il s'agit de sous-classes ActionForm intégrées réutilisables pouvant être configurées à l'aide de XML au lieu de créer explicitement une classe ActionForm pour chaque forme en entrée. Les formes d'action dynamiques permettent aux développeurs de créer ces éléments par voie de déclaration dans le fichier de configuration Struts sans avoir à créer une classe ActionForm pour chaque type de forme HTML ou d'avoir à modifier la classe chaque fois que la forme HTML correspondante est modifiée.

La structure Struts crée une instance de la classe DynaActionForm pour chaque définition de form-bean de type DynaActionForm (ou son sous-type) lors de l'exécution.

Redirections d'action

Les Action forwards, à juste titre considérés comme partie du contrôleur, représentent la prochaine ressource Web, généralement une page HTML ou JSP, dans le flux de contrôle de l'application. Renvoyé par une action, un objet ActionForward indique où doit être redirigé le demandeur par le processeur de requête.

Des instances ActionForward peuvent être créées explicitement dans une classe Action ou préconfigurées dans le fichier de configuration (par le biais d'éléments forward dans global-forward ou action) et localisées en phase d'exécution.

ECActionForward ( com.ibm.commerce.struts.ECActionForward) représente l'extension HCL Commerce de la classe ActionForward de Struts (org.apache.struts.action.ActionForward). Ses caractéristiques sont les suivantes :

  • Possibilité de spécifier des propriétés de redirection supplémentaires dans un but spécifique (comme resourceClassName)
  • Possibilité de transmettre une collection de propriétés de vue (et leurs valeurs) définies par l'utilisateur à travers une propriété multivaleurs nommée properties, sous forme d'une chaîne de requête HTTP (voir Configuration de l'application Web pour des exemples de configuration de cette propriété et des précédentes par le biais de déclarations).
  • Possibilité d'exécuter une vue directement (voir la documentation de l'API de la classe ECActionForward pour plus d'informations).

Limitations

Soyez conscient des limitations suivantes lorsque vous travaillez avec la structure Struts de HCL Commerce :
  • La mise en cache n'est pas prise en charge pour les commandes qui utilisent AjaxAction. Utilisez plutôt une approche activée par le cache. Par exemple :
    • Utilisez les services REST. Les services REST prennent en charge la mise en cache côté serveur à l'aide de dynacache, et la mise en cache côté client à l'aide de directives de cache dans l'en-tête de réponse.
    • Utilisez la commande BaseAction. La mise en cache peut être utilisée pour des commandes action qui affichent uniquement des informations, mais qui ne provoquent pas de mises à jour de base de données ou de modifications d'état. Pour générer des informations d'erreur dans la réponse AJAX, transmettez un paramètre requesttype=ajax dans le cadre de la requête action.

Fichiers de configuration Struts

Le servlet action tout comme le processeur de requêtes s'appuient sur les Struts configuration files pour les informations de composant spécifiques à l'application, permettant ainsi une configuration par voie de déclarations, et non pas de programmation, d'une application Web basée sur Struts.

Le fichier de configuration Struts est analysé lors de l'initialisation du servlet action et un objet ModuleConfig est créé pour le représenter en phase d'exécution.

Une application peut comporter un seul fichier de configuration Struts (struts-config.xml) ou plusieurs, définis dans le descripteur de déploiement de l'application Web (via des éléments init-param). Par défaut, HCL Commerce fournit plusieurs fichiers de configuration Struts par module, un pour les définitions et l'autre pour les personnalisations et la migration. L'utilisation de plusieurs fichiers de configuration Struts se conforme aux "pratiques optimales" en ce qu'elle facilite le développement parallèle et que la configuration est moins sujette à des erreurs et conflits.