62 votes

Pourquoi créer une page JSP session = "false" directive?

Je me demandais quand vous voulez définir la suite de la directive de page dans une page JSP:

<%@ page session="false" %>

Je sais qu'il empêche la création de l'objet session, mais quand devez-vous faire? Est-il considéré comme une meilleure pratique, quand une JSP n'a pas besoin d'accéder à l'implicite de la session?

NOTE: La raison pour laquelle je demande, c'est parce que c'est dans ce Spring MVC tutoriel et je suppose que le springsource les gens savent de quoi ils parlent - http://blog.springsource.com/2011/01/04/green-beans-getting-started-with-spring-mvc/

84voto

no.good.at.coding Points 13542

Une des raisons serait la performance et de la mémoire. Si vous avez une page qui n'a pas besoin d'être impliqué dans une session (comme, disons, un about.jsp ou faq.jsp) puis le comportement par défaut de la participation de tous les JSP dans une séance permettra d'imposer la surcharge de la création d'un nouvel objet de session (si celle-ci n'existe pas déjà) et l'augmentation de l'utilisation de la mémoire comme de plus en plus des objets de résider sur le tas.

Cet effet sera grandement exagérée dans le cas d'une seule page en voyant un trafic élevé de nombreux utilisateurs uniques combinées avec un taux de rebond élevé c'est à dire les utilisateurs de ne pas continuer à parcourir, mais quitter le site immédiatement après l'affichage d'une page de l' - le conteneur va créer un nouvel objet de session par l'utilisateur qui ne seront jamais utilisées et finira par être nettoyée après l'expiration du délai ajoutée sur la tête de la création de l'objet, l'utilisation de la mémoire et de collecte des ordures sans vous donner aucune valeur réelle.

21voto

sde Points 71

Ce paramètre est également une mesure de sécurité, car il permet également d'éviter un potentiel DoS d'attaque. Que penser d'un script simple que de manière itérative wgets la JSP: il va générer un grand nombre de sessions en quelques secondes.

5voto

Reimius Points 4079

En fait, j'ai un vrai scénario dans mon application pour son utilisation. Nous avons Calmar agissant comme un proxy inverse en face de notre application. Le serveur squid est configuré pour interroger toutes les instances tomcat d'hébergement de notre application pour vérifier que les serveurs sont en place et en cours d'exécution, si elles ne sont pas, les Calmars basculent à l'aide d'un autre serveur du cluster.

La réelle interrogation à notre application de Calmar est configuré pour interroger une page spécifique dans l'application. Depuis le Calmar du sondage n'est pas réellement un navigateur, il ne peut pas tenir une session, ce qui signifie que chaque sondage à la page serveur aurait tomcat créer une session qui Squid ne peut pas contenir une référence à l'. Nous ajoutons l' <%@ page session="false" %> de la directive, de sorte qu'une session n'est pas créé sur chaque bureau de vote. Si nous n'avons pas d'utilisation de cette directive, nous avons des milliers de sessions créé plus de 4 heures de temps pour aucune raison.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X