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

Utilizar variable session en una public class

Estas en el tema de Utilizar variable session en una public class en el foro de Java en Foros del Web. hola a to2, a ver si alguien puede ayudarme ya que es sencillo lo que quiero hacer. Estoy aprendiendo java y algunas cosas me cuestan ...
  #1 (permalink)  
Antiguo 24/02/2010, 03:38
 
Fecha de Ingreso: septiembre-2003
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 0
Utilizar variable session en una public class

hola a to2,
a ver si alguien puede ayudarme ya que es sencillo lo que quiero hacer.
Estoy aprendiendo java y algunas cosas me cuestan de entender
Tengo una página en jsp que pide login + password.
- Consulto en la base de datos y en una variable de session me guardo el ID
Hasta aquí todo ok
Ahora quiero que las siguientes páginas de mi web estén protegidas.
Para ello estoy intentando crear una public class para controlar si el usuario
puede o no puede acceder.
Esta es mi class :
Código:
 
public class seguridad {
    public static boolean checkSeguridad(){
     if (session.setAttribute("idcentro")!=''){;
       return true;
   }
   else{
       return false;
   }
    }
El problema es que me dá error session.setAttribute("idcentro")
me dice : cannot find symbol.....
como puedo realizar esto ?
Gracias.
__________________
---Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un esfuerzo total es una victoria completa.-- GHANDI
  #2 (permalink)  
Antiguo 24/02/2010, 10:03
 
Fecha de Ingreso: enero-2008
Mensajes: 197
Antigüedad: 16 años, 4 meses
Puntos: 10
Respuesta: Utilizar variable session en una public class

Hola,

session.setAttribute("idcentro") esta mal porque lo que tu quieres hacer es obtener el valor de idcentro de la sesión.
Lo que estás haciendo ahí es tratar de poner en sesión el atributo idcentro.
Deberías poner algo así:

Código:
public class Seguridad {
    
