
Marco Godinez
PreguntaTengo una duda, si vuelvo a declarar un dispatcher como en esta linea
RequestDispatcher dispatcher = request.getRequestDispatcher(“Welcome.jsp”);
se instancia un nuevo objeto, es decir se crea una copia que vuelve a ocupar otro espacio en memoria?, o solo hace referencia al que ya se había creado?
Igualmente comparto mi solución:
Login l = new Login(request.getParameter("name"), request.getParameter("password")); String redirectTo = l.authenticated() ? "welcome.jsp" : "error.jsp"; request.getRequestDispatcher(redirectTo).forward(request, response);

Dario Alejandro Tabares Diaz
Tienes errores de sintaxis:
no estas usando llaves "{}" estas usando "[]"
son distintos y no pongas ";" en los else

Andres Giacosa
No se si entendí bien tu pregunta dado a que compartiste una solución al final que no tiene que ver con la pregunta en si…
Voy a tratar de contestar lo que interpreto siendo literal con lo que preguntaste: no vas a poder declarar 2 objetos “dispatcher” (no en el mismo bloque de construcción, o bloque anidado). Solo tendrás un único objeto con el nombre “dispatcher”, puedes crear nuevos objetos de tipo RequestDispatcher pero deberán tener otro nombre y éstos como bien dices serán una nueva instacia del objeto RequestDispatcher.
Si declaras muchos objetos RequestDispatcher y los inicializas con los mismos datos seran instancias diferentes de objetos iguales que estarán en memoria.
Espero haber podido ayudarte, si no era lo que tratabas de preguntar ayúdame a entender tu pregunta. Saludos!