/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package Servlet; import Bean.BeanCaddy; import Bean.BeanChambre; import Bean.BeanMagasin; import Bean.BeanUser; import Bean.Jdbc_MySQL; 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.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /** * * @author Greenlamp */ @WebServlet(name = "Servlet_Login", urlPatterns = {"/Servlet_Login"}) public class Servlet_Login 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(); String action = request.getParameter("action"); if(action.equals("login")){ gestionLogin(request, response); }else if(action.equals("register")){ gestionRegister(request, response); } } // <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 void gestionLogin(HttpServletRequest request, HttpServletResponse response) { String user = request.getParameter("user"); String pass = request.getParameter("pass"); String numero = request.getParameter("numero"); String[] split = user.split(" "); String prenom = split[0]; String nom = split[1]; int id = -1; if((id = check_Mysql(nom, prenom, pass)) != -1){ try { getServletContext().setAttribute("numero", numero); BeanUser beanUser = new BeanUser(nom, prenom, id); BeanCaddy beanCaddy = recupererCaddy(nom, prenom); this.addVariableSession(request, "beanUser", beanUser); this.addVariableSession(request, "beanCaddy", beanCaddy); response.sendRedirect("Servlet_Controle"); } catch (IOException ex) { Logger.getLogger(Servlet_Login.class.getName()).log(Level.SEVERE, null, ex); } }else{ try { response.sendRedirect("error.jsp"); } catch (IOException ex) { Logger.getLogger(Servlet_Login.class.getName()).log(Level.SEVERE, null, ex); } } } private void gestionRegister(HttpServletRequest request, HttpServletResponse response) { String user = request.getParameter("user"); String pass = request.getParameter("pass"); String numero = request.getParameter("numero"); String[] split = user.split(" "); String prenom = split[0]; String nom = split[1]; int id = existeDeja(nom, prenom); if(id == -1){ creerUser(nom, prenom, pass); id = existeDeja(nom, prenom); getServletContext().setAttribute("numero", numero); BeanUser beanUser = new BeanUser(nom, prenom, id); this.addVariableSession(request, "beanUser", beanUser); try { response.sendRedirect("Servlet_Controle"); } catch (IOException ex) { Logger.getLogger(Servlet_Login.class.getName()).log(Level.SEVERE, null, ex); } }else{ try { response.sendRedirect("error.jsp?message=\"nom ou prénom déja utilisé.\""); } catch (IOException ex) { Logger.getLogger(Servlet_Login.class.getName()).log(Level.SEVERE, null, ex); } } } private int check_Mysql(String nom, String prenom, String pass) { int id = -1; try { Jdbc_MySQL dbsql = (Jdbc_MySQL) Beans.instantiate(null, "Bean.Jdbc_MySQL"); dbsql.init(); String request = "" + "SELECT id " + "FROM voyageurs " + "WHERE nom = '" + nom + "' " + "AND prenom = '" + prenom + "' " + "AND password = '" + pass + "'"; Object tuples = dbsql.select(request); id = Integer.parseInt(dbsql.extract(tuples, 1, "id")); dbsql.endExtract(); dbsql.Disconnect(); } catch (Exception ex) { Logger.getLogger(Servlet_Login.class.getName()).log(Level.SEVERE, null, ex); } return id; } private BeanMagasin recupererMagasin() { BeanMagasin beanMagasin = null; try { Jdbc_MySQL dbsql = (Jdbc_MySQL) Beans.instantiate(null, "Bean.Jdbc_MySQL"); dbsql.init(); int count = dbsql.count("chambres"); if(count != 0){ String request = "SELECT * FROM chambres"; Object tuples = dbsql.select(request); beanMagasin = new BeanMagasin(); for(int i=1; i<count+1; i++){ int numero = Integer.parseInt(dbsql.extract(tuples, i, "numero")); int nbOccupant = Integer.parseInt(dbsql.extract(tuples, i, "nb_occupants")); int prixHtva = Integer.parseInt(dbsql.extract(tuples, i, "prix_htva")); int douche = Integer.parseInt(dbsql.extract(tuples, i, "douche")); int baignoire = Integer.parseInt(dbsql.extract(tuples, i, "baignoire")); int cuvette = Integer.parseInt(dbsql.extract(tuples, i, "cuvette")); BeanChambre beanChambre = new BeanChambre(numero, nbOccupant, douche, baignoire, cuvette, prixHtva); beanMagasin.addChambre(beanChambre); } dbsql.endExtract(); dbsql.Disconnect(); } } catch (Exception ex) { Logger.getLogger(Servlet_Login.class.getName()).log(Level.SEVERE, null, ex); } return beanMagasin; } private BeanCaddy recupererCaddy(String nom, String prenom) { BeanCaddy beanCaddy = null; try { Jdbc_MySQL dbsql = (Jdbc_MySQL) Beans.instantiate(null, "Bean.Jdbc_MySQL"); dbsql.init(); int count = dbsql.count("reservations"); if(count != 0){ String request = "SELECT * FROM reservations, voyageurs " + "WHERE reservations.titulaire = voyageurs.id " + "AND voyageurs.nom = '"+nom+"' AND voyageurs.prenom = '"+prenom+"'"; Object tuples = dbsql.select(request); beanCaddy = new BeanCaddy(); for(int i=1; i<count+1; i++){ String idReservation = dbsql.extract(tuples, i, "id"); int numeroChambre = Integer.parseInt(dbsql.extract(tuples, i, "chambre")); int prix = getPrixChambre(numeroChambre); String date = dbsql.extract(tuples, i, "date_reservation"); String heure = dbsql.extract(tuples, i, "heure_reservation"); beanCaddy.addReservation(idReservation, numeroChambre, prix, date, heure); } dbsql.endExtract(); dbsql.Disconnect(); } } catch (Exception ex) { Logger.getLogger(Servlet_Login.class.getName()).log(Level.SEVERE, null, ex); } return beanCaddy; } private int getPrixChambre(int numeroChambre) { int prix = 0; try { Jdbc_MySQL dbsql = (Jdbc_MySQL) Beans.instantiate(null, "Bean.Jdbc_MySQL"); dbsql.init(); String request = "SELECT prix_htva FROM chambres WHERE numero = '"+numeroChambre+"'"; Object tuples = dbsql.select(request); prix = Integer.parseInt(dbsql.extract(tuples, 1, "prix_htva")); dbsql.endExtract(); dbsql.Disconnect(); } catch (Exception ex) { Logger.getLogger(Servlet_Login.class.getName()).log(Level.SEVERE, null, ex); } return prix; } 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 int existeDeja(String nom, String prenom) { int id = -1; try { Jdbc_MySQL dbsql = (Jdbc_MySQL) Beans.instantiate(null, "Bean.Jdbc_MySQL"); dbsql.init(); String request = "SELECT id from voyageurs where nom = '"+nom+"' AND prenom = '"+prenom+"'"; ResultSet tuples = (ResultSet)dbsql.select(request); while(tuples.next()){ id = tuples.getInt("id"); } dbsql.endExtract(); dbsql.Disconnect(); } catch (Exception ex) { Logger.getLogger(Servlet_Login.class.getName()).log(Level.SEVERE, null, ex); } return id; } private void creerUser(String nom, String prenom, String pass) { try { Jdbc_MySQL dbsql = (Jdbc_MySQL) Beans.instantiate(null, "Bean.Jdbc_MySQL"); dbsql.init(); String requete = "INSERT INTO voyageurs(nom, prenom, password) VALUES('" + nom + "','" + prenom + "','" + pass + "')"; dbsql.update(requete); dbsql.Disconnect(); } catch (Exception ex) { Logger.getLogger(Servlet_Controle.class.getName()).log(Level.SEVERE, null, ex); } } }