Está en la página 1de 20

carrito de la compra HashTable

PROGRAMACION JSP - SERVLETS


Problema 02
Crear un proyecto web y luego en la carpeta webpages crear un nuevo
archivo 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 botn (facturar), 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>

Para recuperar un parmetro enviado, apelamos al objeto request y al su


mtodo getParameter(name del <input type=text name=precio>). Por
ejemplo :
String sprec = request.getParameter("precio");

El formulario solo lleva el mtodo de envio (post) y no action, debido a


que la accin 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" >
Digitar precio
: <input type="text" name="precio"> <br>
Digitar cantidad : <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");
int prec = Integer.parseInt(sprec);
String scant = request.getParameter("cantidad");
int cant = Integer.parseInt(scant);
int monto = prec * cant;
String linea = "El monto a pagar es : "+ monto;
out.println(""+linea);
}
%>
</textarea>
</form>
</body>
</html>

Problema 03
Crear un servlet, tal que
muestre su localizacin en
el sistema :

Solucion
Esto se logra utilizando el objeto request y su mtodo getContextPath ()
Veamos el cdigo del servlet solicitado :
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> Servlet ServletContextPath </title>");

out.println("</head>");
out.println("<body>");
out.println("<h2> El ServletContextPath esta en : " +
request.getContextPath () + "</h2>");
out.println("</body>");
out.println("</html>");
} finally
{
out.close();
}

Problema 04
Crear un JSP que pida
un numero y muestre
la tabla de multiplicar
correspondiente :

<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");
int nTab = Integer.parseInt(snumTabla);
String linea="";
for(int i =1; i <=12; ++ i)
{
linea = linea + nTab + " x "+ i +" = "+ (nTab*i)
+"\n";
}
out.println("\n"+linea);
}
%>
</textarea>
</form>

</body>
</html>

Contextuar la ruta de la aplicacin


(prog03.jsp y servlet05.java)

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

En su lugar podriamos usar : request.getContextPath()


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

Que una aplicacin enve de retorno una


respuesta
Si deseamos que un servlet retorne una respuesta, primero preparamos la respuesta :
int sum = n1+n2;
String linea = "La suma es "+ sum;

Objeto a

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

JSP de

Despus, procedemos a escribir el mecanismo de retorno al JSP :

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

Que un JSP reciba la respuesta de un servlet


Se usa el mtodo getAttribute() :
resultado = "\n" + (String)request.getAttribute("suma")+"\r";

Problema 05
Construir un JSP para pedir dos nmeros, 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 :

<html>
prog03.jsp
<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>
<textarea rows= 10 cols=30>
Servlet
<%
if(request.getAttribute("suma")!= null)
{
resultado = "\n" +
(String)request.getAttribute("suma")+"\r";
out.print(resultado);

}
%>
</textarea>
</form>
</body>
</html>
import
import
import
import
import
import

java.io.IOException;
java.io.PrintWriter;
javax.servlet.ServletException;
javax.servlet.http.HttpServlet;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;

Servlet :
Servlet05.java

Como se observa este servlet


no posee interfaz grafica, solo
procesa y retorna un resultado.

public class Servlet05 extends HttpServlet


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

Problema
Prog04.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<form name="planilla" method ="get" action ="<%=request.getContextPath()%>/Servlet07">
nombre : <input type="text" name="nombre"><br>
sueldo : <input type="text" name="sueldo"><br>
sexo : <br>
<input type="radio" name="sexo" value="varon" checked>Masculino<br>
<input type="radio" name="sexo" value="mujer">Femenino<br>
especialidad : <br>
<select name="especialidad">
<option value="administrador">administrador</option>
<option value="contador" selected>contador</option>
<option value="ing.Sistemas">ing.Sistemas</option>
</select><br><br>
<input type="submit" value ="generar Planilla">

<br>

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

Servlet07

