Manejo de Sesiones con Servlets en NetBeans 6.1


Regularmente cuando realizaba pequeños proyectos web y trabajaba con sesiones siempre todo lo manejaba en archivos JSP, pero esta vez decidi probar un servlet para el manejo de sesiones y mostrar lo facil que puede resultar. Lo que comunmente hacemos es trabajar con el famoso cuadro de logueo, en donde colocamos el usuario y el password para luego ser validado y crear la sesion. Bueno lo primero que tenemos hacer es crear el proyecto dentro de NetBeans (ya saben como aplicativo web) y luego escribir algo de código basico HTML dentro del archivo «index.jsp» creando el cuadro de logueo mas o menos quedando asi:

El diseño queda a disposicion de ustedes, ahora hay un sin fin de herramientas que permiten realizar este tipo de trabajo, esto es solo para uso didactico. obviamente esta tabla de logueo lo mantendremos dentro de un «form» dado que utilizaremos el metodo POST y en el action colocaremos el Servlet al cual llamaremos «GeneraSession».

Una vez hecho esto, creamos el archivo «principal.jsp» el cual nos servira para mostrar el resultado luego de realizar el logueo.

Luego creamos nuestra clase que actuara como servlet. Hacemos click derecho sobre nuestro proyecto y elejimos New –> Servlet, le damos el nombre (GeneraSession.java) y se nos mostrara un cuadro en donde nos dice que este nombre del servlet sera añadido al archivo de configuración «web.xml» el cual servira para poder ubicarlo y luego le damos click en terminar

Una vez hecho esto solo quedaria agregar el codigo dentro del metodo «processRequest», quedando algo como esto:

Podemos observar que estamos obteniendo los datos del formulario mediante el request para ser validado y asi poder generar la sesion, para luego enviarnos a la pagina principal. Ahora esto no quedaria alli; en la pagina «principal.jsp» que ha sido creada tendriamos que realizar tambien la validacion de la sesion, dado que como sabemos las sesiones tienen un tiempo de vida, si sobrepasa este tiempo la sesion automaticamente se destruye (a no ser que personalize el tiempo de vida), entonces en la pagina «principal.jsp» tendriamos algo como esto:

De esta forma validamos si la sesion persite, en caso contrario te enviaria a la pagina de inicio para volver ha realizar el logueo.

Como veran es una forma practica de trabajar con sesiones mediante un servlet; obviamente esto tendria que mejorarse, pero esto puede ser un punto de partida para muchos.

