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

jsp y servlet manda null

Estas en el tema de jsp y servlet manda null en el foro de Java en Foros del Web. Hola que tal buenas tardes hoy vengo con otro problema tengo un servlet en donde tengo el siguiente código Código PHP: public class  SLoginUsuario  extends  HttpServlet ...
  #1 (permalink)  
Antiguo 21/05/2012, 16:54
 
Fecha de Ingreso: mayo-2011
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 2
Pregunta jsp y servlet manda null

Hola que tal buenas tardes hoy vengo con otro problema tengo un servlet en donde tengo el siguiente código

Código PHP:
public class SLoginUsuario extends HttpServlet{
    private static final 
long serialVersionUID 1L;
    
    protected 
void doGet (HttpServletRequest requestHttpServletResponse response)throws ServletExceptionIOException{
        
        
String email request.getParameter("txtEmail");
        
String pwd request.getParameter("txtPassword");
        
        
Usuario usuario = new Usuario();
        
usuario.setEmail(email);
        
usuario.setpwd(pwd);
        
        
System.out.println("Usuario a validar : " usuario);
        
        
UsuarioBean ubean = new UsuarioBean ();
        
RequestDispatcher rds null;
        
HttpSession session null;
    
        try{     
            
int ulg ubean.login(usuario);
            if (
ulg==-1){
        
rds request.getRequestDispatcher("/log.jsp");
                
request.setAttribute("errorLogin""Correo y/o Contraseña invalido");                
        }else{
            
session request.getSession();
            
rds request.getRequestDispatcher("/log.jsp");
            
session.setAttribute("usuario"usuario);  //Me imprime los mismos datos que abajo.
            
session.setAttribute("imprimedatos"usuario.getIdUsuario()+"<br>"usuario.getNombre()+"<br>"+usuario.getNcontrol()+"<br>"+usuario.getEmail()+"<br>"+usuario.getpwd()+usuario.getMateria1()+"<br>"+usuario.getMateria2()+"<br>"+usuario.getMateria3()+"<br>");
            
           }
        
rds.forward(requestresponse);
        
        } catch (
SQLException e){
            
            
e.printStackTrace();
        }
        
    }
protected 
void doPost (HttpServletRequest requestHttpServletResponse responsethrows ServletExceptionIOException {
            
doGet (requestresponse);
        } 
El problema que tengo es que al llamar session.setAttribute(usuario.getMateria1()); este me retorna nulo y necesito imprimir los datos de la materias en las que esta inscrito el alumno

esto es lo que me imprime

1
Carlos
null
@.com
12345678
null
null
null

Ojala y alguien me pueda ayudar es de vital importancia para mi.
Gracias.
  #2 (permalink)  
Antiguo 22/05/2012, 01:14
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: jsp y servlet manda null

¿Y de donde se supone que recuperas esos datos del usuario? ¿De una llamada a BD? Yo no lo veo por ningún lado.

Veo que creas un usuario nuevo, cubres una serie de datos básicos, pero joer, los atributos no se rellenan por sí sólos a menos que así esté especificado en el código.

Todo lo que no hayas recuperado claro que saldrá null.

Tampoco veo de donde saca lo de Carlos, así que o está creado dentro de la propia clase Usuario o hay otra parte del código que nos estás ocultando.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 22/05/2012, 02:29
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 1 mes
Puntos: 78
Respuesta: jsp y servlet manda null

Hola parisargel,
para poder ayudarte nos hace falta más.

El "Id" y el "Nombre" de donde los sacas? En el Servlet no los setteas en ningún momento y no se ve consulta alguna a una base de datos.

Un saludo!
  #4 (permalink)  
Antiguo 22/05/2012, 02:43
 
Fecha de Ingreso: mayo-2011
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: jsp y servlet manda null

Hola pues es que poner todo el codigo se me hizo demasiado extenso pero en resumidas cuentas si hago una llamada a BD por medio de un procedimiento almacenado en el procemiento recupero los datos de ahí el 1, carlos, @.com y 12345678, que vendrían a ser respectivamente la id de usuario, nombre, correo y password.

Ahora el verdadero problema surge de que ademas de esos datos tengo enlistadas las variables correspondientes a las materias. las cuales estan setteadas en un archivo llamado UsuarioDAOImp de la sig forma:

cstmt.setString(2,usuario.getNombre());
cstmt.setString(3,usuario.getEmail());
cstmt.setString(4,usuario,getMateria1())

Se supone que por medio del Callable Statement recupero los datos, claro que la idea no es hacer magia y tratar de llenar atributos por si solos pero me extraña que si tengo setteados todos los datos solo me devuelva unos cuantos.

Última edición por parisargel; 22/05/2012 a las 02:46 Razón: Ortografia
  #5 (permalink)  
Antiguo 22/05/2012, 03:10
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: jsp y servlet manda null

¿¿¿

cstmt.setString(2,usuario.getNombre());
cstmt.setString(3,usuario.getEmail());
cstmt.setString(4,usuario,getMateria1())

???

Si el statement es el q tiene los datos ¿no sería?:
usuario.setNombre(cstmt.getString(2));
usuario.setEmail(cstmt.getString(3));
usuario.setMateria1(cstmt.getString(4));

Además, tendrás que mirar qué te está recuperando el procedimiento almacenado y que datos tienes en BD.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #6 (permalink)  
Antiguo 22/05/2012, 05:07
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 1 mes
Puntos: 78
Respuesta: jsp y servlet manda null

Cita:
Iniciado por parisargel Ver Mensaje
cstmt.setString(2,usuario.getNombre());
cstmt.setString(3,usuario.getEmail());
cstmt.setString(4,usuario,getMateria1())
Estás setteando 3 cosas en el mismo sitio.

Un saludo
  #7 (permalink)  
Antiguo 22/05/2012, 14:00
 
Fecha de Ingreso: mayo-2011
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: jsp y servlet manda null

Bueno he aqui el codigo de mi DAOImp donde llamo al statement el procedimiento llamado VALIDA_USUARIO es el que me retorna los nulos.

Código PHP:
Ver original
  1. public class UsuarioDAOImp implements UsuarioDAO {
  2.  
  3.     @Override
  4.     public void insertaUsuario (Usuario usuario) throws SQLException{
  5.         Connection conexion = ConexionBD.getConexion();
  6.         CallableStatement cstmt = null;
  7.         String sql = "{call INSERTA_USUARIO(?,?,?,?,?,?,?,?,?,?,?,?,?)}";
  8.        
  9.         try {
  10.             cstmt = conexion.prepareCall(sql);
  11.            
  12.             cstmt.registerOutParameter(1, Types.INTEGER);
  13.             cstmt.setString(2, usuario.getNombre());
  14.             cstmt.setString(3, usuario.getNcontrol() );
  15.             cstmt.setString(4, usuario.getEmail());
  16.             cstmt.setString(5, usuario.getpwd());
  17.             cstmt.setString(6, usuario.getMateria1());
  18.             cstmt.setString(7, usuario.getMateria2());
  19.             cstmt.setString(8, usuario.getMateria3());
  20.             cstmt.setString(9, usuario.getMateria4());
  21.             cstmt.setString(10, usuario.getMateria5());
  22.             cstmt.setString(11, usuario.getMateria6());
  23.             cstmt.setString(12, usuario.getMateria7());
  24.             cstmt.setString(13, usuario.getMateria8());
  25.            
  26.             cstmt.execute();
  27.            
  28.             int idc = cstmt.getInt(1);
  29.             usuario.setIdUsuario(idc);
  30.            
  31.            
  32.         }finally{
  33.             if (cstmt != null) cstmt.close();
  34.             if (conexion != null )conexion.close();
  35.         }
  36.     }
  37.  
  38.     @Override
  39.     public void validaUsuario (Usuario usuario) throws SQLException{
  40.         Connection conexion = ConexionBD.getConexion();
  41.         CallableStatement cstmt = null;
  42.         String sql ="{call VALIDA_USUARIO(?,?,?,?,?,?,?,?,?,?,?,?)}";
  43.        
  44.         try {
  45.            
  46.             cstmt = conexion.prepareCall(sql);
  47.            
  48.             cstmt.setString(1, usuario.getEmail());
  49.             cstmt.setString(2, usuario.getpwd());
  50.             cstmt.registerOutParameter(3, Types.INTEGER);
  51.             cstmt.registerOutParameter(4, Types.VARCHAR);
  52.             cstmt.registerOutParameter(5, Types.VARCHAR);
  53.             cstmt.registerOutParameter(6, Types.VARCHAR);
  54.             cstmt.registerOutParameter(7, Types.VARCHAR);
  55.             cstmt.registerOutParameter(8, Types.VARCHAR);
  56.             cstmt.registerOutParameter(9, Types.VARCHAR);
  57.             cstmt.registerOutParameter(10, Types.VARCHAR);
  58.             cstmt.registerOutParameter(11, Types.VARCHAR);
  59.             cstmt.registerOutParameter(12, Types.VARCHAR);
  60.             cstmt.execute();
  61.            
  62.             int idu = cstmt.getInt(3);
  63.             usuario.setIdUsuario(idu);
  64.             usuario.setNombre(cstmt.getString(4));
  65.             usuario.setMateria1(cstmt.getString(5));
  66.             usuario.setMateria2(cstmt.getString(6));
  67.             usuario.setMateria3(cstmt.getString(7));
  68.             usuario.setMateria4(cstmt.getString(8));
  69.             usuario.setMateria5(cstmt.getString(9));
  70.             usuario.setMateria6(cstmt.getString(10));
  71.             usuario.setMateria7(cstmt.getString(11));
  72.             usuario.setMateria8(cstmt.getString(12));
  73.         }finally{
  74.             if (cstmt != null) cstmt.close();
  75.             if (conexion != null) conexion.close();
  76.         }
  77.     }
  78.  
  79.     public static void main (String[] args){
  80.         UsuarioDAO udao = new UsuarioDAOImp();
  81.         Usuario usuario = new Usuario ("marcos", "12345678", "[email protected]", "12345678", "Matematicas","Español","Quimica","Fisica","Biologia","Ingles","Civismo","Calculo de varias variables");
  82.        
  83.     try {
  84.         udao.insertaUsuario(usuario);
  85.         if (usuario.getIdUsuario()== -1)
  86.             System.out.println("El Usuario no se inserto");
  87.         else
  88.             System.out.println("El Usuario se inserto");
  89.    
  90.     } catch (SQLException e) {
  91.         e.printStackTrace();
  92.        
  93.     }
  94.    
  95.    
  96.     }
  97.    
  98. }

y si el statement fuera el del problema como en el caso que me mencionas Fuzzylog, todos los argumentos regresarían nulos no????
y un agradecimiento a todos por la ayuda prestada hasta el momento :)
  #8 (permalink)  
Antiguo 23/05/2012, 01:41
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: jsp y servlet manda null

Lo primero, si 12345678 es Integer, ¿Por qué lo metes como String?
Lo segundo, revisa el procedimiento almacenado, igual está haciendo algo que no debe.

Con los statements yo suelo usar

cstmt.getString("nombreColumna"); más que cstmt.getString(numColumna);
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #9 (permalink)  
Antiguo 23/05/2012, 02:01
 
Fecha de Ingreso: mayo-2011
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: jsp y servlet manda null

hola Fuzzylog "12345678" no es un integer es una cadena no hago operaciones con ella
y si yo también pienso es el procedimiento pero lo he revisado hasta el cansancio y no encuentro ningún error de echo compila bien.

creo que seguiré intentando Gracias :)
y probare con el nombre de la columna
  #10 (permalink)  
Antiguo 23/05/2012, 09:41
Avatar de liloo6retug  
Fecha de Ingreso: junio-2010
Ubicación: Marsella
Mensajes: 109
Antigüedad: 13 años, 9 meses
Puntos: 11
Respuesta: jsp y servlet manda null

En la base de datos esta completa la información del usuario?
y podrías colocar el código del procedimiento...

Etiquetas: jsp, servlet
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 04:32.