Cuando trabajamos con Servlets en Java no suele ser normal el configurar el timeout de sesión en un Servlet por código. Lo habitual es configurar este timeout de sesión, lo que viene a ser el tiempo de identificación a un usuario dentro de un Servlet Java, utilizando el fichero web.xml
tal y como explicamos en el artículo Modificar time-out de sesión.
Pero siempre tenemos que tener en cuenta la otra alternativa que será la de definir el timeout de sesión de un Servlet por código, de esta manera nos podemos despreocupar de lo configurado en el fichero web.xml
.
En este caso vamos a codificar el método doGet()
del Servlet.
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
...
}
Lo primero que vamos a realizar será el obtener una referencia a la sesión del contenedor, es decir al objeto HttpSession
. Esto lo realizaremos mediante el objeto de la petición, HttpServletRequest
, que lleva un acceso a la sesión.
HttpSession session = request.getSession();
El método .getSession()
será el que nos devuelve la sesion.
Una vez que tenemos acceso a la sesión vamos a apoyarnos en el método .setMaxInactiveInterval()
para establecer el timeout de sesión en un Servlet por código.
session.setMaxInactiveInterval(20*60);
Es importante saber que el tiempo a establecer mediante el método .setMaxInactiveInterval()
se tiene que expresar en segundos. Cabe recordar que en el caso de configurarlo en el fichero web.xml
lo tenemos que hacer en minutos. Por ello en el código lo hemos escrito como 20*60, para significar esta situación.
Si queremos que la sesión no tenga caducidad deberemos de indicar como valor el 0.
De esta forma tan sencilla ya habremos configurado el timeout de sesión en un Servlet por código.