61 comentarios en “Manejo de Sesiones con Servlets en NetBeans 6.1

  1. […] de reportes * Haz facil el scroll con Scrollable (JQuery) * Curiosidades sobre el kernel de Linux * Manejo de sesiones con Servlets con Netbeans * Juego para Linux, Lavirinto3D * Pantallazos de Kubuntu 8.10 Intrepid Ibex * Ubuntu NextG para […]

  2. hola

    gracias por tu aporte es una buena forma de empezar a usar sesiones, con tu explicación sencilla pero rica en información he entendido un poco mas el manejo de sesiones

  3. gracias por tu aportacion muy util
    me gustaria me pudieras explicar como le hago para pasar de este servlet a otro como para comenzar una conversacion con alguiien

    gracias

  4. Hola gaby, ante todo agradecerte por darte un tiempo para leer el blog, bueno con respecto a tu pregunta lo que podrias hacer es en la parte del codigo que dice response.sendRedirect(«pagina»), podrias llamar a un servlet en lugar de una pagina algo asi como esto:

    response.sendRedirect(«mi_otro_servlet»)

    Espero te sirva

    Saludos.

  5. hola
    tu practica esta muy buena pero tienes ejemplos que tengan conexion con bases de datos
    te agradeceria mucho
    un fuerte abrazo

    • Hola Carol, gusto de saludarte, claro que tengo, en este post solo lo puse como parte inicial del desarrollo con sesiones. Una pregunta, que gestor de base de datos utilizas??. Yo trabajo con postgres pero la mecanica seria la misma; si vas ha utilizar otro gestor; solo va ha variar la cadena de conexion y dependendiendo de la sintaxis SQL.

      Saludos.

  6. Hola nachxs, ma a ayudado mucho tu tutorial ya que estoy iniciando en el tema de desarrollo web, muchas gracias. Pero tengo una duda, como cambiar la temporalidad de las sesiones (su tiempo de vida)? se registra este datos en el web.xml? y si nos podrías decir donde consultar información y/o documentación sobre las sesiones.

    Gracias de nuevo.

  7. Hola que tal, el tutorial esta buenisimo. tengo una duda q no se como resolver, tengo mi login asi como esta aqui, ya comparado con una base de datos, el problema es que al dar clic en el navegador hacia atras me muestra la pagina de la que sali. como puedo evitar esto?

    De antemano muchas gracias!!! 😀

  8. Me gusto mucho este tutorial, aunque no me lee el servlet =/. Me sale «el metodo http post no es soportado por esta url». estoy buscando el error, que crees que sea?

  9. aaaaaaaaah que tonto!! ya encontré el error! Disculpen las molestias, es que soy nuevo en esta materia ^^. En fin espero mejorar mucho y todo sera gracias a gente como vosotros.

    Un saludo 😀

  10. Tengo una duda cuando ejecuto el programa en netbeans, se ejecuta el index.jsp y voy al navegador (Firefox) y pongo : /principal.jsp y me regresa al index.jsp.

    Pero en Internet Explorer quiero hacer la misma jugada para ver si me retorna al index.jsp (pues no he hecho alguna sesión) y obtengo un error:
    ——-
    Estado de HTTP 404 –
    Descripción: El recurso solicitado () no se encuentra disponible.

    Cómo se puede solucionar ese problema?

    • Hola Fernando, gracias por leer el blog. Bueno con respecto a tu pregunta, siempre pasa eso con IE, a mi me ha pasado con otros casos y tenia que ver la forma de evitar estos errores (horrores de Microsoft), tu sabes que esos problemas a veces son ajenos a nuestro desarrollo, pero quizas te pueda servir si agregas:

      if (request.isRequestedSessionIdValid()){
      // aqui todo tu codigo de validacion
      }else{
      response.sendRedirect(«index.jsp»)
      }

      Espero te sea util.

  11. muy bueno esto che.
    justamente estoy viendo algo similar pero con bases de datos mysql.
    si te parece bien, podriamos colaborar en algunos proyectos java.
    Saludos.

  12. Hola Nachxs, muchas gracias por el manual, es posible hacer esto con una conexión a mysql?, lo he intentado de diferentes formas pero no me resulta, podrías ayudarme con esto?
    Muchas Gracias

  13. hola eh estado leyendo tu publicacion y me parece de gran ayuda a las personas como yo que estamos aprendiendo herramientas como esta y bueno pienso y espero que me puedas ayudar con esto de las sesiones lo que pasa es no puedo registrar la hora de salida de sesion desde el close de la ventana del navegador y bueno me piden que mande a una base de datos todas las transacciones que realice un usuario por ejemplo:
    mi trabajo consta de busquedas …. palabra: jerarquico y lo que hara es arrojar las posibles soluciones enviando asi un pdf lo que quiero hacer es que al momento de pinchar algun pdf me lo registre y bueno tendre mas moenos el control con el tiempo de salida
    espero que me haya podido explicar y no confudido gracias y espero que me puedas contestar

    • Hola Mario, seria bueno mostrar como es que esta su servlet o tu pagina principal luego del logueo, porque si no te aparece nada es por algun error o porque no pusiste nasa en tu pagina principal.

      Saludos.

  14. yo hice mi servlet exactamente como está acá en este tutorial, pero nada! Estoy usando GlassFish v2.1 con NetBeans 6.7.1. Hice las paginas y el servlet como acá pero no me funciona, no hace el redirect a ninguna pagina. Sin embargo, tengo una pagina para dar de alta a socios y esa si me funciona perfectamente

    • Mario, hola.
      Como te dije anteriormente seria bueno colocar mas detalle del problema que tienes porque asi no podemos ayudarte, no podemos saber a se puede dar ese error, fijate en la salida que te muestra Glassfish, alli quizas tengas mas detalle del problema.

      Saludos.

  15. Hola, muy buenos estos aportes.. se nota que con las preguntas se enriquece mas el articulo que de por si esta bueno..¡¡¡.
    Yo tengo que hacer esto mismo pero con los datos de usuario y contraceña que estan en un archivo csv, que a su ves se esta leyendo y escribiendo desde una aplicacion de escritorio; la verdad seria mejor con sql pero como es para la facu tengo que hacerlo asi…
    si alguien tiene alguna idea le reeeeeeeeeee agradesco……..

  16. el error que muestra de metodo POST o GET no soportado por URL se soluciona cambiando una parte en el codigo del servlet.

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

    EL processRequest cambienlo por doPOST el resto igual y funciona

    Saludos

  17. HTTP Status 405 – El Metodo HTTP POST no es soportado por esta URL

    ——————————————————————————–

    type Status report

    messageEl Metodo HTTP POST no es soportado por esta URL

    descriptionThe specified HTTP method is not allowed for the requested resource (El Metodo HTTP POST no es soportado por esta URL).

    tengo ese error ya cambie a doPOST y sigue el error ayuda

  18. que tal, esta muy bueno el post y me ha servido pero tengo un problema, cuando meto el código en el .jsp para validar la información del usuario y dar o no acceso, me marca error en la variable request, dice que no existe… como la jalas? o porque a ti no te marca error?
    Gracias

  19. ola he visto tu ejemplo.. no lo he probado ..
    tengo un problema..iuntento hacer una aplicacion web.con netbeans conectada a una base mysql.y uso el tomcat como loscalhost.

    esta es mi descripcion> tengo un formulario.jsp de donde mando y traigo la info hacia la base..

    hago la coneccion por medio de una clase servlet (aki hago toda mi programacion.. en los metos doPost())

    el problema q tengo esq no puedo hacer las consultas ..al momento de compilar el formulario. no se conecta.. ni hace consultas..es decir esta muero jeje

    yo he hecho este ejercicio antes de operaciones desde java hacia mysql pero con una clase normal ..nunca desde un servlet..

    si tiene algun tipo de info q me puedan facilitar seria de mucha ayuda..he buscado ejemplos pero no veo nada =)

    talves tenga q configurar algo! estoy en un ounto muerto…grax

    • Hola TeNm, gracias por comentar en el blog, bueno no te podría ayudar si no me muestras el error, o tal vez me podrias enviar tu aplicación para revisarla y luego te indicaría en que podrías estar fallando. Muéstrame el error.

      Saludos.

  20. hola nachs muchas grax por responder ..he pensado en lo q puede estar mal.. y me he dado cuenta q cada ves q kiero hacer una consulta en la base de datos desde el servlet hay q crear la conexion.. yo pensaba q podia crear la coneccion 1 ves y dejarla abierta y hacer multiples consultas distintas..

    por otra parte creo tener errores de conxion en algun lado o de libreias jeje esq soy muy nub ><

    aki te mando un pekeño ejemplo lo trabajo en netbenas aunke en eclipse debe ser igual..

    esta es la clase servlet donde kiero hacer mis consultas !

    package contolador;

    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import modelo.Persona;

    /**
    * Servlet implementation class Servletcrear
    */
    public class Admin extends HttpServlet
    {
    private static final long serialVersionUID = 1L;

    String cod,nom,mail;
    ArrayList personas = new ArrayList();

    /**
    * Default constructor.
    */
    public Admin() {

    }

    /**
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doAll(request,response);

    }

    /**
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doAll(request,response);

    }

    private void doAll(HttpServletRequest request, HttpServletResponse response) throws IOException
    {

    response.setContentType(«text/html»);
    PrintWriter out = response.getWriter();
    out.println(«crear»);
    out.println(«»);

    if(request.getParameter(«operacion»).equals(«ADD»))//PARTE PARA AGREGAR UNA PERSONA
    {
    cod = (request.getParameter(«codigo»));
    nom = (request.getParameter(«nombre»));
    mail = (request.getParameter(«correo»));

    crearPersona(cod,nom,mail);
    }

    out.println(« VOLVER «);
    out.println(«»);

    }

    private void crearPersona(String cod, String nom, String mail) {

    //INSTACIAMOS LA PERSONA

    Persona p = new Persona();
    p.setCodigo(cod);
    p.setNombre(nom);
    p.setCorreo(mail);

    personas.add(p);

    Connection conn=null;
    Statement st=null;
    ResultSet rs=null;
    String urlValue=»jdbc:mysql://localhost:3306/comunidad»;
    String user=»root»;
    String Password=»»;
    String consulta=»Insert into Persona (codigo,nombre,correo)values(‘»+p.getCodigo()+»‘,'»+p.getNombre()+»‘,'»+p.getCorreo()+»‘,'»+»‘)»;

    System.out.println(«LA PERSONA SE HA CREADO EXITOSAMENTE»);

    try
    {
    Class.forName(«com.mysql.jdbc.Driver»);
    conn= DriverManager.getConnection(urlValue,user,Password);
    st= conn.createStatement();
    rs=st.executeQuery(consulta);

    }catch (ClassNotFoundException e) {

    e.printStackTrace();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    finally{
    try {
    conn.close();
    st.close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    }
    }

    ——————————————————————————–

    y este es mi formulario en donde voy a compilar en localhost

    TALLER 3

    Datos de la persona

    Codigo

    Nombre

    Correo

    Ingrese el codigo a eliminar

    sobra decir q tengo la clase persona.
    el problema esq no me agrega ala base de datos osea no hace la consulta. q estoy haciendo mal? >< grax por la ayuda..

  21. mm esto hay q hacerlo sin etiketas jijij

    bueno para hacer la operacion tengo algo asi

    input type=»submit» name=»enviar» value=»Crear Estudiante»
    input type=»hidden» name=»operacion» value=»ADD»

    la variable ADD es la q relaciono con el request get parameter para hacer la operacion.

    • Hola perdona la demora al contestar, mira el problema desde mi punto de vista posiblemente se de en la parte de conexión y ejecución de la consulta podrias mostrarme parte del error? o si te parece si me mandas el proyecto o las clases para revisar y comentarte las posibles correcciones?

      Saludos.

  22. hola nachx la verdad si es problema de laparte de conexion..la consulta esta bn ..mira yo me preguntaba si podria tener tu correo o mesengear algo q uses para una asesoria futura jeje ..grax man..si estas de acuerdo este es mi correo zephiano@gmail

  23. tengo una duda;

    ya hize todo el ejemplo, solo que a la hora que le introduzco el usuario, y el password, me manda un error:

    este
    Estado HTTP 405 – El Metodo HTTP POST no es soportado por esta URL

    type Informe de estado

    mensaje El Metodo HTTP POST no es soportado por esta URL

    descripción El método HTTP especificado no está permitido para el recurso requerido (El Metodo HTTP POST no es soportado por esta URL).
    Apache Tomcat/6.0.20

    a que se debe, como lo resuelvo..

    porfis

  24. Excelente mi estimado, muchas gracias por el aporte.
    Una pregunta tendras ejemplos de conexion a BD (mysql o cualquiera)
    Saludos y nuevamente gracias

  25. Gracias por tan sencillo y claro ejemplo, gracias a ello he logrado entender mucho mejor el manejo de las sesiones, espero que sigas adelante y que Dios te bendiga!!

  26. bien echo amigooooooooo me ayudasteeee mucho muchasss graciasssss lo necesitabaaaaa buen bloggg cuando aprenda mas igual hareunoooo gracias por tu ayudaaaa porke en internet nada mas veo puro php buuuuuuuu y yo ando en esto de los servlets y java y esoo tu sabess jejejeje cuidatee y graciasss solo espero poderlo poner en mi proyecto conajaxxx si no ps yametendras por aki pidiendo ayuda bueno si no es mucha molestiaaa valeee cuidateee suerteee!!!!

  27. Hola necesito ayuda para crear un manejo de sesiones con PHP en una aplicación WEB, tengo algunas dudas, ya tengo la idea pero no la planteo bien….Además de crear la base de datos, pero el manejo de sesiones es dependiendo el usuario. Ayuda por favor. Muy buen POST

  28. Hola master, muy buena explicacion… pero yo quisiera que al momento de logueo me reconozca el tipo de usuario y que me mande a diferentes menus, por ejemplo: Si se loguea un alumno que vaya al menu de alumno y si se logea un maestro que vaya al jsp del maestro.

Replica a nachxs Cancelar la respuesta