Si el tema de los atributos de peticion no te ha quedado claro, aqui veremos un ejemplo de un ejercicio donde utilizaremos estos atributos, entonces veras como funcionan.
En este ejercicio, tambien aprenderas algo nuevo en el lenguage HTML, que son las "Listas desplegables" y los "Botones de radio". Con ver el codigo del HTML, entenderas enseguida como funcionan. Nosotros, no profundizamos mucho en el lenguage HTML, porque esto seria otro cursillo, nos centraremos en el codigo JAVA.
Crea un nuevo proyecto web y llamalo "TemaAtributos", utiliza el servidor que quieras, tanto "Glassfish" como "Tomcat", yo utilizo Tomcat.
Ahora, crea una pagina html llamada "inicio.html" y escribe el siguiente codigo:
<!DOCTYPE HTML>
<html>
<head>
<title>Pagina de inicio</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<form action="Aduana" method="post">
<table align="center" border="1">
<tr>
<td align="center" colspan="2" bgcolor="AABBFF">
<h2>Tablas de multiplicar</h2>
</td>
</tr>
<tr bgcolor="orange">
<td align="right"><b>Numero:</b></td>
<td>
<select name="listaTabla">
<option value="0" selected>Elige una tabla</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</td>
</tr>
<tr>
<td align="right" colspan="2">
<font color="gray">Elige un color para la tabla</font>
<hr/>
Negro<input type="radio" name="color" value="gray" checked="checked"/><br/>
Rojo<input type="radio" name="color" value="red"/><br/>
Verde<input type="radio" name="color" value="green"/><br/>
Azul<input type="radio" name="color" value="#AABBFF"/><br/>
Naranja<input type="radio" name="color" value="orange"/>
</td>
</tr>
<tr>
<td align="center" colspan="2" bgcolor="AABBFF">
<input type="submit" value="Crear"/>
<input type="reset" value="Borrar"/>
</td>
</tr>
</table>
</form>
</body>
</html>
Lo que te he marcado en rojo, es lo nuevo en HTML.
Ahora crea un Servlet llamado "Aduana" y escribe el siguiente codigo:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.RequestDispatcher;
@WebServlet(urlPatterns = {"/Aduana"})
public class Aduana extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;Charset=UTF-8");
PrintWriter salida = response.getWriter();
RequestDispatcher rd = null;
int num = Integer.parseInt(request.getParameter("listaTabla"));
if(num!=0){
rd = request.getRequestDispatcher("/Tablas");
}else{
String mensaje = "No has elegido ninguna tabla. Elige una tabla por favor.";
request.setAttribute("mensajeError", mensaje);
rd = request.getRequestDispatcher("/Error");
}
rd.forward(request, response);
salida.close();
}
}
Hemos utilizado la formula del "Reenvio" que hemos estudiado en los temas anteriores utilizando el metodo "RequestDispatcher".
Marcado en otro color, tienes el atributo de peticion que hemos creado llamado "mensajeError".
Ahora, creamos otro Servlet llamado "Error" y escribimos su codigo:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns = {"/Error"})
public class Error extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;Charset=UTF-8");
PrintWriter salida = response.getWriter();
String mensajeServidor = (String)request.getAttribute("mensajeError");
salida.println("<html><head><title>Error</title></head><body>");
salida.println("<center><h2>Mensaje del Servidor</h2><hr/>");
salida.println("<font color='red'><h3>"+mensajeServidor+"</h3></font>");
salida.println("<a href='inicio.html'>Volver</a></center>");
salida.println("</body></html>");
salida.close();
}
}
En el Servlet "Error", hemos recuperado el atributo de peticion, pero tenemos que saber, que este atributo lo podemos recuperar en cualquier Servlet.
Ahora para terminar, creamos el ultimo Servlet llamado "Tablas" y en el, escribiremos el siguiente codigo:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns = {"/Tablas"})
public class Tablas extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;Charset=UTF-8");
PrintWriter salida = response.getWriter();
int num = Integer.parseInt(request.getParameter("listaTabla"));
String color = request.getParameter("color");
salida.println("<html><head><title>Tablas</title></head><body>");
salida.println("<center><h2>Tabla de multiplicar del "+num+"</h2></center>");
salida.println("<hr/>");
salida.println("<table align='center' border='1'>");
for(int i=1; i<=10; i++){
salida.println("<tr bgcolor='"+color+"'>");
salida.println("<td>"+num+" x "+i+"</td>");
salida.println("<td>"+(num*i));
salida.println("</td></tr>");
}
salida.println("</table>");
salida.println("<hr/><br/><center><a href='inicio.html'>Volver</a></center>");
salida.println("</body></html>");
salida.close();
}
}
Como has podido comprobar, el color lo conseguimos creando una variable tipo String y asignandoler el valor que obtenemos en los botones de radio por medio de "value=". Lo mismo ocurre con las listas, obteniendo el valor por medio de "value=".
Crea tu mismo ejercicios donde trabajes los atributos de peticion y al final te daras cuenta de lo utiles que son.