Foros del Web » Programación para mayores de 30 ;) » Java »

Variable de Session en Struts

Estas en el tema de Variable de Session en Struts en el foro de Java en Foros del Web. hola tengo una pregunta como puedo usar las variables de session en struts 1, tengo una idea pero en si no se como utilizarla, lo ...
  #1 (permalink)  
Antiguo 10/12/2013, 17:07
Avatar de BlinDer  
Fecha de Ingreso: julio-2013
Mensajes: 52
Antigüedad: 10 años, 9 meses
Puntos: 0
Variable de Session en Struts

hola tengo una pregunta como puedo usar las variables de session en struts 1, tengo una idea pero en si no se como utilizarla, lo unico que se esque hay que crear una session con

request.getSession().setAttribute("nombre", nombre);

para recuperarla es con

request.getSession().getAttribute("nombre");

se que esto me ayuda a manejar el acceso a las paginas hasta que la persona se halla logeado, la cuestion es como la envio o manejo la session durante mi aplicacion hasta que la persona se salga de la aplicacion, como restringuir el acceso a usuarios que deseen meterse por url y que no se hayan logeado???

si alguien tiene un ejemplo de como usar las variables de session lo podria postear para entender mas acerca de esto o me podria ayudar, gracias
  #2 (permalink)  
Antiguo 11/12/2013, 01:53
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 3 meses
Puntos: 22
Respuesta: Variable de Session en Struts

Muy buenas,

la sesión existe cuando el usuario se conecta a través de su navegador, esa sesión se mantiene hasta que se cierra el navegador y es única para cada usuario que se conecta

Código Java:
Ver original
  1. request.getSession().setAttribute("nombre", nombre);

Ahi estás creando una variable en la sesión que se llama nombre, y que será accesible desde cualquier parte de la aplicación.

Para controlar el acceso puedes hacer dos cosas, una hacer la comprobación en los controladores, el problema es que tendrás que hacer la comprobación en cada controlador y no es muy eficaz.

Otra forma sería utilizando el patrón Intercepting Filter
  #3 (permalink)  
Antiguo 11/12/2013, 09:41
Avatar de BlinDer  
Fecha de Ingreso: julio-2013
Mensajes: 52
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Variable de Session en Struts

hola y gracias por contestar como es la parte de Intercepting Filter????? soy nuevo de verdad apenas empiezo a ver esta parte si tienes un ejemplo te agradeceria demaciado.
  #4 (permalink)  
Antiguo 12/12/2013, 01:55
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 3 meses
Puntos: 22
Respuesta: Variable de Session en Struts

Buenas,

pues el patrón Intercepting Filter consiste en poner una capa intermedia que evalué las peticiones que llegan a la aplicación, antes de que el controlador correspondiente las ejecute, para ello se utilizan filtros.

lo que tienes que hacer es crearte un paquete nuevo donde almacenes los diferentes filtros que desees tener, y crear una nueva clase de tipo Filter.

Por poner un ejemplo sencillo la clase quedaría algo así:

Código Java:
Ver original
  1. package com.dicampus.filters;
  2.  
  3. import java.io.IOException;
  4. import javax.servlet.Filter;
  5. import javax.servlet.FilterChain;
  6. import javax.servlet.FilterConfig;
  7. import javax.servlet.ServletException;
  8. import javax.servlet.ServletRequest;
  9. import javax.servlet.ServletResponse;
  10. import javax.servlet.http.HttpServletRequest;
  11.  
  12. /**
  13.  * Servlet Filter implementation class Acceso
  14.  */
  15. public class Acceso implements Filter {
  16.  
  17.     /**
  18.      * Default constructor.
  19.      */
  20.     public Acceso() {
  21.         // TODO Auto-generated constructor stub
  22.     }
  23.  
  24.     /**
  25.      * @see Filter#destroy()
  26.      */
  27.     public void destroy() {
  28.         // TODO Auto-generated method stub
  29.     }
  30.  
  31.     /**
  32.      * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
  33.      */
  34.     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
  35.         HttpServletRequest req = (HttpServletRequest) request;
  36.         String usuario = (String) req.getSession().getAttribute("usuario");
  37.         System.out.println("USUARIO " +usuario);
  38.         System.out.println("URL "+req.getRequestURL());
  39.         System.out.println("URI "+req.getRequestURI());
  40.  
  41.         if(usuario!= null){
  42.             //Hemos pasado el filtro
  43.             chain.doFilter(request, response);
  44.         }else{
  45.             //REDIRECCIONAMOS A LA PAGINA CORRESPONDIENTE DE ERROR O LOGIN
  46.         }
  47.     }
  48.  
  49.     /**
  50.      * @see Filter#init(FilterConfig)
  51.      */
  52.     public void init(FilterConfig fConfig) throws ServletException {
  53.        
  54.     }
  55.  
  56. }

En el método doFilter realizarías las comprobaciones oportunas, yo he puesto un ejemplo en el que obtengo la URL, la URI a las que vamos accediendo y el usuario actual en sesión y muestro los datos por consola.
Además añado una comprobación si existe usuario en sesión permito pasar el filtro y se accedería a la página a la que se intento acceder en un principio, sino no muestro nada.
Quedaría hacer la redirección a la página que desees.


Por otro lado en el fichero web.xml se definirá el filtro que acabamos de crear:

Código XML:
Ver original
  1. <filter>
  2.     <display-name>Filtro</display-name>
  3.     <filter-name>Filtro</filter-name>
  4.     <filter-class>com.dicampus.filters.Filtro</filter-class>
  5.   </filter>
  6.   <filter-mapping>
  7.     <filter-name>Filtro</filter-name>
  8.     <url-pattern>*</url-pattern>
  9.   </filter-mapping>

Sino es así tienes que definirlo tu manualmente.
Fíjate en que el <url-pattern> del Filtro sea el que necesitas yo he puesto *, pero podría ser *.do, *.htm etc, el que tu necesites.
  #5 (permalink)  
Antiguo 12/12/2013, 09:36
Avatar de BlinDer  
Fecha de Ingreso: julio-2013
Mensajes: 52
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Variable de Session en Struts

muchas gracias por responder me ha quedado claro, gracias por compartit tus conocimeintos!!!

Etiquetas: session, struts, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:09.