public class
{

extends HttpServlet

protected void processRequest(HttpServletRequest request,


HttpServletResponse response)
throws ServletException, IOException
{
String nom, sex, espc;
double suelB=0, suelNeto=0;
nom = request.getParameter("nombre");
suelB = Double.parseDouble(request.getParameter("sueldo"));
sex = request.getParameter("sexo");
espc = request.getParameter("especialidad");
if(sex.equals("mujer"))
{
suelNeto = suelB-suelB*0.14;
if(espc.equals("administracion"))
suelNeto =suelB-suelB*0.14;
}else
{
if(espc.equals("administracion"))
suelNeto = suelB-suelB*0.14;
else
suelNeto = suelB-suelB*0.14;
}
String linea = "\nPlanilla de pago\n"+
"----------------\n"+
"Nombre : "+ nom + "\n" +
"sueldo basico : "+ suelB + "\n" +
"Sexo : "+ sex + "\n" +
"Categoria : "+ espc + "\n" +
"Sueldo Neto : " + suelNeto;
request.setAttribute("planilla", linea);
getServletContext().getRequestDispatcher("/prog05.jsp").forward(request, response);

prog05.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<form name="MiPlanilla">
<textarea name="area" rows="20" cols="40">
<%
if(request.getAttribute("planilla")!= null)
{
out.print((String)request.getAttribute("planilla"));
}
%>
</textarea>
</form>

</body>
</html>

JSP
Directivas JSP
La directriz JSP configuran la generacin de cdigo que ejecutara el contenedor al
crear un servlet. Son utilizadas para establecer valores globales tales como
declaraciones de clase, mtodo 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 ms de los siguientes atributos
sensibles a las maysculas.
Esto nos permite especificar
los paquetes que deberan ser
importados

<%@ page import =


java.lang.Math %>

indica que la variable predefinida


session (del tipo HttpSession)
debera unirse a la sesin existente si
existe una.

Esto especifica el tamao del buffer


para el JSP Writer out. El valor por
defecto es especfico del servidor,
debera ser de al menos 8kb.

Especifica la pgina de error que ser


invocada en caso de producirse una
excepcin durante la ejecucin del
JSP.

Problema 06
Crear un JSP para formatear el
nmero 98756123.7579 con comas
y 2 decimales de aproximacin.
Adems formatear la fecha actual
obtenida con el mtodo Date().
Utilizar las directivas page para
importar
las
libreras
Java
necesarias.

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

Las directivas <%@page import

<%@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 nmero cualquiera
<body>
<h3><b>Formateando Numero</b></h3>
<%
double n = 98756123.7579;
Indicando formato numrico
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>
Formateando la fecha actual
</html>

La directriz include

Esta directiva nos permite incluir una pgina externa en la pgina actual. La
directiva se parece a esto

Ejemplo : Tenemos dos paginas jsp, de las cuales, la pagina a incluir se ll amara
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 inclusin del jsp reporte1 dentro de la pagina


index.jsp.

JavaBeans en JSP
Los JavaBeans
representan las entidades y reglas del negocio. No hay que
verlas como un oscuro misterio de la tecnologa 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 continuacin 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 bean estara disponible dentro de su ambito.

El id es un nombre identificativo, seleccionado por el programador. Adems


debemos declarar su alcance o mbito (scope). 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 lgica Java de
paquete.subpaquete.
En nuestro ejemplo:

Id representa el
nombre del objeto
instanciado

Esto me
permite
definir su

La clase bean ubicada


en su respectivo
paquete

El constructor vaco, es el que utiliza el motor JSP en la creacin del objeto.

Problema 7

Hacer un JSP que trabaje con un javabean para almacenar


datos en el
y poder tambin extraerlos

El detalle del JavaBean Empleado, esta en la


pgina anterior

Fundamentos de JavaScript
Javascript es un lenguaje de programacin empleado para programar pequeas
funciones responsables de realizar acciones dentro del mbito de una pgina web.
Javascript no tiene nada que ver con Java, son productos totalmente distintos y no guardan
entre si ms relacin que la sintaxis idntica y poco ms. 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 pgina.
Orientado a objetos. Java es un lenguaje de programacin orientado a objetos, en cambio
Javascript no es orientado a objetos, esto quiere decir que podremos programar sin necesidad
de crear clases.
Propsito. Java es mucho ms potente que Javascript, esto es debido a que Java es un
lenguaje de propsito general, con el que se puede construir cualquier tipo de sistemas, sin

embargo, con Javascript slo podemos escribir subrutinas para que se ejecuten en pginas
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 pgina podemos introducir varios scripts, cada uno que podra
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 mayora de
los lenguajes de programacin.
De todos modos, es aconsejable declarar las variables, y para ello Javascript cuenta con la
palabra var :
var
var

ciudad = "Valencia"
mujer = true

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

<-- imprimiendo

JavaScript tiene la peculiaridad de ser un lenguaje dbilmente 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>
var
</SCRIPT>

nomVariable;

Y en el caso de las variables locales :

Estructuras de control de flujo


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

Ubicacion del codigo javascript


El codigo javascript 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 cdigo
HTML :

El tag

<input type="button"

Esta etiqueta con el tipo indicado, trabaja como un botn comn, entonces
para este caso debemos implementar el manejo de eventos (click), lo que se
implementa tal como se ve :
<input type="button" value="Calcular la suma" onclick=
"calcular()">
Etiqueta del
boton

Event
o

funcin del
evento

La funcin calcular() es implementada con cdigo javascript :

Problema 08
Un JSP pide 2 nmeros y los enva a un servlet. Aqu usaremos un <input
type=button con la funcin de evento click. Lo que implica el uso de una
funcin javascript (callServlet)
JSP :

prog04.jsp

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

<script>

Aqui la function maneja


function callServlet()
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 que se
llama a un servlet

</script>
</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>

Servlet :
public class Servlet06 extends HttpServlet
{
Servlet06.java
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException
{
int n1 = Integer.parseInt(request.getParameter("num1"));
int n2 = Integer.parseInt(request.getParameter("num2"));
int r = n1+n2;
String linea = "La suma es "+ r;
request.setAttribute("suma", linea); // etiqueta, objeto
getServletContext().getRequestDispatcher("/prog04.jsp").forward(request,
response);
}

javascript y la funcion alert(mensaje)


Se usa para emitir un mensaje sobre
una
pequea
ventana
(til
para
mensajes de error)
Ejemplo :
alert("falta el
sueldo");

javascript y la funcin focus()


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

Nombre del
<input
type=text

Nombre
del
formulari
(Formulario

javascript y como detectar un campo vacio

(<input

type=text> )

Se usa la funcin de cadenas length(), tal como se ve en el ejemplo


: por el
Valor escrito
var

nom;

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

usuario dentro del


<input
type=text)

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>
function focusValidar()
{
var num;
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>

<body>
<form name="planilla">
nombre : <input type="text" name="nombre"><br>
<input type="button" value ="generar Planilla"
onclick="focusValidar()">
<br>
<textarea name="area" rows="20" cols="40">
<%
if(request.getAttribute("registro")!= null)

{
}
%>
</textarea>
</form>
</body>
</html>

Problema 10
Realizar un JSP que me
permita Ingresar por teclado
dos nmeros enteros y
mostrar a travs de un Alert
el resultado de la suma de
esos nmeros.
Solucin
:

out.print((String)request.getAttribute("registro"));

Problema 11
Hacer un JSP para solicitar al usuario elija una
ciudad a partir de un select (combo) y se muestre la
seleccin con un Alert. Las ciudades son : Lima,
Habana, Mosc y Quito

MANEJO DE SESIONES
El protocolo HTTP permite acceder a pginas web y enviar datos de un
formulario pero tiene una limitacin que consiste en que no puede recordar
datos o cliente cuando se cambia de servidor o de pgina dentro de un
mismo servidor. Por esta razn a este protocolo se le conoce como protocolo
sin estado.

Qu es una sesin ?
Como se obtiene una
request.getSession();

sesin

HttpSession

miSesion

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


realiza un intercambio de informacin. Por medio de una sesin se puede
hacer un seguimiento de un usuario a travs de la aplicacin.
Para obtener la sesin de un usuario, se utiliza el mtodo getSession()
que
devuelve
una
interfaz
de
tipo
HttpSession
:
request.getSession(true);
Para obtener un objeto que fue almacenado en la sesin :
session.getAttribute()
Cuando fue creada la sesin : session.getCreationTime()
Ultimo acceso : session.getLastAccessedTime()
Tiempo mximo de inactividad : session.getMaxInactiveInterval()

Problema 12

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
Llamando a
<a href="/demoSession/ServCliente">
Llamar a servlet
servlet
</a>
</body>
</html>
import
import
import
import
import
import
import
import

java.io.IOException;
java.io.PrintWriter;
java.util.Date;
javax.servlet.ServletException;
javax.servlet.http.HttpServlet;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;
javax.servlet.http.HttpSession;

ServCliente.j
ava

public class ServletSession extends HttpServlet {


protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession(true);
Integer ctosAccesos =
(Integer) session.getAttribute("ctosAccesos");
if (ctosAccesos
{
ctosAccesos
} else
{
ctosAccesos
new
}

== null)
= new Integer(1);
=
Integer(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 sesin: " + session.getId() + "</p>");
out.println("<p>Creacin: " + new Date(session.getCreationTime())+"</p>");
out.println("<p>ltimo acceso: " +
new Date(session.getLastAccessedTime()) + "</p>");
Integer ctos = (Integer) session.getAttribute("ctosAccesos");
out.println("<p>Cantidad de accesos: " + ctos.intValue() + "</p>");
out.println("<p>Tiempo mximo de inactividad: " +
session.getMaxInactiveInterval() + " segundos" + "</p>");
out.println("</body>");
out.println("</html>");
} finally
{
out.close();

}
}
}

También podría gustarte