Sei sulla pagina 1di 29

Programación JSP y Servlets POO

PROGRAMACION JSP - SERVLETS

Problema 01

Crear un JSP, al que llamara Facturar :

El objetivo del JSP será dentro de un formulario pedir el precio y la cantidad de una venta y al
hacer clic sobre un botón, mostrar sobre un textarea el monto a pagar :

El ingreso de datos (“text”) se realiza con con<input type=”text”, como se ve en el ejemplo :

Digitar precio : <input type="text" name="precio"><br>

Ing. Juan Vera Castillo Página 1


Programación JSP y Servlets POO

Para recuperar un parámetro enviado, apelamos al objeto request y al su método


getParameter(name del <input type=”text” name=”precio”>). Por ejemplo :

Stringsprec = request.getParameter("precio");

El formulario solo lleva el método de envio (“post”) y no action, debido a que la acción se
realizara en el mismo JSP y no se llamara a otra pagina.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Pagina JSP de Facturacion</title>
</head>
<body>
<form method="post" >
Digitarprecio : <input type="text" name="precio"><br>
Digitarcantidad : <input type="text" name="cantidad"><br>
<input type="submit" value="Facturar"><br>
<textarea rows= 10 cols=20>
<% if(request.getParameter("precio") != null &&
Request.getParameter("cantidad") != null)
{
String sprec = request.getParameter("precio");
intprec = Integer.parseInt(sprec);
String scant = request.getParameter("cantidad");
intcant = Integer.parseInt(scant);
intmonto = prec * cant;
String linea = "El monto a pagares : "+ monto;
out.println(""+linea);
}
%>
</textarea>
</form>
</body>
</html>

Problema 02

Crear el proyecto proyInforma. En el JSP index.jsp, colocar un hipervinculo, con el texto


“Llamar a Servlet de informacion” para ejecutar un Servlet que llamara InfoServlet.java

Ing. Juan Vera Castillo Página 2


Programación JSP y Servlets POO

A continuación el JSP index.jsp :

El ServletInfoServlet mostrara la direccióndel JSP “remoto” , tal como se ve en la siguiente


figura :

Como sabemos todos los servlets reciben como parámetros dos objetos :
request de la clase HttpServletRequest
response de la clase HttpServletResponse

El objeto request entre otras cosas contiene la dirección del programa llamante y para acceder
a esta información se utiliza uno de sus métodos :getRemoteAddr()

Entonces el código del servlet seria:


Después de haber quitado los tags de comentario :

protected void processRequest(HttpServletRequestrequest, HttpServletResponse


response) throws ServletException, IOException
{ Obteniendo la
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter(); dirección del JSP
try
{
String dirCliente = request.getRemoteAddr();
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet de Informacion</title>");
out.println("</head>");
out.println("<body>");
out.println("<h2>Direccion del cliente = " + dirCliente+"</h2>");
out.println("</body>");
out.println("</html>");
} finally
{ mostrandola dirección
out.close();
} del JSP
}

Ing. Juan Vera Castillo Página 3


Programación JSP y Servlets POO

protected void doGet(HttpServletRequestrequest, HttpServletResponseresponse)


throwsServletException, IOException
{
processRequest(request, response);
}

protected void doPost(HttpServletRequestrequest, HttpServletResponseresponse)


throwsServletException, IOException
{
processRequest(request, response);
}

Como se ve cualquiera sea el método de llamada utilizado, en Netbeans, los métodos doPost y
doGet siempre llaman al método processRequest()

Problema 03

Crear un servlet, tal que muestre


su localización en el sistema :
Solucion

Esto se logra utilizando el objeto request y su método getContextPath ()


Veamos el código del servletsolicitado :
public class ServletContextPath extends HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse


response)throws ServletException, IOException
{
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try
{
out.println("<html>");out.println("<head>");
out.println("<title>ServletServletContextPath</title>");
out.println("</head>"); out.println("<body>");
out.println("<h2>Ubicación del servlet : " +
request.getContextPath () + "</h2>");

out.println("</body>");
out.println("</html>");
} finally
{
out.close();
}

Ing. Juan Vera Castillo Página 4


Programación JSP y Servlets POO

Problema 04

Escribir el JSP para lograr la siguiente salida

<html>
<body>
<%
for (int i=1;i <= 10;i++)
{
out.print("==>"+ i + "<br>");
}
%>
</body>
</html>

Problema 05

Generar aleatoriamente 10 números


random entre 0 y 9 y se muestren
estos números en una tabla
indicando si el número impreso es
par o impar.

<body>
<table border=1>
<tr>
<td>Numero</td>
<td>Tipo de numero</td>
</tr>
<%
int i,n;
String obs;
for(i=1;i<=10;i++)
{
n = (int)(Math.random()*10);
if(n%2==0)
obs="Par";
else
obs="Impar";

out.print("<tr>");
out.print("<td>"+ n +"</td>");
out.print("<td>"+ obs+"</td>");
out.print("</tr>");
}
%>
</table>
</body>

Ing. Juan Vera Castillo Página 5


Programación JSP y Servlets POO

Problema 06

Mostrar en una tabla los


códigos y las fotos de
tres personas :

<body>
<table border=1>
<tr>
<td>Codigo</td>
<td>Foto</td>
</tr>
<%
int i,n;
String cod[]=new String[5];
cod[0]="A001";
cod[1]="A002";
cod[2]="A003";
cod[3]="A004";
cod[4]="A005";
for(i=0;i<Cod.length;i++)
{
%>
<tr>
<td><%=cod[i]%></td>
<td><img src="fotos/<%=cod[i]%>.jpg" width=60 eight=60></td>
</tr>
<% fotos es una carpeta que se debe crear
}
%> dentro del proyecto (en el WebPages)
</table>
</body>
</html>

Problema 07

Crear un JSP que pida un


numero y muestre la tabla
de multiplicar
correspondiente :

Ing. Juan Vera Castillo Página 6


Programación JSP y Servlets POO

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Pagina JSP : Tabla</title>
</head>
<body>
<form method="get" >
Numero de Tabla de multiplicar :<input type="text" name="numTabla"><br>
<input type="submit" value="Mostrar tabla de multiplicar"><br><br>
Tabla de Multiplicar<br>
=====================================<br>
<textarea rows= 15 cols=30>
<% if(request.getParameter("numTabla") != null)
{
String snumTabla = request.getParameter("numTabla");
intnTab = Integer.parseInt(snumTabla);
String linea="";
for(inti=1; i<=12; ++i)
{
linea= linea +nTab+ " x "+i+" = "+ (nTab*i)+"\n";
}
out.println("\n"+linea);
}
%>
</textarea>
</form>
</body>
</html>

Problema 08

Para mostrar en pantalla, alineado a lado izquierdo un video, ubicar dentro del body del JSP :

<div style="position:absolute;left:50;top:50;">
<embed src="videos/navidad.wmv" width=450 height=350>
<br>
<center>
<font face="verdana" size="5">Terminator biblico</font>
</center>
</embed>
</div>

Ing. Juan Vera Castillo Página 7


Programación JSP y Servlets POO

También se puede cargar un video con <A href ….>

<body>
<p>
<A href="videos/navidad.wmv">Cargar video Terminator biblico</A>
</p>
</body>

Contextuar la ruta de la aplicación


Para que un JSP llame a otra aplicación, por ejemplo un servlet, usamos :
<form method="post" action="http://localhost:14267/proyServlet1/Servlet05">

En su lugar podriamosusar : request.getContextPath()


<form method="post" action="<%=request.getContextPath()%>/Servlet05">

Que una aplicación envie de retorno una respuesta


Si deseamos que un servlet retorne una respuesta, primero preparamos la respuesta :

intsum = n1+n2; Objeto a enviar


Stringlinea = "La suma es "+ sum;

request.setAttribute("suma", linea); // etiqueta, objeto

Después, procedemos a escribir el mecanismo de retorno al JSP : JSP de destino

getServletContext().getRequestDispatcher("/prog03.jsp").forward(request, response);

Que un JSP reciba la respuesta de un servlet


Se usa el método getAttribute() :

String resultado = request.getAttribute("suma").toString();

Problema 05
Construir un JSP para pedir dos números, los cuales se enviaran al servlet05,
el cual calculara la suma y lo devolverá al JSP para que lo imprima.

Codigo del JSP y del Servlet : JSP : prog03.jsp


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Programa principal: prog03.jsp</title>
</head>
<body>
<form method="post" action="<%=request.getContextPath()%>/Servlet05">
Numero 1 : <input type="text" name="num1"><br>
Numero 2 : <input type="text" name="num2"><br>
<input type="submit" value="Calcular la suma"><br>
Servlet llamado

Ing. Juan Vera Castillo Página 8


Programación JSP y Servlets POO

<textarea rows= 10 cols=30>


<%
if(request.getAttribute("suma")!= null)
{
resultado =
"\n"+(String)request.getAttribute("suma")+"\r";
out.print(resultado);
}
%>
</textarea>
</form>
</body>
</html>

Servlet :Servlet05.java

importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;

Como se observa este servletno posee


interfaz grafica, solo procesa y retorna
public class Servlet05 extends HttpServlet
un resultado.
{

protected void processRequest(HttpServletRequest request,


HttpServletResponse response)throwsServletException, IOException
{
int n1 = Integer.parseInt(request.getParameter("num1"));
int n2 = Integer.parseInt(request.getParameter("num2"));
int r = n1+n2;
Stringlinea = "La suma es "+ r;
request.setAttribute("suma", linea); // etiqueta, objeto
getServletContext().getRequestDispatcher("/prog03.jsp").
forward(request, response);
}

Tags para incrustar codigo Java en JSP

Son tres :

De declaracion
De expression
scriplets

Ing. Juan Vera Castillo Página 9


Programación JSP y Servlets POO

tag de declaracion ( <%! . . . %>)


se usa para declarer y/o inicializar variables incluyendo funciones

<%!
Date fecha = new Date();
Date getFecha()
{
return fecha;
}
%>

tag de expresion ( <%= . . . %>)


<%!
int num = 8;
%>

<%!
int getCuadrado(int n)
{
return n*n;
}

%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>

El cuadrado de <%=num%> es <%=getCuadrado(num)%><br>


<body>
<html>

scriptlets ( <% . . . %>)


Se usa para añadir codigo de ejecucion al JSP

Ing. Juan Vera Castillo Página 10


Programación JSP y Servlets POO

JSP
Directivas JSP
La directriz JSP configuran la generación de código que ejecutara el contenedor al
crear un servlet. Son utilizadas para establecer valores globales tales como
declaraciones de clase, método a implementar, tipo de contenido de salida, etc., y
no producen ninguna salida para el cliente. Las directrices tienen alcance para el
total de la pagina JSP ; en otras palabras, una directriz afecta a toda la pagina JSP
pero solo a esa pagina.Las directrices comienzan con <%@ y finalizan con %> y
la sintaxis general es :

<%@ nombreDirectiva atributo=”valor” atributo=”valor” %>

Hay tres directivas principales que pueden ser utilizadas en un JSP:

 La directriz page
 La directriz include
 La directriz taglib

La directriz page
La directiva page nos permite definir uno o más de los siguientes atributos
sensibles a las mayúsculas.
Esto nos permite especificar
los paquetes que deberían ser
importados

<%@ page import = “java.lang.Math” %>


indica que la variable predefinida
session (del tipo HttpSession)
debería unirse a la sesión existente si
existe una.

Esto especifica el tamaño del buffer


para el JSP Writerout. El valor por
defecto es específico del servidor,
debería ser de al menos 8kb.

True indica que el buffer debe


descargarse cuando este lleno.

Especifica la página de error que será


invocada en caso de producirse una
excepción durante la ejecución del
JSP.

Ing. Juan Vera Castillo Página 11


Programación JSP y Servlets POO

Indica si la página actual, actúa o no


como página de error de otra página
JSP. El valor por defecto es false.

Problema 06

Crear un JSP para formatear el número


98756123.7579 con comas y 2 decimales de
aproximación. Además formatear la fecha
actual obtenida con el método Date().
Utilizar las directivas page para importar las
librerías Java necesarias.

Las directivas <%@page import


<%@page import="java.util.Locale"%>
<%@page import="java.text.NumberFormat"%>
<%@page import="java.text.DecimalFormat"%>

<%@page import="java.util.Date"%>
<%@page import="java.text.SimpleDateFormat"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head> Un número cualquiera
<body>
<h3><b>FormateandoNumero</b></h3>
<% Indicando formato numérico
double n = 98756123.7579;
NumberFormat fNum =
NumberFormat.getNumberInstance(Locale.UK);
DecimalFormat formatoNum = (DecimalFormat) fNum;
formatoNum.applyPattern("###,###,###,###.00");
out.println(formatoNum.format(n));
%>
<h3>Formateando Fecha</h3>
<% formatoNum : objeto para
SimpleDateFormat formatoFecha = formatear numero n
new SimpleDateFormat("dd/MM/yyyy");
out.println(formatoFecha.format(new Date()));
%>
</body>
</html> Formateando la fecha actual

Ing. Juan Vera Castillo Página 12


Programación JSP y Servlets POO

La directriz include
Esta directiva nos permite incluir una página externa en la página actual. La
directiva se parece a esto

Ejemplo : Tenemos dos paginas jsp,de las cuales, la pagina a incluir se llamara
reporte1.jsp que poseerácomo texto “La Universidad” y la pagina principal de
nombre index.jsp, simplemente invoca a la pagina mencionada y la incluye
dentro de de si misma.Para eso se tiene que utilizar la directiva include.

Implementando la pagina index.jsp

Implementando
la pagina
reporte1.jsp

Note en la figura de arriba la inclusión del jsp reporte1 dentro de la pagina index.jsp.

Ing. Juan Vera Castillo Página 13


Programación JSP y Servlets POO

JavaBeans en JSP
Los JavaBeans representan las entidades y reglas del negocio. No hay que
verlas como un oscuro misterio de la tecnología J2EE, simplemente son clases
Java reutilizables que representan elementos del dominio.

Estructura basica de un Bean

Los javaBeans manejan una serie de etiquetas que a continuación vamos a


detallar:

<jsp:useBean>
La etiqueta <jsp:useBean> busca una instancia de un bean de la clase y el
ambito que se hayan determinando. Si existe un bean de la clase especificada,
se hace referencia a dicho bean con el id, en caso contrario, se crea una
instancia del mismo. El beanestara disponible dentro de su ambito.

El id es un nombre identificativo, seleccionado por el programador. Además


debemos declarar su alcance o ámbito (scope).

Ing. Juan Vera Castillo Página 14


Programación JSP y Servlets POO

Un alcance “page” es en esta pagina, "request" implica que es accesible otra


JSP que haya sido invocada por medio por ejemplo de jsp:include. El beanName
sigue la lógica Java de paquete.subpaquete.

En nuestro ejemplo:

Esto me permite La clase bean ubicada en su


Id representa el
definir su ambito respectivo paquete
nombre del objeto
instanciado

El constructor vacío, es el que utiliza el motor JSP en la creación del objeto.

Problema7 Hacer un JSP que trabaje con un javabean para almacenar datos en el
y poder también extraerlos

El detalle del JavaBean Empleado, esta en la página anterior

Ing. Juan Vera Castillo Página 15


Programación JSP y Servlets POO

Fundamentos de JavaScript
Javascript es un lenguaje de programación empleado para programar pequeñas
funciones responsables de realizar acciones dentro del ámbito de una página web.

Javascript no tiene nada que ver con Java, son productos totalmente distintos y no guardan
entre si más relación que la sintaxis idéntica y poco más. Algunas diferencias entre estos dos
lenguajes son las siguientes:

Compilador. Para programar en Java necesitamos un Kit de desarrollo y un compilador. Sin


embargo, Javascript no es un lenguaje que necesite que sus programas se compilen, sino que
éstos se interpretan por parte del navegador cuando éste lee la página.

Orientado a objetos. Java es un lenguaje de programación orientado a objetos, en cambio


Javascript no es orientado a objetos, esto quiere decir que podremos programar sin necesidad
de crear clases.

Propósito. Java es mucho más potente que Javascript, esto es debido a que Java es un
lenguaje de propósito general, con el que se puede construir cualquier tipo de sistemas, sin
embargo, con Javascript sólo podemos escribir subrutinas para que se ejecuten en páginas
web.

Estructura de programa javascript


Teniendo en cuenta que Javascript se escribe dentro de un documento HTML, podemos decir
que los delimitadores de un programa javascript son las etiquetas
<SCRIPT>

</SCRIPT>
En una misma página podemos introducir varios scripts, cada uno que podría
introducirse dentro de unas etiquetas <SCRIPT> distintas.

Uso de variables y su impresion


Javascript otorga un poco de libertad es a la hora de declarar las variables, ya
que no estamos obligados a hacerlo, al contrario de lo que pasa en la mayoría de
los lenguajes de programación.
De todos modos, es aconsejable declarar las variables, y para ello Javascript cuenta con la
palabra var :
var ciudad = "Valencia"
var mujer = true

var num1 = 23
var num2 = 33
var suma = num1 + num2
document.write(suma)<-- imprimiendo

JavaScript tiene la peculiaridad de ser un lenguaje débilmente tipeado, esto es, una variable
puede cambiar de tipo durante su vida, por ejemplo :
MiVariable=4;

MiVariable="Una_Cadena";

Existen variables locales y globales. Las globales deben ser declaradas asi :
<SCRIPT>
varnomVariable;
</SCRIPT>

Ing. Juan Vera Castillo Página 16


Programación JSP y Servlets POO

Y en el caso de las variables locales :

Estructuras de control de flujo


Tenemos if, ifelse, switch, for, while, do while, se usan igual que Java

Ubicacion del codigojavascript


El codigojavascript se ubica dentro del bloque HEAD de un programa HTML

Parametros de funciones

Su empleo es simple como se ve en el ejemplo :

function bienvenida(nombre, colorTexto)


{
document.write("<FONT color=" + colorTexto + ">)
document.write("<H1>Hola " + nombre + "</H1>")
document.write("</FONT>")
}

JSP
Variables globales en JSP

La variable simplemente se coloca


sobre el código HTML :

El tag <input type="button"

Esta etiqueta con el tipo indicado, trabaja como un botón común, entonces para este caso
debemos implementar el manejo de eventos (click), lo que se implementa tal como se ve :

<inputtype="button"value="Calcular la suma"onclick="calcular()">

Etiqueta del boton Evento función del evento

La función calcular() es implementada con código javascript :

Ing. Juan Vera Castillo Página 17


Programación JSP y Servlets POO

Problema 08

Un JSP pide 2 números y los envía a un servlet. Aquí usaremos un <input type=”button” con la
función de evento click. Lo que implica el uso de una función javascript (callServlet)

<html> JSP : prog04.jsp


<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Programa principal: prog04.jsp</title>

<script>
functioncallServlet() Aquí la function maneja el llamado al servlet06
{
// formSuma es el nombre del formulario(ver mas abajo)
document.formSuma.action="<%=request.getContextPath()%>/Servlet06";
document.formSuma.method="get";
document.formSuma.submit();
} Notar que no existe action a pesar
</script> que se llama a un servlet
</head>
<body>
<form name="formSuma"> <%--- nombre del formulario ---%>
numero 1 : <input type="text" name="num1"><br>
numero 2 : <input type="text" name="num2"><br>
<input type="button" value="Calcular la suma"
onclick="callServlet()"><br>
<textarea rows= 10 cols=30 name="area">
<%
if(request.getAttribute("suma")!= null)
{
String resultado =
(String)request.getAttribute("suma");
out.print("\n"+resultado);
}
%>
</textarea>
</form>
</body>
</html>

public class Servlet06 extends HttpServlet Servlet : Servlet06.java


{
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throwsServletException, IOException
{
int n1 = Integer.parseInt(request.getParameter("num1"));
int n2 = Integer.parseInt(request.getParameter("num2"));
int r = n1+n2;
Stringlinea = "La suma es "+ r;
request.setAttribute("suma", linea); // etiqueta, objeto
getServletContext().getRequestDispatcher("/prog04.jsp").forward(request, response);
}

javascript y la funcionalert(mensaje)
Se usa para emitir un mensaje sobre una pequeña
ventana (útil para mensajes de error)
Ejemplo :alert("falta el sueldo");

Ing. Juan Vera Castillo Página 18


Programación JSP y Servlets POO

javascript y la función focus()


A veces es necesario enfocar una caja de texto <input>. Esto se logra con la función focus()
Ejemplo :
document.planilla.sueldo.focus();

Clase document Nombre del <input


type=”text”
Nombre del
formulario

(Formulario JSP)

javascript y como detectar un campo vacio(<input type=”text”> )


Se usa la función de cadenas length(), tal como se ve en el ejemplo : Valor escrito por el
usuario dentrodel
var nom; <input type=”text”)

nom = document.planilla.nombre.value;
if(nom.length == 0)
alert("falta nombre");

Problema 09

Desarollar un JSP para ingresar un nombre con su apellido, entonces llamar a un servlet para
que reciba la cadena, extraiga solo el nombre y lo devuelva al JSP.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Pagina prog05</title>
<script>
functionfocusValidar()
{
varnum;
nom = document.planilla.nombre.value;
if(nom.length == 0)
{
alert("falta nombre");
document.planilla.nombre.focus();
return;
}else
{
document.planilla.action=
"<%=request.getContextPath()%>/Servlet06";
document.planilla.method="get";
document.planilla.submit();
}
}
</script>
</head>

Ing. Juan Vera Castillo Página 19


Programación JSP y Servlets POO

<body>
<form name="planilla">
nombre : <input type="text" name="nombre"><br>
<input type="button" value ="generarPlanilla"
onclick="focusValidar()">
<br>
<textarea name="area" rows="20" cols="40">
<%
if(request.getAttribute("registro")!= null)
{
out.print((String)request.getAttribute("registro"));
}
%>
</textarea>
</form>
</body>
</html>

Problema 10

Realizar un JSP que me


permita Ingresar por teclado
dos números enteros y
mostrar a través de unAlert
el resultado de la suma de
esos números.

Solución :

<html>
<head>
<title>JSP Page</title>

<script languaje="javascript">
function sumar(n1, n2)
{
var sum = parseInt(n1.value) + parseInt(n2.value)
alert("La suma es : " + sum)
}
</script>

</head>

<body>
<form name=formu>
Numero 1 : <input type="text" name ="txtN1"><br>
Numero 2 : <input type="text" name ="txtN2"><br><br>

<input type="submit" value="Sumar" onclick="sumar(txtN1, txtN2)">


</form>
</body>
</html>

Ing. Juan Vera Castillo Página 20


Programación JSP y Servlets POO

Problema 11

Hacer un JSP para pedir al usuario elija una ciudad (usar un select (combo)) y se muestre la
selección con un Alert. Las ciudades son : Lima, Trujillo y Arequipa.

<html>
<head>
<title>JSP Page</title>
<script languaje="javascript">
function mostrar(ciudad)
{
switch(ciudad)
{
case "L" : alert("La ciudad es Lima"); break
case "T" : alert("La ciudad es Trujillo"); break
case "A" : alert("La ciudad es Arequipa"); break
}
}
</script>
</head>

<body>

<form name=formu action="">


<center>
<table align="center">
<tr>
<td>
Ciudad :
</td>
<td>
<select name="ciudad">
<option value="">Seleccione ciudad</option>>
<option value="L">Lima</option>
<option value="T">Trujillo</option>
<option value="A">Arequipa</option>
</select>
</td>
</tr>
<tr>
<td>
</td>
<td>
<input type="submit" value="Mostrar seleccion"
onclick="mostrar(ciudad.value)">
</td>
</tr>
</table>
</center>
</form>
</body>

</html>

Ing. Juan Vera Castillo Página 21


Programación JSP y Servlets POO

Problema 12

Hacer un JSP para que al momento de cargarse la página Inicio.jsp, se llene un select
(combo) con áreas de trabajo, leídas de la tabla área ubicada en una base de datos,
mostrándose lo siguiente :

Entonces el usuario debe seleccionar una área de trabajo del select y luego de hacer click en el
botón Mostrar datos, se mostrara la data de los empleados (tabla empleado) que laboran en
esa área, pero en la página Listado.jsp.

Solución : Las tablas son :

Ing. Juan Vera Castillo Página 22


Programación JSP y Servlets POO

<%@page import="DAO.areaDAO"%>
<%@page import="javaBeans.areaBean"%> Inicio.jsp
<%@page import="java.util.ArrayList"%>
<%!
areaBean empBean = null;
ArrayList lista = null;
areaDAO areDAO = new areaDAO();
%>
ListadoServlet
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body background="Imagenes\playas.jpg">
<form name="form1" method="get" action="<%=request.getContextPath()%>/ListadoServlet">
<center>
<br>
<table width="45%" border="0">
<tr align="center"> Tag marquee
<td >
<h1> Efecto : mensaje circular
<b>
<font color="red" face = "arial">
<marquee>
Software System S. A.
</marquee>
</font>
</b>
</h1>
</td>
</tr>
</table>
<table>
<tr>
<td>
<b><font color="blue" face="arial">Area : </font></b>
</td>
<td>
<select name="datos">
<%
lista = areDAO.getAreas();
int i;
for(i=0; i <lista.size(); i++)
{
empBean=(areaBean)lista.get(i);
%>
<option value= "<%=empBean.getNumarea()%>">
<%=empBean.getNomarea()%>
</option>
<%
}
%>
</select>
</td>
</tr>
</table>
<br>
<table>
<tr>
<td><input type="submit" value="Mostrar Datos"></td>
</tr>
</table>
</center>
</form>
</body>
</html>

Ing. Juan Vera Castillo Página 23


Programación JSP y Servlets POO

import Utilitarios.ConexionBD;
import java.sql.*; areaDAO
import java.util.ArrayList;
import javaBeans.areaBean;

public class areaDAO


{
PreparedStatement pt = null;
ResultSet rs = null;
Connection cn = null;

areaBean objUsuBean = null;


ArrayList lista = null;

public ArrayList getAreas()


{
try
{
ConexionBD objC=new ConexionBD();
cn = objC.getConexion();
pt = cn.prepareStatement("select numarea,nomarea from area");
rs = pt.executeQuery();
lista = new ArrayList();
while(rs.next())
{
objUsuBean = new areaBean();
objUsuBean.setNumarea(rs.getString(1));
objUsuBean.setNomarea(rs.getString(2));
lista.add(objUsuBean);
}
pt.close();
rs.close();
cn.close();
} catch (Exception e)
{
}
return lista;
}
}
ListadoServlet
import DAO.empleadoDAO;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;

@WebServlet(name = "ListadoServlet", urlPatterns = {"/ListadoServlet"})

public class ListadoServlet extends HttpServlet


{
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
String area = request.getParameter("datos"); // recuperando el área del select
ArrayList lista;
empleadoDAO emple = new empleadoDAO();

lista = emple.getEmpleadosXarea(area);

request.setAttribute("empleadosXarea",lista);

getServletContext().getRequestDispatcher("/Listado.jsp").forward(request, response);
}

Ing. Juan Vera Castillo Página 24


Programación JSP y Servlets POO

<%@page import = "javaBeans.*"%>


<%@page import = "java.util.ArrayList"%> Listado.jsp
<%!
empleadoBean objEmpleBean = null;
ArrayList lista=null;
String ar[] = {"", "Administracion","Finanzas","Contabilidad","Ventas"};
%>

<html>
<head>
<link href="<%=request.getContextPath()%>/css/screen.css"
rel="stylesheet" type="text/css">
<title>JSP Page</title>
</head>
<body background="Imagenes\playa.jpg">
<form name="formulario" action="">
<center>
<table width="75%" border="0">
<tr align="center">
<td >
<h2><b><font color="white">
Listado de Empleados</font></b>
</h2>
</td>
</tr>
</table>
<%-- Este atributo muestra la tabla en forma transparente -->
<%-- style="z-index:1;filter:alpha(opacity=60);-moz-
opacity:.60;opacity:.60" --%>
<table width="35%" border="1" >
<tr bgColor="orange">
<td>Codigo</td>
<td>Nombre</td>
<td>Apellido</td>
<td>Area</td>
</tr>
<%
lista = (ArrayList)request.getAttribute("empleadosXarea");
%>
<%
for(int i=0; i<lista.size(); i++)
{
objEmpleBean=(empleadoBean)lista.get(i);
%>
<tr
<%
if(i%2==0)
{
%>
class="fila_impar"
<%
}else
{
%>
class="fila_par"
<%
}
%>
>
<td><%=objEmpleBean.getCodigo()%></td>
<td><%=objEmpleBean.getNombre()%></td>
<td><%=objEmpleBean.getApellido()%></td>
<td><%=ar[Integer.parseInt(objEmpleBean.getArea())]%></td>
</tr>
<%
}
%>
</table>
<a href="Inicio.jsp">
<b><h2><font color="red">Volver</font></h2></b>
</a>
</center>
</form>
</body>

Ing. Juan Vera Castillo Página 25


Programación JSP y Servlets POO

</html>
import Utilitarios.ConexionBD;
import java.sql.Connection; empleadoDAO
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import javaBeans.empleadoBean;

public class empleadoDAO


{
PreparedStatement pt = null;
ResultSet rs = null;
Connection cn = null;

empleadoBean objUsuBean = null;


ArrayList lista = null;

public ArrayList getEmpleadosXarea(String codarea)


{
try
{
ConexionBD objC=new ConexionBD();

cn = objC.getConexion();
pt = cn.prepareStatement("select * from empleado where area =?");
pt.setString(1, codarea);
rs =pt.executeQuery();
lista=new ArrayList();

while(rs.next())
{
objUsuBean = new empleadoBean();
objUsuBean.setCodigo(rs.getString(1));
objUsuBean.setNombre(rs.getString(2));
objUsuBean.setApellido(rs.getString(3));
objUsuBean.setArea(rs.getString(4));
lista.add(objUsuBean);
}
pt.close();
rs.close();
cn.close();
} catch (Exception e)
{
}
return lista;
}
}

Ing. Juan Vera Castillo Página 26


Programación JSP y Servlets POO

Problema 13 Uso del evento onchange para el select (mostrar sin usar botón)

<html>
<head>
<title>JSP Page</title>
<script languaje="javascript">
function mostrar(ciudad)
{
switch(ciudad)
{
case "L" : alert("La ciudad es Lima"); break
case "T" : alert("La ciudad es Trujillo"); break
case "A" : alert("La ciudad es Arequipa"); break
}
}
</script>
</head>

<body>

<form name=formu action="">


<center>
<table align="center">
<tr>
<td>
Ciudad :
</td>
<td>
<select name="ciudad" onchange="mostrar(ciudad.value)">
<option value="">Seleccione ciudad</option>>
<option value="L">Lima</option>
<option value="T">Trujillo</option>
<option value="A">Arequipa</option>
</select>
</td>
</tr>
</table>
</center>
</form>
</body>

</html>

Problema 14
Modificar el problema anterior, tal que ya no se coloque el botón Mostrar datos. Se pide
programar el select, tal que apenas el usuario haya seleccionado una área en el select, se
muestre mas abajo una tabla con los datos de los empleados de esa área.

Ing. Juan Vera Castillo Página 27


Programación JSP y Servlets POO

MANEJO DE SESIONES
El protocolo HTTP permite acceder a páginas web y enviar datos de un formulario pero tiene
una limitación que consiste en que no puede recordar datos o cliente cuando se cambia de
servidor o de página dentro de un mismo servidor. Por esta razón a este protocolo se le conoce
como protocolo sin estado.

Qué es una sesión ?


Como se obtiene una sesión :HttpSessionmiSesion=request.getSession();

Es una serie de comunicaciones entre un cliente y un servidor, en la que se realiza un


intercambio de información. Por medio de una sesión se puede hacer un seguimiento de un
usuario a través de la aplicación.
Para obtener la sesión de un usuario, se utiliza el método getSession() que devuelve una
interfaz de tipo HttpSession : request.getSession(true);

Para obtener un objeto que fue almacenado en la sesión :session.getAttribute()


Cuando fue creada la sesión :session.getCreationTime()
Ultimo acceso :session.getLastAccessedTime()
Tiempo máximo de inactividad:session.getMaxInactiveInterval()

Problema 12 Index.jsp
Llamando a servlet
<html>
<head>
<title>JSP Page</title>
</head>
<body>
<a href="/demoSession/ServCliente">Llamar a servlet</a>
</body>
</html>

ServCliente.java

importjava.io.IOException;
importjava.io.PrintWriter;
importjava.util.Date;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;

public class ServletSession extends HttpServlet


{
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)throwsServletException, IOException
{
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();

HttpSession session = request.getSession(true);

Ing. Juan Vera Castillo Página 28


Programación JSP y Servlets POO

Integer ctosAccesos = (Integer) session.getAttribute("ctosAccesos");

if(ctosAccesos == null)
ctosAccesos = new Integer(1);
else
ctosAccesos = newInteger(ctosAccesos.intValue() + 1);

session.setAttribute("ctosAccesos", ctosAccesos);

try
{
out.println("<html>");
out.println("<head>");
out.println("<title>demoSession</title>");
out.println("</head>");
out.println("<body>");
out.println("<p>ID de sesión: " +session.getId() + "</p>");
out.println("<p>Creación: " +new Date(session.getCreationTime())+"</p>");
out.println("<p>Último acceso: " +
new Date(session.getLastAccessedTime()) +"</p>");
Integerctos = (Integer) session.getAttribute("ctosAccesos");
out.println("<p>Cantidad de accesos: " +ctos.intValue() + "</p>");
out.println("<p>Tiempo máximo de inactividad: " +
session.getMaxInactiveInterval() +" segundos" + "</p>");
out.println("</body>");
out.println("</html>");
} finally
{
out.close();
}
}
}

Ing. Juan Vera Castillo Página 29

Potrebbero piacerti anche