Sunteți pe pagina 1din 13

Prctica 4

PROGRAMACIN WEB CON SERVLETS Y JSP


Tabla de contenidos
1.

I nt roduc c in a J SP ..................................................................................... 2
1.1.
1.2.
1.3.
1.4.

2.

Progra m a ndo c on J SP ................................................................................ 3


2.1.
2.2.
2.3.

3.

Que es Java Server Page (JSP)? ..................................................................................................................2


Diferencias entre JSP y Servlet......................................................................................................................2
Caractersticas de JSP ...................................................................................................................................2
Funcionamiento de JSP .................................................................................................................................2

Tipos de construcciones JSP .........................................................................................................................3


Elementos de script.......................................................................................................................................3
Directivas........................................................................................................................................................4

La prim e ra p gina J SP................................................................................ 4


3.1. Requisitos para probar JSP...........................................................................................................................4
3.2. Objetos Implcitos ...........................................................................................................................................5
3.3. Ejemplos de pginas JSP sencillas................................................................................................................6
Ejemplo de Expresiones (Expresiones.jsp) ......................................................................................................... 6
Ejemplo de Scriplets (Color.jsp)........................................................................................................................... 6
Ejemplo de declaraciones y directiva page (Contador.jsp).................................................................................. 7
Ejemplo de directiva include (Empresa.jsp)......................................................................................................... 7

4.

U t iliza c in de P gina s de Error .................................................................. 7


4.1.
4.2.

5.

Excepciones en JSP.......................................................................................................................................7
Ejemplo de utilizacin de pginas de error.....................................................................................................8

Eje m plo c om ple t o de Se rvle t s y J SP c on a c c e so a da t os ......................... 9


5.1.
5.2.
5.3.
5.4.

Requisitos previos ..........................................................................................................................................9


Pgina HTML que realiza la peticin al servlet ..............................................................................................9
Servlet que se encarga de actualizar la base de datos................................................................................10
Servlet que muestra los datos ......................................................................................................................11

6.

U t iliza c in de J SP ..................................................................................... 1 3

7.

Am plia c in de la pr c t ic a ......................................................................... 1 3

1 de 13

1 . I nt roduc c in a J SP
1.1.

Que es Java Server Page (JSP)?

Es una interfaz de programacin de aplicaciones de servidores Web. En una pgina jsp se


entremezclan bloques de HTML estticos, y HTML dinmico generados con Java que se ejecutan en el
servidor.
Una pgina jsp puede procesar formularios Web, acceder a bases de datos y redireccionar a otras
pginas. Las pginas jsp son transformadas a un servlet y despus compiladas.
El contenedor JSP proporciona un motor que interpreta y procesa una pgina JSP como un servlet (en
tomcat, dicho motor se llama jasper). Al estar basadas en los servlets, las distintas peticiones a una
misma pgina jsp son atendidas por una nica instancia del servlet.
1.2. Diferencias entre JSP y Servlet

En JSP, el cdigo de presentacin est separado de la lgica del programa, mientras que en un
servlet, el cdigo de presentacin se compila dentro de la clase.
En una pgina JSP el cdigo de presentacin puede ser actualizado por un diseador web que no
conozca Java.
Los servlets se encuentran ya compilados, mientras que las pginas JSP se compilan bajo
peticin, lo que hace que la ejecucin del servlet sea algo ms rpida (en la primera peticin).

1.3. Caractersticas de JSP

Permiten separar la parte dinmica de la esttica en una pgina web


Las pginas jsp se almacenan en el servidor en archivos con extensin .jsp.
El cdigo JSP es java y se encierra entre: <% y %>, por ejemplo:
<H1>Hor a: <%= new j av a. ut i l . Dat e( ) %></ H1>

La sintaxis tambin se puede expresar en formato XML


<j s p: x x x > . . . </ j s p: x x x >

En una pgina jsp hay varios objetos implcitos (predefinidos):


r eques t , r es pons e, out , s es s i on, appl i c at i on, c onf i g, pageCont ex t ,
page y ex c ept i on

Cada pgina JSP es compilada automticamente hacia un servlet por el motor JSP la primera vez
que se accede a esa pgina.
Desde una pgina JSP se puede llamar a un componente JavaBean donde se puede implementar
la lgica de negocio.

1.4. Funcionamiento de JSP

Una pgina JSP es bsicamente una pgina Web con HTML tradicional y cdigo Java incrustado. La
extensin de fichero de una pgina JSP es ".jsp" en vez de ".html" o ".htm", y eso le indica al servidor
que esta pgina requiere un tratamiento especial que se conseguir con una extensin del servidor o
un plug-in.
El servidor web comprueba si la pgina ha sido solicitada con anterioridad. En ese caso el servlet
correspondiente ya estar cargado en memoria. Si no es as, se notifica al motor de jsp y se generar
un servlet para la pgina.

