Personnalisation de l'infrastructure MVC Spring et du contrôleur de magasin
L'infrastructure MVC (model-view-controller) utilisée pour le magasin est Spring. Spring est populaire, pris en charge et facile à adopter par les développeurs ayant déjà une expérience Struts et HCL Commerce. Les informations suivantes détaillent l'implémentation de l'infrastructure MVC Spring du magasin ainsi que la personnalisation des actions et des vues. Une fois les personnalisations effectuées, des modifications doivent être apportées aux configurations du modèle REST.
Pour plus d'informations sur l'infrastructure Spring et son API, voir :
- RESTActionController
- Ce composant est le contrôleur principal de l'infrastructure, qui gère les fonctions de base de chargement des services et de configuration de l'infrastructure, la validation des demandes et le mappage des demandes avec les actions REST configurées et exécute les actions. Gère les demandes de page traditionnelles. Dans l'environnement de séparation du magasin, il appelle le service REST de backend pour interagir avec le serveur de transactions afin d'exécuter la logique métier.
- AjaxRESTActionController
- Gère les requêtes Ajax. Dans l'environnement de séparation de magasin, il appelle également le service REST de backend.
- ViewController
- Contrôleur pour la vue de page. Il n'exécute pas d'actions REST selon les modèles REST.
Personnalisation de l'infrastructure MVC du magasin
Etant donné que la plus grande partie de la logique métier est gérée par le serveur de transactions via REST, l'extension des méthodes dans la classe RESTActionController permet de gérer et de transmettre correctement les informations via le serveur du magasin.
- Résout le paramètre d'entrée qui inclut le déchiffrement du paramètre de chiffrement et les validations de paramètre.
- Convertit le paramètre d'entrée en URL REST et en chaîne JSON à l'aide du modèle REST.
- Appelle l'API REST avec cette URL REST et cette chaîne JSON.
- Traite la réponse de l'API REST et revient à la vue appropriée.
Contrôleurs d'action
L'exemple suivant illustre un mappage d'URL vers un contrôleur d'affichage dans le fichier workspace_dir/crs-web/WebContent/WEB-INF/spring/controllers.xml :
<prop key="1/Logon">2logon</prop>
<prop key="/Logon/AuroraStorefrontAssetStore">mylogon</prop>
Où l'alias est le nom du répertoire du magasin tel qu'il est défini dans la base de données.
- 1 La clé
/Logonest le nom de chemin de l'URL de l'action pour la requête HTTP. - 2 La valeur de l'élément
logonest le nom du bean du contrôleur.
<bean id="1logon" class="2com.ibm.commerce.store.mvc.controller.spring.LogonController">
<property name="https" value="1"/>
<property name="authenticate" value="0"/>
<property name="credentialsAccepted" value="P"/>
<property name="parameter" value="loginIdentityHandler.logon"/>
<property name="generic" value="1"/></bean>- 1 L'ID bean
logondoit correspondre à la valeur de l'élémentpropdans le mappage URL-bean. - 2 La classe
LogonControllerest la classe du bean. - Les éléments de propriété sont les propriétés de demande HTTP pour l'action.
Chaque contrôleur d'action par défaut appartient à la classe RESTActionController ou à son extension (telle que LogonController) et chaque action appelle un service REST pour le traitement de la logique métier.
- https
- Indique si la demande nécessite une redirection HTTPS lorsqu'elle est envoyée au format HTTP. La valeur
1indique que la requête devait être reçue sur un canal sécurisé (HTTPS) et qu'une redirection vers le port SSL est émise si elle est reçue sur un canal non sécurisé (HTTP). - credentialsAcceped
- Indique si la demande autorise les données d'identification partielles. La valeur
Pindique que les utilisateurs partiellement authentifiés ont le droit d'accéder à cette ressource. Les utilisateurs partiellement authentifiés sont ceux qui sont déconnectés, mais se trouvent dans un état utilisateur mémorisé. C'est-à-dire, lorsque rememberMe est défini surtruepour la commande Logoff. - générique
- Indique si la demande autorise les utilisateurs génériques à l'appeler. La valeur
1indique que la requête autorise l'exécution générique et qu'un utilisateur invité est créé. - authenticate
- Indique si la demande ne peut être appelée que par les utilisateurs enregistrés. La valeur
1indique que la connexion de l'utilisateur est requise pour cet URI. Seuls les utilisateurs non invités et non génériques sont autorisés à accéder aux pages avec cette propriété définie sur1. - csrfProtected
- Indique si la demande est protégée par CSRF. La valeur
1indique que la protection contre les falsifications de requête inter-sites est activée pour cette requête. - paramètre
- Nom du service REST à appeler. Les services REST correspondants sont définis dans les modèles REST, situés dans workspace_dir/crs-web/WebContent/WEB-INF/xml/config/com.ibm.commerce.component_name/rest-template-config.xml.
Contrôleurs d'affichage
<prop key="1/CategoryDisplay">2browsingController</prop>
<prop key="/TopCategoriesDisplay">browsingController</prop>
<prop key="*">viewController</prop>- 1 La clé
/CategoryDisplayest le nom de chemin de l'URL de l'action pour la requête HTTP. - 2 La valeur de l'élément
browsingControllerest le nom du bean du contrôleur.Deux types de contrôleurs sont utilisés pour vérifier la sécurité et récupérer les objets de vue Spring (ModelAndView Object) :browsingControllerpour les vues relatives au catalogue : CategoryDisplay et TopCategoriesDisplay.browsingControllercontient une logique pour récupérer et enregistrer les paramètres de requête (catelogId, categoryId, productId) pendant l'étape de pré-traitement, et définir ces paramètres pour les requêtes HTTP pendant la phase de post-traitement.viewControllerpour des vues ordinaires.
Les contrôleurs contiennent un comportement commun, tel que l'exécution de services avec différentes actions de pré-traitement et de post-traitement, comme défini dans les méthodesAbstractWebControllerExecutor.preprocessetpostprocess. La chaîne de commandes suivante est utilisée :- Pour le pré-traitement :
- Pour le post-traitement :
Remarque : Alors que les fragments de code suivants affichent les définitionsviewControllerdans les fichiers XML des vues, la logiquebrowsingControllerest définie dans la classecom.ibm.commerce.store.mvc.controller.spring.BrowsingViewController.
L'exemple suivant est une définition de bean du contrôleur de vue dans le fichier workspace_dir/crs-web/WebContent/WEB-INF/spring/order-views.xml :
<bean 1id="AjaxOrderItemDisplayView/2-21" 3class="com.ibm.commerce.store.mvc.view.spring.StoreInternalResourceView">
<property 4name="url" value="/mobile30/ShoppingArea/ShopcartSection/OrderItemDisplay.jsp"/>
<property name="https" value="1"/>
<property name="credentialsAccepted" value="P"/>
<property name="generic" value="1"/>
</bean>
- 1 L'ID bean
AjaxOrderItemDisplayViewcorrespond au nom de chemin d'URL sans barre oblique. - 2 Facultatif : l'ID de périphérique
/-21indique que ce contrôleur de vue est la version mobile du contrôleur de vue. Si un périphérique mobile est détecté via l'agent utilisateur du navigateur, la version/-21est utilisée pour renvoyer la vue appropriée.Remarque :- L'ID d'appareil est uniquement requis si le contrôleur est partagé entre deux ou plusieurs types d'appareil. Par exemple, si des différences existent entre une version bureau et une version mobile de
AjaxOrderItemDisplayView. Si le contrôleur d'affichage est spécifique au type d'appareil, il n'est pas requis. Par exemple, si le contrôleur de vue est uniquement mobile, alors/-21peut être omis. - Les ID d'appareil ne sont pas personnalisables. Le seul ID de périphérique actif est
/-21et il est mappé aux navigateurs correspondant aux périphériques Android ou iOS.
- L'ID d'appareil est uniquement requis si le contrôleur est partagé entre deux ou plusieurs types d'appareil. Par exemple, si des différences existent entre une version bureau et une version mobile de
- 3 L'attribut de classe
com.ibm.commerce.store.mvc.view.spring.StoreInternalResourceViewest l'implémentation de la vue JSTL (Spring Java Standard Library). - 4 La valeur de la propriété
url,/mobile30/ShoppingArea/ShopcartSection/OrderItemDisplay.jsp, est l'emplacement de transfert de la vue.
- https
- Indique si la demande nécessite une redirection HTTPS lorsqu'elle est envoyée au format HTTP. La valeur
1indique que la requête devait être reçue sur un canal sécurisé (HTTPS) et qu'une redirection vers le port SSL est émise si elle est reçue sur un canal non sécurisé (HTTP). - credentialsAcceped
- Indique si la demande autorise les données d'identification partielles. La valeur
Pindique que les utilisateurs partiellement authentifiés ont le droit d'accéder à cette ressource. Les utilisateurs partiellement authentifiés sont ceux qui sont déconnectés, mais se trouvent dans un état utilisateur mémorisé. C'est-à-dire, lorsque rememberMe est défini surtruepour la commande Logoff. - générique
- Indique si la demande autorise les utilisateurs génériques à l'appeler. La valeur
0indique que la requête n'autorise pas l'exécution générique et qu'un utilisateur invité est créé automatiquement lorsque la requête est envoyée en générique. - authenticate
- Indique si la demande ne peut être appelée que par les utilisateurs enregistrés. La valeur
1indique que la connexion de l'utilisateur est requise pour cet URI. Seuls les utilisateurs non invités et non génériques sont autorisés à accéder aux pages avec cette propriété définie sur1. - csrfProtected
- Indique si la demande est protégée par CSRF. La valeur
1indique que la protection contre les falsifications de requête inter-sites est activée pour cette requête. - storeDir
- Indique si l'emplacement de transfert doit être ajouté après le répertoire spécifique au magasin. La valeur
noindique que cette URL est relative au répertoire du magasin. Toutes les autres valeurs ou les valeurs non spécifiées signifient que le chemin de l'URL est relatif au répertoire racine des fichiers de pages JavaServer (fichier JSP). - skipAccessControlCheck
- Indique si cette vue est vérifiée par rapport aux stratégies de contrôle d'accès à la vue configurées dans la base de données. La valeur
1signifie que le contrôle d'accès n'est pas vérifié pour cette vue. Cette option est fournie par les clients pour l'ajout de nouvelles vues. Par défaut, le contrôle d'accès des vues est vérifié. Pour charger les stratégies de contrôle d'accès dans la base de données pour de nouvelles vues, voir Chargement de données de stratégie de contrôle d'accès. - targetServletName
- Nom du servlet cible pour la page JavaServer (JSP). Cette propriété est utilisée pour localiser des vues sur différentes archives Web (WAR).