"" a dit :
- J'ai pas trop compris comment s'était possible de faire carrément passer des objets dans les requetes entre servlet et jsp via les objets: HttpServletRequest. (je pourais éventuellement l'admettre c pas bien grave smile.gif )
- C'est quoi exactement ces différents: le scope request, session, application?
Ce sont ces 2 points qui font une grande différence entre développer en PHP ou Java. Le principe fondamentale des application web Java c'est que c'est une application bien normal (on ne le démarre qu'une seule fois) et tout se fait sout forme de classes. Tomcat transforme les JSP en Servlet en arrière plan. Si tu es curieux, tu peux aller voir le code Java généré à partir du JSP à l'endroit suivant :
/INSTALLATION_DE_TOMCAT/work/localhost/tonsite/* ATTENTION, le code généré n'est vraiment pas séduisant, coeur sensible s'abstenir

Mais bon, il est tout de même fonctionnel le code
Pour en revenir à mon explication initial, tout est un objet. Donc lorsque Tomcat recoit une requête il instancit un nouvel objet représentant une requête et l'envoi au servlet. Le fait que l'application ne soit chargé qu'une fois et que tout est en objet, ça facilite grandement le stockage(et réutilisation) des données en mémoire.
Lorsque l'on envoie un objet d'un Servlet à un JSP, tout se fait dans la même requête, l'objet n'est pas envoyé à traver le web.
Je vais reprendre l'explication des scope de xion (qui était bien, mais pas complète

)
- page : Ce scope représente la page. Il contient les objet qui sont déclaré dans la page. Si tu inclus un JSP à l'intérieur d'un autre, les 2 n'auront pas le même scope 'page'.
- request : Ce scope représente la requête actuelle. Que ce soit dans le servlet ou dans n'importe quel niveau d'imbrication de JSP, ce sera toujours le même scope. (les objet stocké dedans n'y sont que pour le temps de la requête)
- session : La session de l'usager
- application : les plus intéressant de tous. Ce scope est unique à ton application (contexte). Ça permet de partager et réutiliser des ressources pour tous les requêtes. Par exemple, je dois faire un formulaire sur un portail qui contient la liste de tout les pays du monde. Je crée un ArrayList et le rempli à partir d'une BDD dans la méthode init() d'un servlet. Ensuite on peut utiliser la liste de tout les pays sans faire aucune requête à la BD.
Dernier point, il est facultatif de spécifier le scope dans le JSP. L'évaluateur d'exp
ression fera une recherche dans l'ordre suivante :
- page
- request
- session
- application
L'ordre de recherche est également un outil très puissant, suposons que j'ai ce code dans un fragment JSP :
Code
<select name="pays">
<c:forEach var="pays" items="${listePays}">
<option value="${pays.code}">${pays.titre}</option>
</c:forEach>
</select>
Au lancement de l'application je remplis ma liste de pays. Donc je pourrais inclure ce JSP n'importe ou et il m'afficherait la liste de tout les pays. Si par exemple un jour ton boss vient te voir et dis que la liste doit être différente dans certaine page. Et bien c'est facile, il suffit de créer lors de la requête la nouvelle liste requise et la mettre dans le scope request (avec le même nom). Donc pour cette requête, ce sera la liste de pays dans le scope request au lieu que ce soit celui de application.
halala, je sens que je me perd dans mon explication, j'espère que je suis comprenable
"xion" a dit :
<%
session.setAttribute("nom", "valeur (n'importe quel type)");
%>
pas de scriplet

l'équivalent avec les tag c'est :
Code
<c:set var="nom" value="valeur" scope="session" />
(si on ne spécifie pas le scope, celui par défaut est 'page')