    public static boolean checkSeguridad(HTTPSession session) {
        if( null != session.getAttribute("idcentro")) {
            return true;
        }
        return false;
    }

}

Pero yo no usaría una validación de la seguridad tan sencilla.
Saludos!

Última edición por hualro; 24/02/2010 a las 10:07 Razón: Se me fue el return false :P
  #3 (permalink)  
Antiguo 25/02/2010, 09:20
 
Fecha de Ingreso: septiembre-2003
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Utilizar variable session en una public class

gracias por tu respuesta hualro...
he puesto tu función pero ahora me señala como error el "HTTPSession session"
me dice "cannot find symbol" es como si le
faltara que le importase alguna libreria pero no sé cual.....

Me indicas que tu no lo harías así... como me recomiendas que haga una
función de seguridad ?

Gracias
__________________
---Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un esfuerzo total es una victoria completa.-- GHANDI
  #4 (permalink)  
Antiguo 25/02/2010, 09:27
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Respuesta: Utilizar variable session en una public class

Wenas

Claro. No es un servlet.

Solo los servlets (o jsps) pueden acceder a la sesion.

Saludos.
__________________
--
NO. Tu problema no es urgente.

CCFVLS
  #5 (permalink)  
Antiguo 25/02/2010, 10:33
 
Fecha de Ingreso: septiembre-2003
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Utilizar variable session en una public class

Gracias por tu respuesta.
Verás vengo del mundo de la programación en PHP y hay algunas cosas que no llego a enterder del java ...

He definido como un servlet la funcion de la siguiente manera ..
sin embargo ahora no sé como llamar desde mi fichero jsp a la funcion de seguridad nada más cargar la página
Me podrías ayudar ?

Este es el código del servlet

Cita:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class seguridadServlet extends HttpServlet {

public static boolean checkSeguridad(HttpServletRequest request){
HttpSession session = request.getSession(true);
String param = (String) session.getAttribute("idcentro");
System.out.println ("dentro-->" + param);
return true;

}
}
__________________
---Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un esfuerzo total es una victoria completa.-- GHANDI
  #6 (permalink)  
Antiguo 26/02/2010, 10:15
 
Fecha de Ingreso: enero-2008
Mensajes: 197
Antigüedad: 16 años, 4 meses
Puntos: 10
Respuesta: Utilizar variable session en una public class

Hola Antoine, Motki,

Cualquier objeto en Java puede tener acceso a la sesión no necesita ser un Servlet o JSP (El JSP al final de cuentas se compila en un Servlet) siempre y cuando se le pase el Objecto de la sesión.

La clase Seguridad como la puse es una simple clase con un método estático, esto nos indica que la clase puede ser accedida sin crear un objeto de ella (usando new), simplemente haciendo referencia a la Clase y al método así:

Código:
Seguridad.checkSeguridad(session);
Si te fijas bien lo que necesitas es pasarle el objeto session de por ejemplo un JSP
de la siguiente forma
en tu JSP

Código:
<%
boolean valido = Seguridad.checkSeguridad(request.getSession());
%>
El objeto request en un jsp es un objeto implícito no necesitas crearlo.


Por último, para usar tu clase Seguridad en tus jsps, necesitas importarla.

al inicio de tu jsp

Código:
<%@ page import="pon.aqui.tu.paquete.donde.este.la.clase.Seguridad" %>
Cabe señalar que tu clase Seguridad debe importar la interfaz HTTPSession para que puedas usarla.

Código:
import javax.servlet.http.HttpSession;
Saludos!!!!!
  #7 (permalink)  
Antiguo 01/03/2010, 04:23
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Respuesta: Utilizar variable session en una public class

Evidentemente.

Tu mismo lo dices, le pasas la sesion desde una jsp.

Lo que yo digo es que solo los servlets y las jsps (que al fin y al cabo son lo mismo) tienen acceso al objeto session, usease, una HttpSession.

Saludos.
__________________
--
NO. Tu problema no es urgente.

CCFVLS
  #8 (permalink)  
Antiguo 01/03/2010, 05:30
 
Fecha de Ingreso: septiembre-2003
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Utilizar variable session en una public class

gracias x la ayuda !!!

finalmente he conseguido que me funcione ...

De todas formas , como hacen para controlar el acceso a una aplicación web que sólo pueden ver usuarios registrados ?
__________________
---Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un esfuerzo total es una victoria completa.-- GHANDI
  #9 (permalink)  
Antiguo 02/03/2010, 20:13
Avatar de dackiller  
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 4
Respuesta: Utilizar variable session en una public class

Hay muchas formas, todo depende de tu necesites.

1. Casi en todos los casos se guarda en base de datos los usuarios y modulos (archivos) a los que los usuarios tendrian acceso.

Ya que vienes de PHP, fijate en como funciona el acceso en sistema de foros, bajate el phpBB y dale una mirada a la tabla users...

es un tema extenso, pero no tan complicado por ello te puse como referencia el sistema phpBB.

Espero sirva de ayuda.
Saludos.
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.
  #10 (permalink)  
Antiguo 03/03/2010, 00:04
 
Fecha de Ingreso: enero-2008
Mensajes: 197
Antigüedad: 16 años, 4 meses
Puntos: 10
Respuesta: Utilizar variable session en una public class

Hola Motki,

Para controlar el acceso te recomiendo usar un Servlet Filter seria la forma mas adecuada si es que no usas ningun web framework como struts 2 o spring mvc.

Struts 2 p.e. provee de mecanismos para separar este tipo de cosas de la logica de negocio y dividir en capas tu app. (usarias un Interceptor)

La otra mas rudimentaria seria que en cada request validaras el usuario haciendo un servlet padre que haga esto y extiendas de este servlet y hagas funcionalidades mas especificas.

Filtros
http://java.sun.com/products/servlet/Filters.html
http://javaboutique.internet.com/tut...rvlet_Filters/

Struts 2 Interceptors
http://www.vitarara.org/cms/struts_2...in_interceptor
http://struts.apache.org/2.x/docs/interceptors.html

Como recomendacion ya que apenas vas empezando, lee la especificacion de servlets de sun, y podrias inclinarte por Struts 2, es un web framework bastante util y facil de aprender que ya te da los mecanismos adecuados para resolver de manera eficiente todos esas tareas comunes de desarrollo web.


Saludos! y buena suerte :D
  #11 (permalink)  
Antiguo 03/03/2010, 13:45
 
Fecha de Ingreso: septiembre-2003
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Utilizar variable session en una public class

ok gracias por la ayuda!


Echaré un vistazo a los links a ver si me aclaro un poco más.
__________________
---Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un esfuerzo total es una victoria completa.-- GHANDI

Etiquetas: class, public, session, variables, utilidades
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:35.