2 de 13

Cuando un cliente solicita una pgina jsp, se ejecuta en el servidor el cdigo JSP de la pgina, dando
como resultado una pgina HTML que se fusiona con el HTML original, generando una pgina HTML
de respuesta que ser enviada al cliente.
2 . Progra m a ndo c on J SP
2.1. Tipos de construcciones JSP

Elementos de script:
o Permiten especificar cdigo Java
o Encerrados entre <%= y %>, <% y %>, <%! y %>
Directivas
o Permiten controlar la estructura general del servlet
o Encerradas entre <%@ y %>
Comentarios
o Permiten insertar comentarios
o Encerrados entre <%-- y --%>
Acciones
o Permiten especificar los componentes JavaBean que va a utilizar la JSP
o Encerradas entre <jsp:xxx> y </jsp:xxx>

2.2. Elementos de script

Expresiones: las expresiones permiten insertar valores Java en la salida. La sintaxis es:
<%= ex pr es i n J av a %>
<j s p: ex pr > . . . </ j s p: ex pr >

Por ejemplo:
hor a: <%= new j av a. ut i l . Dat e( ) %>

Las expresiones tienen acceso a los objetos implcitos. Por ejemplo:


<%= " Mt odo env o f or mul ar i o: " + r eques t . get Met hod( ) %>

Ejemplo con XML:


<j s p: ex pr >
" Mt odo env o f or mul ar i o: " + r eques t . get Met hod( )
</ j s p: ex pr >

Scriptlets: Permiten insertar cdigo Java directamente en la pgina JSP.


<% c odi go J av a; %>
<j s p: s c r i pt l et > . . . </ j s p: s c r i pt l et >

Por ejemplo:
<% i = 7; %>

Los scriplets tienen acceso a los objetos implcitos. Por ejemplo:


<% St r i ng s t r = hol a ;
out . pr i nt l n( s t r ) ;
%>

Ejemplo con XML:


<j s p: s c r i pt l et >
St r i ng s t r = hol a ;
out . pr i nt l n( s t r ) ;
</ j s p: s c r i pt l et >

3 de 13

Declaraciones: Permiten definir las variables o mtodos que sern utilizados en la pgina. No tienen
acceso a los objetos implcitos. La sintaxis es:
<%! dec l ar ac i n J av a; %>
<j s p: dec l > . . . </ j s p: dec l >

Por ejemplo:
<%! pr i v at e i nt i = 5; %>
<%= i %>

Ejemplo con XML:


<j s p: dec l >
i nt i = 5;
</ j s p: dec l >
<j s p: ex pr >
i : " + i
</ j s p: ex pr >

2.3. Directivas

Directiva page: Permite definir uno o ms atributos.


<%@ page at t r i but o= v al or %>
<j s p: di r ec t i v e. page at t r i but o= v al or / >

Los atributos seran:


i mpor t =" paquet e. c l as e"
c ont ent Ty pe=" MI ME- Ty pe"
i s Thr eadSaf e=" t r ue| f al s e"
s es s i on=" t r ue| f al s e"
buf f er =" s i z ek b| none"
aut oFl us h=" t r ue| f al s e"
ex t ends =" pac k age. c l as s "
i nf o=" mes s age"
er r or Page=" ur l "
i s Er r or Page=" t r ue| f al s e"
nl anguage=" j av a

Por ejemplo:
<%@ page i mpor t = j av a. ut i l . * %>

Ejemplo con XML:


<j s p: di r ec t i v e. page i mpor t = j av a. ut i l . * / >

Directiva include: Permite incluir ficheros en la pagina JSP. Inserta el fichero en tiempo de
compilacin. La sintaxis es:
<%@ i nc l ude f i l e= ur l %>
<j s p: di r ec t i v e. i nc l ude f i l e= ur l / >

Por ejemplo:
<%@ i nc l ude f i l e= pagi na. ht ml %>

Ejemplo con XML:


<j s p: di r ec t i v e. i nc l ude f i l e= pagi na. ht ml / >

3 . La prim e ra p gina J SP
3.1. Requisitos para probar JSP

