Ayuda con Servlet

Iniciado por pequezere, 12 Abril 2012, 14:49 PM

0 Miembros y 1 Visitante están viendo este tema.

pequezere

Hola

El caso es que llevo un tiempo atascado con un ejercicio y no soy capaz de resolverlo, a ver si alguien me puede ayudar.

Tengo que crear un único servlet que cuando recibe una petición busca en la sesión un atributo llamado color y y, si existe, lo establece de color de fondo. Además, tiene que construir un formulario con un select de cuatro colores y un botón de submit. Al hacer el submit se reenvía la petición al mismo servlet que almacena el valor del select en la sesión.

Para el formulario tengo el siguiente html:
Código (html4strict) [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
 <TITLE>Colores</TITLE>
</HEAD>

<BODY BGCOLOR="#FDF5E6">
<H1 ALIGN="CENTER">Colores</H1>

<FORM ACTION="color" METHOD="get">
<table>

<td>Elija un color de fondo:</td>
<td><INPUT TYPE="RADIO" NAME="nombreColor" VALUE="Rojo">Rojo<BR>
 <INPUT TYPE="RADIO" NAME="nombreColor" VALUE="Azul">Azul<BR>
 <INPUT TYPE="RADIO" NAME="nombreColor" VALUE="Amarillo">Amarillo<BR>
 <INPUT TYPE="RADIO" NAME="nombreColor" VALUE="Verde">Verde</td>
<tr>
</tr>

</table>
 <CENTER>
   <INPUT TYPE="SUBMIT" VALUE="Aceptar">
 </CENTER>
</FORM>

</BODY>
</HTML>


Y para el servlet en sí, esta estructura:
Código (java) [Seleccionar]
import java.io.*;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.http.*;
import java.lang.*;


public class Color extends HttpServlet implements Servlet {
   public void doGet (HttpServletRequest request,
                       HttpServletResponse response)
   throws ServletException, IOException {
     
   response.setContentType("text/html");
   PrintWriter out = response.getWriter();    

   out.println( "Color seleccionado" );
out.println
 }  
}


El problema es que he leído sobre el tema en manuales y webs varios (incluyendo códigos de ejemplo) y no consigo entender como hacer lo que me pide el enunciado. Si alguien me lo pudiera explicar se lo agradecería muchísimo.

pequezere

No sé si me expliqué bien. Creo que lo que debo hacer es reescribir la URL en función de lo seleccionado en el formulario del html, pero no se como hacerlo.

pequezere

Hola

He conseguido que me funcione con el siguiente código:
Código (java) [Seleccionar]
import java.io.*;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.http.*;
import java.lang.*;

public class Color extends HttpServlet implements Servlet {
    String color;
    public void doGet (HttpServletRequest request,
       HttpServletResponse response)
throws ServletException, IOException {

color=request.getParameter ("nombreColor");

response.setContentType ("text/html");
PrintWriter out = response.getWriter ();

out.println ("<html>");
out.println ("<body bgcolor=/"+color+">");
out.println ("<h1>");
out.println ("Ha seleccionado el color "+color+"");
out.println ("</h1>");
out.println ("</body>");
out.println ("</html>");
    }
}


Sin embargo, al cambiar el color de fondo no coincide con el seleccionado ¿alguien me podría explicar por qué me ocurre esto? (el formulario no lo he modificado.
Gracias

Gallu

Le estás pasando el color en castellano , creo que ese es el problema, mejor si le asignas los colores en inglés o en RGB ...

Por otro lado , el enunciado dice que debes mirar si existe el atributo en la session, no en la request , con lo cual entiendo que lo que debes de hacer es lo siguiente :

1.- Recoger el parámetro de la request.
2.- Buscar en la session por el atributo buscado, y si existe, cambiar el color basándose en lo que recibes en la request.

Espero haberte ayudado.
Saludos.
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.

pequezere

CitarLe estás pasando el color en castellano , creo que ese es el problema, mejor si le asignas los colores en inglés o en RGB ...
También probé y no funcionaba, al parecer el problema era la / de ("<body bgcolor=/"+color+">");

De todas formas muchas gracias por tu ayuda :)

Dejo el código corregido por si a alguien más le sirve:
Código (java) [Seleccionar]
import java.io.*;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.http.*;
import java.lang.*;

public class Color extends HttpServlet implements Servlet {
    public void doGet (HttpServletRequest request,
       HttpServletResponse response)
throws ServletException, IOException {

String color=request.getParameter ("nombreColor");


response.setContentType ("text/html");
PrintWriter out = response.getWriter ();

out.println ("<html>");
out.println ("<head>");

out.println ("</head>");
out.println ("<body bgcolor="+color+">");
out.println ("<h1>");
out.println ("Ha seleccionado color");
out.println ("</h1>");
out.println ("</body>");
out.println ("</html>");
    }
}