M2 – MIAGE/SID Azim.Roussanaly@univ-nancy2.fr Servlet et session M2 – MIAGE/SID Azim.Roussanaly@univ-nancy2.fr
Problématique Visibilité des objets HTTP Application Session Page Protocole sans connexion (stateless) Miage SID
Cycle de vie web.xml Serveur démarrer lire créer servlet init() appeler Miage SID
Cycle de vie Serveur client transmettre requête 1 2 3 request response service() thread Miage SID
Gestion des sessions HTTP : protocole sans état Impossibilité de garder des informations d’une requête à l’autre (identifier un client d’un autre) Utilisation de différentes solutions pour remédier au problème d’état dont: Cookies HttpSession Miage SID
Gérer une session public class Caddie extends HttpServlet { public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Recupere la session HttpSession session = request.getSession(true); ... } } Miage SID
Objet de session public class Caddie extends HttpServlet { public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Recupere la session HttpSession session = request.getSession(true); ... // Recupere l'age de l'utilisateur int age = (int)session.getAttribute("Age"); } } Miage SID
Objet de session public class Caddie extends HttpServlet { public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Recupere la session HttpSession session = request.getSession(true); ... // Stocke l'age de l'utilisateur session.setAttribute("Age",age); } } Miage SID
Exercice Compter le nombre de requête dans une session Miage SID
HttpSession //get the session object HttpSession session = request.getSession(); //get the resource Integer count = (Integer)session.getAttribute("count"); //if it is the first call, create it if (count == null) { count = new Integer(0); }else{//update the resource count = new Integer(count.intValue()+1); } // store the new resource session.setAttribute("count", count); Miage SID
Exercice Créer une BD avec une table: email-> password Créer une application qui permet de changer un mot de passe Utiliser un pool de connection Miage SID