Cualquier servidor web que soporte Servlets (Apache Tomcat 5.X, se encuentra en la direccin
http://tomcat.apache.org/)
Instalar Web Tools Platform (WTP) plugin a eclipse, o descargar la versin de eclipse que o incluye
(http://www.eclipse.org/webtools/main.php)
Poner el API de los servlets y JSP en el CLASSPATH. Si estamos trabajando con el Eclipse, es
necesario poner los como jars externos del proyecto (verificar que jsp-api y servlet-api estn
incluidos como jar externos).
4 de 13

3.2. Objetos Implcitos

Los objetos implcitos tambin son llamados variables predefinidas y se utilizan directamente, sin
crearlos. A continuacin se muestra una tabla con los objetos implcitos que pueden ser utilizados
desde las pginas JSP:
Objeto

Descripcin

Tipo

mbito

javax.servlet.ServletContext

application

application

Representa el contexto en el
que se ejecutan las JSP

session

Sesin de un cliente

javax.servlet.http.HttpSession

session

request

Extrae datos del cliente

javax.servlet.http.HttpServletReques
t

request

Enva datos al cliente

javax.servlet.http.HttpServletRespon
se

page

out

Enva la salida al cliente

javax.servlet.jsp.JspWriter

page

exception

Informacin ltimo error

java.lang.Throwable

page

config

Representa la configuracin del


Servlet

javax.servlet.ServletConfig

page

pageConte
xt

Es de donde se obtienen
algunos objetos implcitos

javax.servlet.jsp.PageContext

page

page

La propia pgina JSP

java.lang.Object

page

La mayora de los objetos implcitos provienen de la clase abstracta javax.servlet.jsp.PageContext.


Cuando se compila la JSP, el servlet que se obtiene, contiene la creacin de estos objetos implcitos
dentro del mtodo _jspService:
publ i c v oi d _j s pSer v i c e
( Ht t pSer v l et Reques t r eques t ,
Ht t pSer v l et Res pons e r es pons e ) t hr ows I OEx c ept i on, Ser v l et Ex c ept i on
{
PageCont ex t pageCont ex t = nul l ;
Ht t pSes s i on s es s i on = nul l ;
Ser v l et Cont ex t appl i c at i on = nul l ;
Ser v l et Conf i g c onf i g = nul l ;
J s pWr i t er out = nul l ;
Obj ec t page = t hi s ;
...
pageCont ex t =
_j s px Fac t or y . get PageCont ex t ( t hi s , r eques t , r es pons e, " " , t r ue,
8192, t r ue) ;
appl i c at i on = pageCont ex t . get Ser v l et Cont ex t ( ) ;
c onf i g = pageCont ex t . get Ser v l et Conf i g( ) ;
s es s i on = pageCont ex t . get Ses s i on( ) ;
out = pageCont ex t . get Out ( ) ;
...
}

5 de 13

3.3. Ejemplos de pginas JSP sencillas

En estos ejemplos se mostrar la utilizacin de las distintas construcciones JSP vistas anteriormente.
Para la realizacin de las pruebas crearemos un nuevo proyecto Web Dinmico llamado jsp, en el cul
crearemos los estos ejemplos.
Ejemplo de Expresiones (Expresiones.jsp)
<%@ page l anguage=" j av a" c ont ent Ty pe=" t ex t / ht ml ; c har s et =I SO- 8859- 1"
pageEnc odi ng=" I SO- 8859- 1" %>
<! DOCTYPE ht ml PUBLI C " - / / W3C/ / DTD HTML 4. 01 Tr ans i t i onal / / EN"
" ht t p: / / www. w3. or g/ TR/ ht ml 4/ l oos e. dt d" >
<ht ml >
<head>
<t i t l e>Ex pr es i ones J SP</ t i t l e>
</ head>
<body>
<H1>Ej empl o de ex pr es i ones J SP</ H1>
<UL>
<LI >Fec ha ac t ual : <%=new j av a. ut i l . Dat e( ) %>
<LI >Nombr e del hos t : <%=r eques t . get Remot eHos t ( ) %>
<LI >I D de l a s es i n: <%=s es s i on. get I d( ) %>
<LI >El par met r o es : <%=r eques t . get Par amet er ( " nombr e" ) %>
</ UL>
</ body >
</ ht ml >

Para probarlo, publicar la pgina en el servidor web e invocarla desde el navegador:


ht t p: / / l oc al hos t : 8080/ j s p/ Ex pr es i ones . j s p
ht t p: / / l oc al hos t : 8080/ j s p/ Ex pr es i ones . j s p?nombr e=Al umnos _Fel i c es

Ejemplo de Scriplets (Color.jsp)


<%@ page l anguage=" j av a" c ont ent Ty pe=" t ex t / ht ml ; c har s et =I SO- 8859- 1"
pageEnc odi ng=" I SO- 8859- 1" %>
<! DOCTYPE ht ml PUBLI C " - / / W3C/ / DTD HTML 4. 01 Tr ans i t i onal / / EN"
" ht t p: / / www. w3. or g/ TR/ ht ml 4/ l oos e. dt d" >
<ht ml >
<head>
<t i t l e>Sc r i pt l et s J SP</ t i t l e>
<%
St r i ng bgCol or =r eques t . get Par amet er ( " bgCol or " ) ;
bool ean hay Col or ;
i f ( bgCol or ! =nul l ) hay Col or =t r ue; el s e
{
hay Col or =f al s e;
bgCol or =" WHI TE" ;
}
%>
</ head>
<body BGCOLOR=" <%=bgCol or %>" >
<H1>Ej empl o de s c r i pt l et s J SP</ H1>
<%
i f ( hay Col or ) out . pr i nt l n( " Se ha ut i l i z ado el c ol or : " + bgCol or ) ;
el s e out . pr i nt l n( " Se ha ut i l i z ado el c ol or por def ec t o: WHI TE" ) ;
%>
</ body >
</ ht ml >

Para probarlo, publicar la pgina en el servidor web e invocarla desde el navegador:


ht t p: / / l oc al hos t : 8080/ j s p/ Col or . j s p
ht t p: / / l oc al hos t : 8080/ j s p/ Col or . j s p?bgCol or =RED

6 de 13

Ejemplo de declaraciones y directiva page (Contador.jsp)


<%@page i mpor t =" j av a. ut i l . * " %>
<%- - Es t o en un c oment ar i o de J SP - - %>
<%!
pr i v at e i nt c ont =0;
pr i v at e Dat e f ec ha= new Dat e( ) ;
pr i v at e St r i ng hos t =" <I >Si n ac c es o pr ev i o</ I >" ;
%>
<p>Es t a pgi na ha s i do ac c edi da <b><%= ++c ont %></ b> v ec es des de que
s e i ni c i el s er v i dor . </ p>
<p>El l t i mo ac c es o ha s i do des de: <b><%=hos t %></ b> c on f ec ha
<b><%=f ec ha%></ b></ p>
<%
hos t =r eques t . get Remot eHos t ( ) ;
f ec ha=new Dat e( ) ;
%>

Para probarlo, publicar la pgina en el servidor web e invocarla desde el navegador:


ht t p: / / l oc al hos t : 8080/ j s p/ Cont ador . j s p

Ejemplo de directiva include (Empresa.jsp)


<%@ page l anguage=" j av a" c ont ent Ty pe=" t ex t
pageEnc odi ng=" I SO- 8859- 1" %>
<! DOCTYPE ht ml PUBLI C " - / / W3C/ / DTD HTML 4.
" ht t p: / / www. w3. or g/ TR/ ht ml 4/ l oos e. dt d" >
<ht ml >
<head>
<t i t l e>Ej empl o de us o de un c ont ador i
</ head>
<body >
<H1>Ej empl o de us o de un c ont ador
<%@i nc l ude f i l e=" Cont ador . j s p" %>
</ body>
</ ht ml >

/ ht ml ; c har s et =I SO- 8859- 1"


01 Tr ans i t i onal / / EN"

nc l ui do en un J SP</ t i t l e>
i nc l ui do en un J SP</ H1>

Para probarlo, publicar la pgina en el servidor web e invocarla desde el navegador:


ht t p: / / l oc al hos t : 8080/ j s p/ Empr es a. j s p

4 . U t iliza c in de P gina s de Error


4.1. Excepciones en JSP

La gestin de excepciones en JSP se lleva a cabo a travs del objeto exception. Para manejar las
excepciones en las JSP se deben seguir los siguientes pasos:

Escribir un Servlet, JSP u otro componente para que lance excepciones en determinadas
condiciones. Por ejemplo desde una JSP podra indicarse como:
publ i c Obj ec t met odo( ) t hr ows Nul l Poi nt er Ex c ept i on { . . . }

Escribir una JSP que ser la pgina de error usando la directiva page con isErrorPage=true. Es
decir que si ocurre un error en otras JSP que usen el componente, se ejecutar esta pgina:
<%@ page i s Er r or Page= t r ue i mpor t = j av a. ut i l . * %>

En la pgina de error usar el objeto exception para obtener informacin de la excepcin


<%= ex c ept i on. t oSt r i ng( ) %>
<% ex c ept i on. pr i nt St ac k Tr ac e( ) ; %>

En las JSP que usan el componente, indicar qu pgina se ejecutar si se produce algn error,
mediante la directiva page, estableciendo errorPage a la pgina de error.
<%@ page i s Thr eadSaf e= f al s e i mpor t = j av a. ut i l . * er r or Page= er r or . j s p %>

7 de 13

4.2. Ejemplo de utilizacin de pginas de error

A continuacin mostramos un ejemplo en el que intervienen dos pginas, la pgina que puede provocar
la excepcin o lanzar el error (Division.jsp) y la pgina que saldr como tratamiento de la excepcin
(ErrDiv.jsp). La pgina Division.jsp podra quedar codificada de la siguiente forma:
<%@ page l anguage=" j av a" c ont ent Ty pe=" t ex t / ht ml ; c har s et =I SO- 8859- 1"
pageEnc odi ng=" I SO- 8859- 1" %>
<! DOCTYPE ht ml PUBLI C " - / / W3C/ / DTD HTML 4. 01 Tr ans i t i onal / / EN"
" ht t p: / / www. w3. or g/ TR/ ht ml 4/ l oos e. dt d" >
<ht ml >
<head>
<t i t l e>Manej o de er r or es de J SP</ t i t l e>
</ head>
<body >
<%@page er r or Page=" Er r Di v . j s p" %>
<H1>Ej empl o de manej o de er r or es en J SP</ H1>
<%!
pr i v at e doubl e t oDoubl e( St r i ng v al ue)
{
r et ur n( Doubl e. v al ueOf ( v al ue) . doubl eVal ue( ) ) ;
}
%>
<%
doubl e op1 = t oDoubl e( r eques t . get Par amet er ( " op1" ) ) ;
doubl e op2= t oDoubl e( r eques t . get Par amet er ( " op2" ) ) ;
doubl e r es = op1/ op2;
%>
<TABLE bor der =1>
<TR><TH></ TH><TH>Di v i s i n</ TH></ TR>
<TR><TH>Oper ando 1: </ TH><Td><%=op1%></ Td></ TR>
<TR><TH>Oper ando 2: </ TH><Td><%=op2%></ Td></ TR>
<TR><TH>Res ul t ado: </ TH><Td><%=r es%></ Td></ TR>
</ TABLE>
</ body>
</ ht ml >

La pgina de error ErrDiv.jsp quedara como:


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Pgina de errores en JSP</title>
</head>
<body >
<%@page isErrorPage="true"%>
<H1>Pgina de errores en JSP</H1>
<P>Division.jsp ha reportado el siguiente error:
<b><%=exception%></b>
</P>
<P>El error que ha ocurrido es: <pre>
<% exception.printStackTrace(new java.io.PrintWriter(out)); %>
</pre>
</P>
</body>
</html>

Para probarlo, publicar la pgina en el servidor web e invocarla desde el navegador:


ht t p: / / l oc al hos t : 8080/ j s p/ Di v i s i on. j s p?op1=12&op2=6
ht t p: / / l oc al hos t : 8080/ j s p/ Di v i s i on. j s p?op1=12&op2=0

Para que salga la pgina de error, uno de los operndoos tiene que ser una letra o no pasar
par met r os :
ht t p: / / l oc al hos t : 8080/ j s p/ Di v i s i on. j s p?op1=12&op2=
ht t p: / / l oc al hos t : 8080/ j s p/ Di v i s i on. j s p?op1=12&op2=a

8 de 13

5 . Eje m plo c om ple t o de Se rvle t s y J SP c on a c c e so a da t os


Partiendo del ejemplo de los jugadores de ftbol de la prctica anterior, vamos a desarrollar un ejemplo
en el que utilizaremos primeramente la pgina web Futbol.html que se ampliar para permitir votar por
un jugador. Luego esta informacin se procesar con un servlet intermedio Futbol.java que se va a
encargar de actualizar la tabla de Jugadores (actualizando los votos de jugadores existentes o
insertando nuevos jugadores). Por ltimo desde este servlet se dar paso al servlet de TablaVotos para
mostrarle al cliente cmo han quedado las estadsticas de votos.
5.1. Requisitos previos

Es necesario tener disponible los ejemplos de la prctica anterior y la siguiente base de datos en
MySQL:

Se debe crear esta BD y sus tablas en MySQL con la siguiente estructura:

BDJugadores
Tabla Jugadores:
Campo
Nombre
Votos
Tabla Registro:

Tipo
Varchar (50)
Integer

Campo
Nombre
Correo
Visitas

Tipo
Varchar (50)
Varchar (30)
Integer

La tabla de Jugadores se rellenar inicialmente con datos de algunos jugadores y se pondrn a 0 los
votos de cada uno. Por ejemplo:
Nombre
Roberto Carlos
Raul
Torres
Ronaldinho
Ronaldo
Figo
Zidane

Votos
0
0
0
0
0
0
0

5.2. Pgina HTML que realiza la peticin al servlet

La pgina HTML Futbol.html permitir que un cliente introduzca su nombre y correo y pueda emitir su
voto por algn jugador de los que se visualizan. Si no le gusta ninguno, podr aadir un nuevo jugador.
Esta pgina enviar su peticin al servlet Futbol.java para que ste se encargue de actualizar la base
de datos. La pgina tendra el siguiente cdigo:
<ht ml >
<head>
<t i t l e>Es t ad s t i c as
</ head>
<body >
<c ent er ><H1>Es t ad s t
<p al i gn=" c ent er " ><f
J UGADOR</ u></ f ont
<p al i gn=" c ent er " ><f

de Fut bol </ t i t l e>


i c as de J ugador es de Fut bol </ H1></ c ent er >
ont c ol or =" #002424" s i z e=" 7" ><u>VOTE POR EL MEJ OR
></ p>
ont c ol or =" #002424" s i z e=" 7" ><u>DE FUTBOL DE

9 de 13

2003</ u></ f ont ></ p>


<f or m ac t i on=" . / Fut bol " met hod=" POST" l ef t >
<p al i gn=" l ef t " >Nombr e del Vi s i t ant e: <i nput t y pe=" t ex t " s i z e=" 20"
name=" t x t Nombr e" >
eMai l : <i nput t y pe=" t ex t " s i z e=" 20" name=" t x t Mai l " ></ p>
<p al i gn=" l ef t " ><i nput t y pe=" r adi o" name=" R1" v al ue=" Rober t o Car l os " >Rober t o
Car l os </ p>
<p al i gn=" l ef t " ><i nput t y pe=" r adi o" name=" R1" v al ue=" Raul " >Raul </ p>
...
<p al i gn=" l ef t " ><i nput t y pe=" r adi o" name=" R1" v al ue=" Ot r os " >Ot r os <i nput
t y pe=" t ex t " s i z e=" 20" name=" t x t Ot r os " ></ p>
<p al i gn=" l ef t " ><i nput t y pe=" s ubmi t " name=" B1" v al ue=" Vot ar " > <i nput
t y pe=" r es et " name=" B2" v al ue=" Res et " ></ p>
</ f or m>
</ body>
</ ht ml >

5.3. Servlet que se encarga de actualizar la base de datos

A continuacin mostramos el cdigo del servlet Futbol.java que atender la peticin


de Futbol.html, conectndose a la Base de Datos BDJugadores y actualizando la
tabla Jugadores. En caso del que el jugador por el que se ha votado ya se encuentre
en la tabla, se incrementar su voto en 1, si no est, se insertar el nuevo jugador y
se le pondrn sus votos a 1.
i
i
i
i

mpor t
mpor t
mpor t
mpor t

j
j
j
j

av a. i o. * ;
av ax . s er v l et . * ;
av ax . s er v l et . ht t p. * ;
av a. s ql . * ;

publ i c c l as s Fut bol ex t ends Ht t pSer v l et


{
pr i v at e Connec t i on c on;
pr i v at e St at ement s et ;
pr i v at e Res ul t Set r s ;
St r i ng c ad;
publ i c v oi d i ni t ( Ser v l
{
St r i ng s URL=" j dbc :
s uper . i ni t ( c f g) ;
St r i ng us er Name =
St r i ng pas s wor d =

et Conf i g c f g) t hr ows Ser v l et Ex c ept i on


my s ql : / / l oc al hos t / BDJ ugador es " ;
" r oot " ;
" admi n" ;

try
{
Cl as s . f or Name ( " c om. my s ql . j dbc . Dr i v er " ) . newI ns t anc e( ) ;
c on = Dr i v er Manager . get Connect i on ( s URL, us er Name, pas s wor d) ;
Sy s t em. out . pr i nt l n( " Se ha c onec t ado" ) ;
}
c at c h( Ex c ept i on e)
{
Sy s t em. out . pr i nt l n( " No s e ha c onec t ado" ) ;
}
}
publ i c v oi d doPos t
t hr ows Ser v l et
{
/ / Obt ener l a
Ht t pSes s i on s
//
//
St
s.

( Ht t pSer v l et Reques t r eq, Ht t pSer v l et Res pons e r es )


Ex c ept i on, I OEx c ept i on
s es i on
= r eq. get Ses s i on( t r ue) ;

Guar dar el nombr e del c l i ent e en l a s es i n


par a poder l o ut i l i z ar en el s i gui ent e s er v l et
r i ng nombr eP=( St r i ng) r eq. get Par amet er ( " t x t Nombr e" ) ;
put Val ue( " nombr eCl i ent e" , nombr eP) ;

St r i ng nombr e=( St r i ng) r eq. get Par amet er ( " R1" ) ;


i f ( nombr e. equal s ( " Ot r os " ) )
nombr e=( St r i ng) r eq. get Par amet er ( " t x t Ot r os " ) ;
bool ean ex i s t e = f al s e;
try

10 de 13

{
s et = c on. c r eat eSt at ement ( ) ;
r s = s et . ex ec ut eQuer y ( " SELECT * FROM J ugador es " ) ;
whi l e ( r s . nex t ( ) )
{
c ad = r s . get St r i ng( " Nombr e" ) ;
c ad = c ad. t r i m( ) ;
i f ( c ad. c ompar eTo( nombr e. t r i m( ) ) ==0)
ex i s t e = t r ue;
}
r s . c l os e( ) ;
s et . c l os e( ) ;
}
c at c h( Ex c ept i on e)
{
Sy s t em. out . pr i nt l n( " No l ee de l a t abl a" ) ;
}
try
{
s et = c on. c r eat eSt at ement ( ) ;
i f ( ex i s t e)
s et . ex ec ut eUpdat e( " UPDATE J ugador es SET v ot
" WHERE nombr e LI KE ' %" +
el s e
s et . ex ec ut eUpdat e( " I NSERT I NTO J ugador es "
" ( nombr e, v ot os ) VALUES ( '

os =v ot os +1 " +
nombr e + " %' " ) ;
+
" + nombr e + " ' , 1) " ) ;

r s . c l os e( ) ;
s et . c l os e( ) ;
}
c at c h( Ex c ept i on e)
{
Sy s t em. out . pr i nt l n( " No i ns er t a ni modi f i c a l a t abl a" ) ;
}
/ / Ll amada al s er v l et que nos v i s ual i z a
/ / l as es t ad s t i c as de j ugador es
r es . s endRedi r ec t ( r es . enc odeRedi r ec t URL( " . / Tabl aVot os . j s p" ) ) ;
}
publ i c v oi d doGet ( Ht t pSer v l et Reques t r eq,
Ht t pSer v l et Res pons e r es )
t hr ows Ser v l et Ex c ept i on, I OEx c ept i on
{
t r y{ doPos t ( r eq, r es ) ; } c at c h ( Ex c ept i on e)
{
}
}
publ i c v oi d des t r oy ( )
{
try
{
c on. c l os e( ) ;
}
c at c h ( Ex c ept i on e)
{
}
s uper . des t r oy ( ) ;
}
}

5.4. Servlet que muestra los datos

Por ltimo tendramos la codificacin del servlet que se encarga de mostrar las estadsticas de votos al
cliente. Este es el TablaVotos.java que quedara:
i
i
i
i

mpor t
mpor t
mpor t
mpor t

j
j
j
j

av a. i o. * ;
av ax . s er v l et . * ;
av ax . s er v l et . ht t p. * ;
av a. s ql . * ;

11 de 13

publ i c c l as s Tabl aVot os ex t ends Ht t pSer v l et


{
pr i v at e Connec t i on c on;
pr i v at e St at ement s et ;
pr i v at e Res ul t Set r s ;
publ i c v oi d i ni t ( Ser v l et Conf i g c f g) t hr ows Ser v l et Ex c ept i on
{
St r i ng s URL=" j dbc : my s ql : / / l oc al hos t / BDJ ugador es " ;
s uper . i ni t ( c f g) ;
St r i ng us er Name = " r oot " ;
St r i ng pas s wor d = " admi n" ;
try
{
Cl as s . f or Name ( " c om. my s ql . j dbc . Dr i v er " ) . newI ns t anc e( ) ;
c on = Dr i v er Manager . get Connect i on ( s URL, us er Name, pas s wor d) ;
Sy s t em. out . pr i nt l n( " Se ha c onec t ado" ) ;
}
c at c h( Ex c ept i on e)
{
Sy s t em. out . pr i nt l n( " No s e ha c onec t ado" ) ;
}
}
publ i c v oi d doPos t ( Ht t pSer v l et Reques t r eq, Ht t pSer v l et Res pons e r es )
t hr ows Ser v l et Ex c ept i on, I OEx c ept i on
{
Ht t pSes s i on s = r eq. get Ses s i on( t r ue) ;
/ / Leer el nombr e del c l i ent e de l a s es i n par a dar l e l as
/ / gr ac i as al f i nal
St r i ng nombr eP = ( St r i ng) s . get Val ue( " nombr eCl i ent e" ) ;
Pr i nt Wr i t er out = r es . get Wr i t er ( ) ;
r es . s et Cont ent Ty pe( " t ex t / ht ml " ) ;
out . pr i nt l n( " <ht ml ><head><t i t l e>J DBC</ t i t l e></ head>" ) ;
out . pr i nt l n( " <body ><f ont s i z e=10>" ) ;
out . pr i nt l n( " <h1>Ej empl o de J DBC</ h1>" ) ;
out . pr i nt l n( " <t abl e bor der =1>" ) ;
out . pr i nt l n( " <t r ><t d><b>J ugador </ b></ t d><t d><b>Vot os " +
" </ b></ t d></ t r >" ) ;
try
{
St r i ng nombr e;
i nt v ot os ;
s et = c on. c r eat eSt at ement ( ) ;
r s = s et . ex ec ut eQuer y ( " SELECT * FROM J ugador es " ) ;
whi l e ( r s . nex t ( ) )
{
nombr e = r s . get St r i ng( " Nombr e" ) ;
v ot os = r s . get I nt ( " Vot os " ) ;
out . pr i nt l n( " <t r ><t d>" + nombr e + " </ t d><t d>" +
v ot os + " </ t d></ t r >" ) ;
}
r s . c l os e( ) ;
s et . c l os e( ) ;
}
c at c h( Ex c ept i on e)
{
Sy s t em. out . pr i nt l n( " No l ee de l a t abl a" ) ;
}
out . pr i nt l n( " </ t abl e>" ) ;
out . pr i nt l n( " <h3>Muc has gr ac i as " + nombr eP + " por s u v i s i t a</ h3>" ) ;
out . pr i nt l n( " </ f or m></ f ont ></ body ></ ht ml >" ) ;
out . c l os e( ) ;
}
publ i c v oi d doGet ( Ht t pSer v l et Reques t r eq, Ht t pSer v l et Res pons e r es )
t hr ows Ser v l et Ex c ept i on, I OEx c ept i on
{
t r y { doPos t ( r eq, r es ) ; } c at c h ( Ex c ept i on e) { }
}
publ i c v oi d des t r oy ( )
{
t r y { c on. c l os e( ) ; }
c at c h ( Ex c ept i on e) { }
s uper . des t r oy ( ) ;
}
}

12 de 13

6 . U t iliza c in de J SP
Convertiremos el servlet TablaVotos.java en una pgina JSP, puesto que es la que ms se adecua, ya
que la mayor parte de su cdigo es la confeccin de la pagina HTML de respuesta y quedara mucho
ms claro como pgina JSP que como servlet. Se llamar TablaVotos.jsp y su cdigo sera:
<%@ page l anguage=" j av a" c ont ent Ty pe=" t ex t / ht ml ; c har s et =I SO- 8859- 1"
pageEnc odi ng=" I SO- 8859- 1" %>
<! DOCTYPE ht ml PUBLI C " - / / W3C/ / DTD HTML 4. 01 Tr ans i t i onal / / EN"
" ht t p: / / www. w3. or g/ TR/ ht ml 4/ l oos e. dt d" >
<%@page i mpor t =" j av a. i o. * " %>
<%@page i mpor t =" j av a. ut i l . * " %>
<%@page i mpor t =" j av a. s ql . * " %>
<%@page i mpor t =" j av a. ut i l . * " %>
<ht ml >
<head><t i t l e>J DBC</ t i t l e></ head>
<body ><f ont s i z e=10>
<h1>Ej empl o de J DBC</ h1>
<t abl e bor der =1>
<t r ><t d><b>J ugador </ b></ t d><t d><b>Vot os</ b></ t d></ t r >
<%
Connec t i on c on;
St at ement s et ;
Res ul t Set r s ;
St r i ng s URL=" j dbc : my s ql : / / l oc al hos t / BDJ ugador es " ;
St r i ng us er Name = " r oot " ;
St r i ng pas s wor d = " admi n" ;
try
{
Cl as s . f or Name( " c om. my s ql . j dbc . Dr i v er " ) . newI ns t anc e( ) ;
c on = Dr i v er Manager . get Connec t i on( s URL, us er Name, pas s wor d) ;
Sy s t em. out . pr i nt l n( " Se ha c onec t ado" ) ;
St r i ng nombr e;
i nt v ot os ;
s et = c on. c r eat eSt at ement ( ) ;
r s = s et . ex ec ut eQuer y ( " SELECT * FROM J ugador es " ) ;
whi l e ( r s . nex t ( ) )
{
nombr e = r s . get St r i ng( " Nombr e" ) ;
v ot os = r s . get I nt ( " Vot os " ) ;
out . pr i nt l n( " <t r ><t d>" + nombr e + " </ t d><t d>" + v ot os
+ " </ t d></ t r >" ) ;
}
r s . c l os e( ) ;
s et . c l os e( ) ;
c on. c l os e( ) ;
}
c at c h( Ex c ept i on e)
{
Sy s t em. out . pr i nt l n( " Er r or en ac c es o a BD" ) ;
}
%>
</ t abl e>
<h3>Muc has gr ac i as por s u v i s i t a</ h3>
</ f or m></ f ont ></ body>
</ ht ml >

7 . Am plia c in de la pr c t ic a
Para culminar la prctica se debe desarrollar por parte de los estudiantes las siguientes tareas:

Crear pginas JSP para controlar los posibles errores de acceso a bases de datos.
Convertir Futbol.html en una pgina JSP que dinmicamente se actualice teniendo en cuenta los
nuevos jugadores que se van aadiendo. Es decir, que aparezcan los nuevos jugadores de la
misma forma que los iniciales y que se siga permitiendo aadir nuevos por medio del cuadro de
texto.

13 de 13

S-ar putea să vă placă și