El documento describe un formulario HTML que solicita el nombre de usuario y contraseña de un usuario. Luego, un servlet recupera estos parámetros y los muestra en otra página generada por el servlet. El servlet usa los métodos getParameter de HttpServletRequest para recuperar los valores de los campos del formulario enviados a través del método POST.
1. Servlets que manejan datos de formularios HTML
Formulario HTML que solicita el ingreso del nombre y clave de un usuario.
Posteriormente se recuperan los dos parámetros en un servlet y se muestran
en otra página generada por el servlet.
formulario.html
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Formulario HTML</title>
</head>
<body>
<form method="post" action="ServletRecolector">
<p>Nombre de usuario: <input type="text" name="usuario" size="20" /></p>
<p>Clave: <input type="password" name="clave" size="20" /></p>
<p><input type="submit" value="confirmar" /></p>
</form>
</body>
</html>
2. Codificamos la página html con el formulario web que solicita el ingreso del
nombre de usuario y su clave…
En la propiedad action de la etiqueta form indicamos el nombre del servlet
que recuperará los datos del formulario…
<form method="post" action="ServletRecolector">
ServletRecolector.java
package pkgServForm;
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;
/**
* Servlet implementation class ServletRecolector
*/
@WebServlet("/ServletRecolector")
public class ServletRecolector extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ServletRecolector() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
// TODO Auto-generated method stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head></head>");
out.println("<body>");
out.println("Usuario:"); out.println(request.getParameter("usuario"));
out.println("<br/>Clave:"); out.println(request.getParameter("clave"));
out.println("</body>");
out.println("</html>");
}
}
3. En la clase ServletRecolector implementamos todo el código en el método
doPost, ya que este se ejecuta cuando se envían los datos de un formulario
HTML mediante post:
<form method="post" action="ServletRecolector">
Para recuperar los datos de los controles text y password del formulario HTML
el objeto request de la clase HttpServletRequest dispone de un método llamado
getParamenter indicándole el nombre del control a recuperar:
request.getParameter("usuario");
request.getParameter("clave");
Del objeto response de la clase HttpServletResponse obtenemos un objeto
PrintWriter (mediante su método getWriter) usado para enviar la salida de
vuelta al cliente (navegador).
PrintWriter out = response.getWriter();
out.println(request.getParameter("clave"));
Resultado de la ejecución…
4. Ejemplo02: Servlet que maneja parámetros enviados por POST desde un form que
contiene controles de tipo select (cuadro combinado), text (caja de texto),
checkbox (se pueden marcar varias opciones), radio (excluyente, sólo se puede
seleccionar una opción).
El resultado de la ejecución sería…
El servlet recupera los parámetros enviados desde el form y los muestra en
otra página html que envía al cliente.
Estructura de directorios y archivos en el proyecto web dinámico en Eclipse.
6. ServletRecolector.java
package pkgServletForm;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ServletRecolector
*/
@WebServlet("/ServletRecolector")
public class ServletRecolector extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
// TODO Auto-generated method stub
ServletOutputStream out = response.getOutputStream();
response.setContentType("text/html");
out.println("<html><head><title>Basic Form Processor Output</title></head>");
out.println("<body>");
out.println("<h1>Here is your Form Data</h1>");
//Opción elegida en el cuadro combinado (tratamiento)
out.println("Your title is " + request.getParameter("title"));
//Parámetros nombre, ciudad, pais y teléfono (individuales text)
out.println("<br>Your name is " + request.getParameter("name"));
out.println("<br>Your city is " + request.getParameter("city"));
out.println("<br>Your country is " + request.getParameter("country"));
out.println("<br>Your tel is " + request.getParameter("tel"));
// extracting data from the checkbox field (checkbox intereses)
String[] interests = request.getParameterValues("interests");
if(interests!=null){
out.println("</br>Your interests include<ul> ");
for (int i=0;i<interests.length; i++) {
out.println("<li>" + interests[i]);
}
out.println("</ul>");
}else{
out.println("<p>No tiene aficiones...</p>");
}
//Opción elegida (edad radio)
out.println("<br>Your age is " + request.getParameter("age"));
out.println("</body></html>");
}
}
7. getParameterValues
public java.lang.String[] getParameterValues(java.lang.String name)
Returns an array of String objects containing all of the values the
given request parameter has, or null if the parameter does not exist.
If the parameter has a single value, the array has a length of 1.
Parameters:
name - a String containing the name of the parameter whose value is
requested
Returns:
an array of String objects containing the parameter's values
getParameter
public java.lang.String getParameter(java.lang.String name)
Returns the value of a request parameter as a String, or null if the
parameter does not exist. Request parameters are extra information
sent with the request. For HTTP servlets, parameters are contained in
the query string or posted form data.
You should only use this method when you are sure the parameter has
only one value. If the parameter might have more than one value, use
getParameterValues(java.lang.String).
If you use this method with a multivalued parameter, the value
returned is equal to the first value in the array returned by
getParameterValues.
If the parameter data was sent in the request body, such as occurs
with an HTTP POST request, then reading the body directly via
getInputStream() or getReader() can interfere with the execution of
this method.
Parameters:
name - a String specifying the name of the parameter
Returns:
a String representing the single value of the parameter