Error JSP y Servlets.

_kRuStY_

Pues eso, estoy haciendo una aplicacion con JSP y servlets y me da el siguiente error: "java.lang.IllegalStateException: PWC1227: No se puede reenviar después de que la respuesta haya sido confirmada".

Segun he mirado por internet, se porque hay alguna salida antes de hacer el forward al .jsp, xo no tngo ningun out ni nada.

¿Alguien sabe que puede ser?

Muchas gracias ^^

IAF

Y no sera eso ? que tienes q hacer el out.close() ?
ya ni me acuerdo xD

Debajo de todo el error entre todas las lineas q te deberían salir no da una mínima pista de que linea falla ?

_kRuStY_

ajjaja que va, todo lo contrario, la cosa es que no puede haber "outs" creo. Si hay una pista, me marca un forward, pero esque antes de ese forward no escribo nada de nada! de hecho no tengo ni declarado un "out"

IAF

Lo mejor seria q copiaras el servlet aquí por si alguien mas experimentado se pasa xD

bLaKnI

A saber que estas haciendo para que te salga un error así... xD

Esque os complicais la vida con ganas macho!
Sacais los errores que alguien un dia decidió de ponerle un handler "por si acaso", de los que "pero nunca pasaran", y vosotros los sacais! xDD

Puedes poner porfavor el trocito de codigo donde te sucede dicha cosa rara?
Trabajas en netbeans? Eclipse?

El error sucede en el servlet o en un jsp?

_kRuStY_

Utilizo netBeans.

Tengo un servlet de inicio que utilizo para comprobar el usuario y contraseña en una base de datos:

// Comprobacion de los datos del usuario
            if (usuario != null && clave != null) {

            boolean logOk = catalogo.comprobarLog(usuario, clave);

            // Si los datos son validos
            if (logOk) {

                // Log de autenticacion correcta
                addLog(usuario, "se autentico correctamente.", -1);

                // Creamos la cookie con la informacion
                Cookie c = new Cookie("usuario", usuario);
                response.addCookie(c);

                // Creamos la nueva sesion y vamos a la pagina "creaincidencia"
                HttpSession session = request.getSession(true);
                session.setAttribute("usuario", usuario);
                RequestDispatcher creaincidencia = getServletContext().getRequestDispatcher("/creaincidencia");
                creaincidencia.forward(request, response);

            } else {

                // Log de fallo en la autenticacion
                addLog(usuario, "fallo en la autenticacion", -1);

                RequestDispatcher error = getServletContext().getRequestDispatcher("/inicio.jsp");
                error.forward(request, response);

            }

        } // Creacion del formulario de entrada de datos
        else {
            RequestDispatcher inicioform = getServletContext().getRequestDispatcher("/inicio.jsp");
            inicioform.forward(request, response);
        }

Introduzco el usuario y contraseña correcta, por lo que voy al servlet "creaincidencia" y cuando hago cualquier accion alli, salta este error y el netbeans me indica el forward que hay en el ultimo else, el de //Creacion del formulario...Pero no entiendo porque...Por esa parte de codigo entra la primera vez para ir al jsp que muestra el formulario para rellenar los datos del usuario.

Muchas gracias

Dod-Evers

Una cosa, si tienes el usuario en sesión por qué lo metes en la cookie también?

Es sólo por tocar lo que está detrás o debajo de algo que mide 35...

bLaKnI

Te aconsejo que ya que trabajas con Session, te olvides del RequestDispatcher y uses el sendRedirect.

response.sendRedirect("dondequieras.jsp"); //sin la "/"

Cuando he visto el codigo, lo primero que he pensado es "peta en el ultimo if, fijo!", luego te he leído y voilà! Ahora, no me preguntes exactamente porque peta ahí, ya que me falta ver mas cosas.
Creo que tienes una redireccion en algun sitio no controlada, que provoca que vuelvas al Servlet teniendo uno de los dos campos a null, y por eso entras ahí, cuando no deberias.

Así a pelo, me es dificil verlo. Tendria que debugarlo xD
Pero haz la prueba de trabajar con los sendredirect.
ubstituye todo el trozo del requestDispatcher i el forward, por solo eso, response.sendRedirect(JSP).

Prueba a ver.

_kRuStY_

Ya si tiene pinta de que la estoy liando en un forward posterior. Bueno preguntare al profesor a ver si puedo utilizar lo que me has dicho y si no...si hace falta te mando el proyecto entero e! xD.

Muchas gracias por contestar.

_kRuStY_

Ya solucione el error. Habia un momento que entraba en dos forward() y daba el error, pero esque tenia un mal concepto del forward, no sabia que seguia ejecutando codigo y por eso lo implemente mal. Gracias por las respuestas de todas maneras.

Lo de la sesion y la cookie...La variable de sesion la utilizo para coger el usuario cuando lo necesite, y la cookie la necesito por si se abre una nueva ventana no tener que preguntar al usuario su nombre y contraseña. ¿Esta mal implementado? ¿Son incompatibles? Esque estoy empezando en estos mundillos y muchas cosas se me escapan.

Muchas gracias :D

Usuarios habituales

  • _kRuStY_
  • bLaKnI
  • Dod-Evers
  • IAF