/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package Servlets; import Bean.Jdbc_Oracle; import Beans.BeanCaddy; import Beans.BeanMovies; import Beans.BeanUser; import Threads.ThreadTimeout; import java.beans.Beans; import java.io.IOException; import java.io.PrintWriter; import java.sql.ResultSet; import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /*Amélioration: * Ne pas perdre le caddy lorsqu'on ferme le navigateur. (meme avec un autre navigateur) * Mais on ne peut pas avoir d'identifiant de gestionnaire dans la trace de la transaction * Comme en réseau, sauf qu'on doit être indépendant de l'utilisateur */ /** * * @author Greenlamp */ public class ServletControle extends HttpServlet { /** * Processes requests for both HTTP * <code>GET</code> and * <code>POST</code> methods. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); ServletContext sc = getServletContext(); ThreadTimeout timeOut = new ThreadTimeout(request.getSession(true)); Thread threadTimeOut = new Thread(timeOut); threadTimeOut.start(); String action = null; action = request.getParameter("action"); BeanUser beanUser = (BeanUser)getVariableSession(request, "beanUser"); if(beanUser == null || beanUser.getLogin() == null){ rediriger(request, response, sc, "/error.jsp"); }else if(action == null){ rediriger(request, response, sc, "/accueil.jsp"); }else if(action.equals("rechercher")){ actionRechercher(request, response, sc); rediriger(request, response, sc, "/caddy.jsp"); }else if(action.equals("caddy")){ rediriger(request, response, sc, "/caddy.jsp"); }else if(action.equals("deconnecter")){ actionDeconnecter(request, response, sc); rediriger(request, response, sc, "/index.jsp"); }else{ rediriger(request, response, sc, "/accueil.jsp"); } } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /** * Handles the HTTP * <code>GET</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Handles the HTTP * <code>POST</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Returns a short description of the servlet. * * @return a String containing servlet description */ @Override public String getServletInfo() { return "Short description"; }// </editor-fold> private Object getVariableSession(HttpServletRequest request, String key){ HttpSession session = request.getSession(true); Object object = session.getAttribute(key); return object; } private void addVariableSession(HttpServletRequest request, String key, Object value) { HttpSession session = request.getSession(true); session.setAttribute(key, value); } private void delVariableSession(HttpServletRequest request, String key){ HttpSession session = request.getSession(true); session.removeAttribute(key); } private void delAllVariableSession(HttpServletRequest request){ HttpSession session = request.getSession(true); session.invalidate(); } private void rediriger(HttpServletRequest request, HttpServletResponse response, ServletContext sc, String lien) { try { RequestDispatcher rd = sc.getRequestDispatcher(lien); rd.forward(request, response); } catch (ServletException ex) { Logger.getLogger(ServletControle.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(ServletControle.class.getName()).log(Level.SEVERE, null, ex); } } private void actionRechercher(HttpServletRequest request, HttpServletResponse response, ServletContext sc) { int idMovie = Integer.parseInt(request.getParameter("idMovie")); BeanMovies beanMovie = getMovie(idMovie); if(beanMovie != null){ BeanCaddy beanCaddy = (BeanCaddy)getVariableSession(request, "beanCaddy"); if(beanCaddy == null){ beanCaddy = new BeanCaddy(); } beanCaddy.add(beanMovie); addVariableSession(request, "beanMovie", "beanMovie"); } } private BeanMovies getMovie(int idMovie) { BeanMovies beanMovie = null; try { Jdbc_Oracle dbOracle = (Jdbc_Oracle) Beans.instantiate(null, "Bean.Jdbc_Oracle"); dbOracle.init(); String request = "SELECT idMovie, name from Movies where idMovie = "+idMovie+""; ResultSet tuples = (ResultSet)dbOracle.select(request); while(tuples.next() && beanMovie == null){ int id = tuples.getInt("idMovie"); String name = tuples.getString("name"); beanMovie = new BeanMovies(id, name); } dbOracle.endExtract(); dbOracle.Disconnect(); } catch (Exception ex) { Logger.getLogger(ServletLogin.class.getName()).log(Level.SEVERE, null, ex); } return beanMovie; } private void actionDeconnecter(HttpServletRequest request, HttpServletResponse response, ServletContext sc) { delVariableSession(request, "beanUser"); delVariableSession(request, "beanCaddy"); Thread threadTimeOut = (Thread)getVariableSession(request, "threadTimeOut"); threadTimeOut.stop(); delVariableSession(request, "threadTimeOut"); } }