2
« en: Jueves 31 de Marzo de 2005, 13:04 »
Saludos a todos,
Tengo un inconveniente con un servlet, cuando hago un forward para ir a otra página me lanza una NullPointerException y la verdad le he dado vueltas y nada de nada no ubico el problema.
Este servlet lo que hace es utilizar un bean para verificar si un usuario existe y dar error si no existe o por el contrario crearle una sesión en caso de existir, el problema es que al realizar el forward a un jsp ubicado en un directorio llamado jso dentro de la aplicación me lanza una excepcion, les dejo el código del servlet e indico con comentarios donde se produce el error para que lo vean con mayor facilidad:
package registro.servlets;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpSession;
import registro.beans.ConnectionHelper;
import registro.beans.UsuariosHelper;
import registro.clases.Usuarios;
public class VerificacionUsuario extends HttpServlet {
public void doPost(
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
throws javax.servlet.ServletException, java.io.IOException {
Usuarios user = new Usuarios();
user.setIdUsuario(request.getParameter("idUsuario"));
user.setPassword(request.getParameter("password"));
try{
UsuariosHelper userHelp = new UsuariosHelper();
userHelp.setUser(user); //Seteamos el objeto usuario de la clase Helper
user = userHelp.buscarUsuario(); //Buscamos el usuario en la base de datos
if(user != null){
//El usuario existe ahora debemos comprobar si tiene o no acceso a la aplicación
/* Esto esta comentado ya que aun no conozco el parametro a comprobar
habria que verificar si el usuario está activo y ademas si tiene acceso a la
aplicacion Registro de Ordenes*/
//Si al final de las comprobaciones el usuario es correcto le creamos una sesión
HttpSession session = request.getSession(true); //Creamos la nueva session
/*Le colocamos el objeto user a la session asi nos aseguramos de que tendremos disponible
los datos que necesitemos de el mismo en cualquier momento*/
session.setAttribute("user", user);
//realizamos un forward a la pagina de seleccion de centro directivo
ServletContext context = getServletContext();
RequestDispatcher rd = context.getRequestDispatcher("/jsp/selecCentro.jsp");
System.out.println(context.getRealPath("/jsp/selecCentro.jsp"));
System.out.println(context.toString());
//rd.include(request, response);
rd.forward(request, response);
}
else{
//en el caso de que el usuario o el password sean incorrectos
throw new Exception("El usuario y/o el password son incorrectos");
}
}catch(Exception ex){
//Si ocurre alguna excepcion debemos enviar el mensaje a una pagina de error adecuada
RequestDispatcher rd = request.getRequestDispatcher("/jsp/error.jsp");
//Seteamos el mensaje de error
String title = "Error de búsqueda de usuario";
String msg = "Imposible encontrar el usuario";
//Agregamos el mensaje que proviene de la Exception que se disparo
String exMsg = ex.getMessage();
//Establecemos una url de vuelta a la página anterior para el usuario
String backUrl = "login.jsp";
String urlName = "Login";
this.log(ex.toString()); //Generamos log en el servidor
ex.printStackTrace(); //para visualizar la traza de la excepción en consola
//Seteamos los atributos
request.setAttribute("title", title);
request.setAttribute("msg", msg);
request.setAttribute("exMsg", exMsg);
request.setAttribute("backUrl", backUrl);
request.setAttribute("urlName", urlName);
rd.forward(request, response); //Justo en esta linea es disparado el error
}
}
public void doGet(
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
throws javax.servlet.ServletException, java.io.IOException {
}
}
Hice pruebas de imprimir la ruta a ver si era eso pero al parecer esta perfecta la ruta que me arroja por consola es...
C:\Archivos de programa\Apache Tomcat 4.0\webapps\RegistroOrdenes\jsp\selecCentro.jsp
Si alguien me puede dar una luz con esto le estare muy agradecido....
Saludos.-