Está en la página 1de 12

GUÍA DE LABORATORIO 2

“Servlet: Funciones extendidas”


Servlet: Funciones extendidas

LABORATORIO

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();


Pág. 1
Servlet: Funciones extendidas

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&param2=ph
p
&param3=net

Pág. 2
Servlet: Funciones extendidas

3. 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>");

4. EJERCICIO: SERVLET DE OPERACIONES ARITMÉTICAS

Pág. 3
Servlet: Funciones extendidas

5. 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>");
}

Pág. 4
Servlet: Funciones extendidas

6. 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>senati</td></tr>");
out.println("</table>");
out.close();
}

• REENVIANDO UNA PETICIÓN


Pág. 5
Servlet: Funciones extendidas

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>senati</td></tr>");
out.println("</table>"); out.close();
}

7. 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);
}

Pág. 6
Servlet: Funciones extendidas

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();
}

8. REDIRECCIONAMIENTO DE SERVLET’S

RedireccionaServlet.java

public void doGet (HttpServletRequest req, HttpServletResponse res) throws
ServletException, IOException {
response.sendRedirect("http://www.cnn.com");
}

9. 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”);
}

10. SERVLETCONFIG: VALORES DE INICIO EN LOS SERVLETS

Pág. 7
Servlet: Funciones extendidas

• 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();
}

Pág. 8
Servlet: Funciones extendidas

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>

Pág. 9
Servlet: Funciones extendidas

11. 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>hamla1@hotmail.com</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();
}

Pág. 10
Servlet: Funciones extendidas

13. EJERCICIO: Escribir un Servlet que recupere los datos del siguiente formulario.

Conclusiones:

En la presente sesión, se detalló los métodos para recuperar la información pasada


desde formularios HTML hacia el Servlet. Luego, se detalló la forma cómo se comunican
los Servlets, usando los ambientes de CONTEXT, SESSION y REQUEST. Finalmente,
se detallaron las interfaces ServletConfig y ServletContext.

|Pag. 11

También podría gustarte