Les filtres vs Intercepteurs Struts 2
Quelle est la différence, vraiment, entre les filtres et les intercepteurs? Je me rends compte que les intercepteurs de feu avant et après une action, de façon récursive, et les filtres peuvent être configurés à feu sur les actions et sur certains modèles url. Mais comment savez-vous quand les utiliser?
Dans le livre que je suis en train de lire sur Struts 2, il semble que les intercepteurs sont en train d'être poussé et j'ai même suivi un tutoriel pour écrire une Authentification de l'Intercepteur pour s'assurer qu'un utilisateur est connecté. Toutefois, si l'utilisateur tente d'accéder à une URL qui n'ont pas une action est associée avec elle, l'intercepteur ne l'attrape pas, ce qui veut dire que je devrais associer une action à un tous les jsp que je veux être sûr. Cela ne semble pas juste.
Je peux faire un Filtre d'Authentification qui gère les Url, de sorte que je n'ai pas à le faire, mais alors, quel est le point de intercepteurs?
- C'est une bonne pratique de coller vos .jsp est dans le dossier WEB-INF. De cette façon, ils ne peuvent pas être demandées directement par l'URL. Plutôt, l'utilisateur doit passer par des Actions, qui le transmet ensuite à la bonne jsp (selon le résultat).
Vous devez vous connecter pour publier un commentaire.
La différence la plus importante est que "intercepteurs" sont une partie du framework Struts 2, et ne sont qu'une partie du traitement de la demande qui est faite par le framework Struts 2. "Filtres" sur l'autre sont une partie de la Servlet Caractéristiques; en d'autres termes, ils font partie de l'API Servlet. Si vous êtes en utilisant Struts 2, vous devez utiliser des intercepteurs pour l'emballage de fonctionnalités autour de votre Struts 2 actions. Si vous essayez d'envelopper les fonctionnalités autour de demandes en provenance de votre webapp, mais pas manipulé par Struts 2, un filtre peut être plus approprié.
BTW, l'ensemble du Framework Struts 2 est déployé à l'intérieur d'un filtre configuré dans votre application web, déclarée dans votre webapp du descripteur de déploiement ( web.xml ) comme:
Ce filtre, qui est configuré pour intercepter toutes les requêtes d'URL de modèles, est le point d'entrée dans l'ensemble du framework Struts 2.
J'espère que ça aide.
l'intercepteur pile feux sur chaque demande.
les filtres s'appliquent uniquement à l'url pour lequel ils sont définis.
edit -- vous utilisez l'un ou l'autre selon le besoin. Disons que vous avez besoin de vérifier un cookie est présent pour chaque demande. L'utilisateur d'un intercepteur. Disons que vous avez besoin de pop up externe app sur certaines demandes (en raison de l'url), d'utiliser un filtre.
Je pense que les intercepteurs sont les plus couramment utilisés outil...
pourquoi aurais-tu une url sans associé à l'action?
Ce qui est de l'Intercepteur ?
Le Framework Struts 2 utilise le concept de Intercepteurs à part la solution de certains problèmes par différentes actions.
Comme nous le savons le cadre invoque une Action particulière de l'objet sur la communication soumise à une demande pour cela. Mais avant l'exécution de l'Action, de l'invocation est intercepté par un autre objet de fournir un traitement supplémentaire nécessaire.
De même, après l'exécution de l'Action, de l'invocation peut être intercepté à nouveau. Cette interception de l'objet est connu comme Intercepteur.
Donc, le but de l'utilisation de l'Intercepteur est de permettre à un plus grand contrôle sur le contrôleur de couche et de séparer la logique commune qui s'applique à de multiples actions.
Le framework Struts 2 a déjà fourni son propre ensemble de Intercepteurs qui peut être utilisé dans l'application de l'obligation de fournir le traitement avant et après l'Action classs exécution.
L'un de ceux qui est "Alias Interceptor" que je vais aborder ici.
Alias Intercepteur:
Alias Intercepteur est utilisée dans le cas de l'Action de chaînage. L'Action de chaînage signifie une Action en appelle d'autres mesures après l'exécution réussie de la première action.
L'intercepteur alias un paramètre nommé à un autre nom de paramètre. Dans l'action de chaînage, lorsque deux classes d'action de partager un paramètre commun avec un nom différent, l'Intercepteur est utilisé pour donner un nom d'alias à un parmeter de première classe de l'action, qui correspond au nom de paramètre dans la deuxième classe de l'action.
L'alias de l'expression de l'action doit être sous la forme de :
Que par l'struts 2 cycle de vie/architecture n'intercepteurs sont exécutés avant le filtre. Donc, si il n'y a pas d'action pour la cartographie de votre demande puis c'est à défaut de tout en passant à travers le filtre.
Comme une règle du pouce
request
. Lestruts
lui-même est un filtre.interceptors
peut s'exécuter avant, après struts actions. Ils ne vont pas s'exécuter si la demande n'est pas fin avec.action
.Donc, quelques exemples de filtres peut être:
js
etcss
fichiers, vous devriez aller pour les filtres ne intercepteurs.chain.doFilter(request, response)
Théoriquement, vous pouvez développer un struts application web sans le développement de votre propre
interceptors
et à l'aide defilters
seulement. Mais vous ferez face à beaucoup de problème et le code de la chaudière filtres.Beaucoup de struts 2 fonctionnalités sont à construire avec les intercepteurs, vous pouvez le trouver dans struts-default.xml (https://struts.apache.org/docs/struts-defaultxml.html) la liste vous aidera à trouver quand les intercepteurs peuvent être utilisés. (Par exemple
ParametersInterceptor
s'exécute avant des actions à appliquer soumis les valeurs d'un formulaire d'actions)Tout en travaillant avec des intercepteurs vous pouvez facilement accéder à jambes de suspension caractéristiques, par exemple
getText
de ressources du message, en cours nom de l'action et de l'espace de nom, changement de l'action de l'écoulement.Considérant ci-dessus, voici quelques cas qui peuvent être développés par des intercepteurs:
invocation.invoke()
Les intercepteurs sont de fournir le filtre et la Chaîne de Responsabilité de modèle de conception pour les actions struts, tandis que les filtres permettent de ce modèle à l'ensemble de votre application web.
Le Framework Struts 2 ne dépend pas de Servlet API.
Struts 2 Actions ne sont pas couplé à un conteneur. Le plus souvent les contextes de servlet sont représentés comme de simples Cartes, permettant d'Actions à être testés séparément.
Filtre est une partie de la Servlet API si le Framework Struts 2 utilise le concept de Intercepteurs à part la solution de certains problèmes par différentes actions.
Aussi, vous pouvez facilement écrire des cas de test pour l'Intercepteur et de l'Action de classe.