Nos frameworks de couche MVC et de couche de contrôle couramment utilisés incluent principalement Struts2 et SpringMVC, qui correspondent respectivement à Action et Controller. Alors, quelles sont les principales différences entre SpringMVC et Struts ?
1. Mécanisme du framework
Nous savons que Struts2 utilise Filter pour implémenter, tandis que SpringMVC utilise Servlet pour implémenter.
Struts2 utilise StrutsPrepareAndExecuteFilter, tandis que SpringMVC utilise DispatcherServlet. Le filtre est un servlet spécial. 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é lorsqu'il est appelé, avant que Filter ne soit appelé ; il plante après l'arrêt du service.
2. Mécanisme d'interception
1. Struts2
Le framework Struts2 est une interception au niveau de la classe. Chaque requête créera une action lorsqu'elle sera intégrée à Spring, l'action Struts2. La portée d'injection Bean est le prototype en mode prototype (sinon des problèmes de concurrence de threads se produiront), puis les données de la requête sont injectées dans la propriété via des setters et des getters.
Dans Struts2, une Action correspond à un contexte de requête et de réponse lors de la réception de paramètres, ils peuvent être reçus via des attributs. Cela montre que les paramètres d'attribut sont partagés par plusieurs méthodes.
2. SpringMVC
SpringMVC est une interception au niveau de la méthode. Une méthode correspond à une requête. contexte Par conséquent, la méthode est fondamentalement indépendante et a un accès exclusif aux données de demande 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.
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, et 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 l'annotation @Scope pour la modifier.
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 demande d'une nouvelle action correspondant à l'instance nécessite le chargement de toutes les injections de valeurs d'attribut, donc SpringMVC est plus rapide que Struts2.
4. Mécanisme d'interception
Struts2 a son propre mécanisme d'interception. , SpringMVC utilise une méthode Aop indépendante.
Ce qui précède est la différence entre la couche de contrôle SpringMVC et Struts2. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www. php.cn) !