Maison  >  Article  >  Java  >  Quelle est la différence entre struts2 et springMVC

Quelle est la différence entre struts2 et springMVC

藏色散人
藏色散人original
2020-04-17 09:43:212298parcourir

Quelle est la différence entre struts2 et springMVC

Quelle est la différence entre struts2 et springMVC ?

1. Mécanisme du framework

1. Struts2 est implémenté par Filter (StrutsPrepareAndExecuteFilter) et SpringMVC (DispatcherServlet) est implémenté par Servlet.

2. Le filtre est initialisé après le démarrage du conteneur ; il plante après l'arrêt du service, plus tard que le Servlet. Le servlet est initialisé lors de son appel, avant l'appel de Filter, et est détruit après l'arrêt du service.

Recommandé : "apprentissage Java"

2. Mécanisme d'interception

1. Struts2

a. au niveau de la classe Pour l'interception, une action sera créée pour chaque requête. Lors de l'intégration avec Spring, la portée d'injection ActionBean de Struts2 est le prototype du mode prototype (sinon des problèmes de concurrence de thread se produiront), puis les données de la requête sont injectées dans la propriété. via des setters et des getters.

b. Dans Struts2, une action correspond à un contexte de requête et de réponse. Lors de la réception de paramètres, elle peut être reçue via des attributs. Cela montre que les paramètres d'attribut sont partagés par plusieurs méthodes.

c. Une méthode d'Action dans Struts2 peut correspondre à une url, mais ses attributs de classe sont partagés par toutes les méthodes, ce qui rend impossible l'utilisation d'annotations ou d'autres méthodes pour identifier sa propre méthode

2. SpringMVC

a. SpringMVC est une interception au niveau de la méthode. Une méthode correspond à un contexte de requête, donc la méthode est fondamentalement indépendante et a un accès exclusif aux données de requête et de réponse. Chaque méthode correspond à une URL à la fois. Le paramètre passé est directement injecté dans la méthode, ce qui est unique à la méthode. Les résultats du traitement sont renvoyés au framework via ModeMap.

b. Lors de l'intégration de Spring, le Controller Bean de SpringMVC est par défaut en mode singleton, donc par défaut, un seul contrôleur sera créé pour toutes les requêtes. Il ne devrait y avoir aucun attribut partagé, il est donc thread-safe si vous. souhaitez modifier la portée par défaut, vous devez ajouter la modification de l'annotation @Scope.

3. Performances

SpringMVC n'implémente aucune configuration En raison de l'interception basée sur la méthode de SpringMVC, l'injection de bean en mode singleton est chargée une fois. Struts2 est une interception au niveau de la classe. Chaque requête correspond à une nouvelle action de l'instance, et toutes les injections de valeurs d'attribut doivent être chargées. Par conséquent, l'efficacité et les performances du développement de SpringMVC sont supérieures à celles de Struts2.

4. Mécanisme d'interception

Struts2 possède son propre mécanisme d'interception. SpringMVC utilise une méthode Aop indépendante, ce qui fait que la quantité de fichiers de configuration de Struts2 est plus grande que celle de SpringMVC.

5. Configuration

spring MVC et Spring sont transparents. La gestion et la sécurité de ce projet sont également supérieures à celles de Struts2 (bien sûr, Struts2 peut également obtenir le même effet que SpringMVC via différentes structures de répertoires et configurations associées, mais de nombreux endroits nécessitent une configuration XML).

SpringMVC peut être considéré comme ayant une configuration 100 % nulle.

6. Idées de conception

Struts2 est plus conforme aux idées de programmation POO, tandis que SpringMVC est plus prudent et développe les servlets.

7. Intégration

SpringMVC intègre Ajax, ce qui est très pratique à utiliser. Il peut être implémenté avec une seule annotation @ResponseBody, puis renvoie directement le texte de la réponse, et l'intercepteur Struts2 s'intègre. Ajax, lors d'un traitement en Action, il faut généralement installer un plug-in ou écrire son propre code pour l'intégrer, ce qui est relativement peu pratique à utiliser.

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