Objetivos:
- Escribir servlets que recuperen datos de formularios.
- Comprender la cooperación entre servlets.
- Comprender la comunicación entre servlets.
- Implementar sesiones HTTP.
Equipos, Materiales, Programas y Recursos:
- PC con Sistema Operativo con soporte a Java.
- IDE para Java
- Navegador Web (recomendable Firefox)
- Contenedor de Servlets (recomendable Tomcat)
Introducción:
Los contenedores de
Servlets son los servidores donde se ejecutarán los Servlets. Los Servlets son
los componentes de Java que se ejecutan en el servidor y construyen páginas
Web. En el presente laboratorio se escribirán los primeros servlets que nos
permitirán conocer su estructura.
Preparación:
El alumno debe haber revisado previamente el texto del
curso, así como también, las presentaciones dadas en la clase de teoría.
Procedimiento y Resultados:
1.
recuperar
parámetros POR POST
ingreso.html
<html>
<body>
<form action="RecuperaPostServlet" method="post">
Nombre : <input name="nombre"
type="text"/>
Apellidos:<input name="apellido"
type="text"/>
<input
type="submit" name="aceptar" value="Aceptar"/>
</form>
</body>
</html>
RecuperaPostServlet.java
…
protected void doPost(HttpServletRequest
request, HttpServletResponse response)
throws ServletException,
IOException {
PrintWriter out =
response.getWriter();
out.println("<html>");
out.println("<body>");
String nom =
request.getParameter("nombre");
String ape =
request.getParameter("apellido");
out.println("Bienvenido "+ nom +" "+ ape);
out.println("</body>");
out.println("</html>");
out.close();
}
...
2.
recuperar
parámetros por GET
RecuperaGetServlet.java
…
protected void doGet(HttpServletRequest
request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("param1: " +
request.getParameter(“param1”));
out.println("param2: " +
request.getParameter(“param2”));
out.println("param3: " +
request.getParameter(“param3”));
out.println("</body></html>");
}
…
Nota: Ejecutar el servlet escribiendo en la
dirección URL:
http://localhost:808_/................../RecuperaGetServlet?param1=java¶m2=php¶m3=net
- servlet de suma
operaciones.html
<html>
<body>
<form
method="post" action="SumaServlet">
Operador 1: <input
type="text" name="operador1" size="4"
maxlength="4"/><br/>
Operador 2: <input
type="text" name="operador2" size="4"
maxlength="4"/><br/>
<input
type="submit" name="operacion" value="Realizar la suma"/>
</form>
</body>
</html>
SumaServlet.java
…
protected void doPost(HttpServletRequest request, HttpServletResponse
response)
throws ServletException,
IOException {
String op1 =
request.getParameter("operador1");
String op2 = request.getParameter("operador2");
double d1 = Double.parseDouble(op1);
double d2 =
Double.parseDouble(op2);
double resultado = d1 + d2;
PrintWriter pw =
response.getWriter();
pw.println("<html><body>");
pw.println("El
resultado es: " + resultado);
pw.println("</body></html>");
}
…
- ejercicio: servlet de operaciones aritméticas
- SERVLET DE ENCUESTA: Recuperando valores múltiples
encuesta.html
<html>
<body>
<h2>Encuesta</h2>
<form action="RecuperaEncuestaServlet"
method="post">
<h4>¿Qué
deportes practicas?</h4>
<input type="checkbox" name="deporte"
value="f"/>Fútbol
<input
type="checkbox" name="deporte"
value="b"/>Basquet
<input
type="checkbox" name="deporte"
value="t"/>Tenis
<h4>¿Qué
sistema operativo conoces?</h4>
<select name="so" multiple>
<option
value="win">Windows
<option value="lin">Linux
<option
value="mac">MacOSX
</select>
<br/>
<input
type="submit" value="Enviar encuesta"/>
</form>
</body>
</html>
RecuperaEncuestaServlet.java
…
protected
void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,
IOException {
PrintWriter out =
response.getWriter();
out.println("<html><body>");
// Recuperando deportes
String[] deportes = request.getParameterValues("deporte");
for(int i=0;
i<deportes.length; i++){
out.println("Te
gusta el " + deportes[i] + "<br/>");
}
// Recuperando sistemas operativos
String[] sos = request.getParameterValues("so");
for(int u=0; u<sos.length; u++){
out.println("Usas " +
sos[u] + "<br/>");
}
out.println("</body></html>");
}
…
- cooperación entre servlet’s
·
incluyendo una petición
PrincipalServlet.java
…
protected void doGet(HttpServletRequest
request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out =
response.getWriter();
out.println("<html><body>");
out.println("<h3>Pagina principal</h3>");
RequestDispatcher rd =
request.getRequestDispatcher("/TablaServlet");
rd.include(request,
response);
out.println("</body></html>");
out.close();
}
…
TablaServlet.java
…
protected void doGet(HttpServletRequest
request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out =
response.getWriter();
out.println("<table
border='1'>");
out.println("<tr><th>Nombre</th><th>Clave</th>");
out.println("<tr><td>drodriguez</td><td>tecsup</td></tr>");
out.println("</table>");
out.close();
}
…
·
reenviando una petición
PrincipalServlet.java
…
protected void doGet(HttpServletRequest
request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out =
response.getWriter();
out.println("<html><body>");
out.println("<h3>Pagina principal</h3>");
RequestDispatcher rd =
request.getRequestDispatcher("/TablaServlet");
rd.forward(request,
response);
out.println("</body></html>");
out.close();
}
…
TablaServlet.java
…
protected void doGet(HttpServletRequest
request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("<table
border='1'>");
out.println("<tr><th>Nombre</th><th>Clave</th>");
out.println("<tr><td>drodriguez</td><td>tecsup</td></tr>");
out.println("</table>");
out.close();
}
…
- comunicaciÓn entre servlet’S
UnoServlet.java
…
protected void doGet(HttpServletRequest
request, HttpServletResponse response) throws ServletException, IOException {
//
Guardando datos en CONTEXT (APPLICATION)
ServletContext sc = this.getServletContext();
sc.setAttribute("curso",
"programacion3");
// Guardando datos en REQUEST
request.setAttribute("ciclo", "quinto");
RequestDispatcher rd =
request.getRequestDispatcher("/DosServlet");
rd.forward(request,
response);
}
…
DosServlet.java
…
protected void doGet(HttpServletRequest
request, HttpServletResponse response) throws ServletException, IOException
{
//
Recuperar el dato del CONTEXT (APPLICATION)
ServletContext sc = this.getServletContext();
String curso =
(String)sc.getAttribute("curso");
//
Recuperar el dato del REQUEST
String ciclo =
(String)request.getAttribute("ciclo");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("El
curso es: " + curso);
out.println("<br/>");
out.println("El ciclo es: " +
ciclo);
out.println("</body></html>");
out.close();
}
…
- redireccionamiento DE SERVLET’S
RedireccionaServlet.java
…
public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
response.sendRedirect("http://www.cnn.com");
}
…
- ENVIANDO CÓDIGOS DE ERROR
EnviaErrorServlet.java
…
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
// Luego probar:
// response.sendError(401);
// response.sendError(403, “Eres un intruso”);
}
…
- Servletconfig: VALORES DE INICIO EN LOS SERVLETS
·
Orden de las etiquetas del web.xml.
<!ELEMENT
web-app (icon?, display-name?, description?, distributable?, context-
param*, filter*,
filter-mapping*, listener*, servlet*, servlet-mapping*,
session-config?,
mime-mapping*, welcome-file-list?, error-page*,
taglib*,
resource-env-ref*, resource-ref*, security-constraint*, login-config?,
security-role*,
env-entry*, ejb-ref*, ejb-local-ref*)>
·
Orden de las etiquetas dentro de <servlet>
<!ELEMENT
servlet (icon?, servlet-name, display-name?,
description?,
(servlet-class|jsp-file), init-param*,
load-on-startup?,
security-role-ref*)>
LeerValoresInicioServlet.java
package lab2.servlets;
…
public void doGet
(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletConfig
config = getServletConfig();
String region =
config.getInitParameter("region");
String limit = config.getInitParameter("limit");
PrintWriter pw = response.getWriter();
pw.println("<html><body>");
pw.println("La
región es: " + region);
pw.println("El límite es: " + limit);
pw.println("</body></html>");
pw.close();
}
…
Agregar
en el web.xml
…
<servlet>
<servlet-name>peru-sales</servlet-name>
<servlet-class>lab2.servlets.LeerValoresInicioServlet
</servlet-class>
<init-param>
<param-name>region</param-name>
<param-value>PERU</param-value>
</init-param>
<init-param>
<param-name>limit</param-name>
<param-value>200</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>usa-sales</servlet-name>
<servlet-class>lab2.servlets.LeerValoresInicioServlet
</servlet-class>
<init-param>
<param-name>region</param-name>
<param-value>USA</param-value>
</init-param>
<init-param>
<param-name>limit</param-name>
<param-value>550</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>peru-sales</servlet-name>
<url-pattern>/VentasPeru</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>usa-sales</servlet-name>
<url-pattern>/VentasUSA</url-pattern>
</servlet-mapping>
- ServletContext - GETrESOURCE()
EnviarPDFServlet.java
…
public
void doGet (HttpServletRequest request, HttpServletResponse response)
throws
javax.servlet.ServletException, java.io.IOException {
response.setContentType("application/pdf");
response.setHeader("Content-Disposition","attachment;
filename=texto.pdf" );
OutputStream
os = response.getOutputStream();
//1K
buffer
byte[]
bytearray = new byte[1024];
ServletContext
context = getServletContext();
URL
url = context.getResource("/texto.pdf");
InputStream
is = url.openStream();
int
bytesread = 0;
while(
(bytesread = is.read(bytearray) ) != -1 ) {
os.write(bytearray, 0, bytesread);
}
os.flush();
is.close();
}
…
12. SERVLETCONTEXT
– GETINITPARAMETER()
Agregar en el web.xml
…
<context-param>
<param-name>autor</param-name>
<param-value>esaavedra@peru.edu.pe</param-value>
</context-param>
…
LeerParametroDelContextServlet.java
…
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
ServletContext sc = getServletContext();
String autor = sc.getInitParameter("autor");
PrintWriter out = response.getWriter();
out.println("El autor es: " +
autor);
out.flush();
}
…
No hay comentarios:
Publicar un comentario