SlideShare una empresa de Scribd logo
1 de 13
Práctica 4
PROGRAMACIÓN WEB CON SERVLETS Y JSP
Tabla de contenidos
1. Introducción a JSP ..................................................................................... 2
1.1. Que es Java Server Page (JSP)? ..................................................................................................................2
1.2. Diferencias entre JSP y Servlet......................................................................................................................2
1.3. Características de JSP...................................................................................................................................2
1.4. Funcionamiento de JSP .................................................................................................................................2
2. Programando con JSP ................................................................................ 3
2.1. Tipos de construcciones JSP .........................................................................................................................3
2.2. Elementos de scriptº.......................................................................................................................................3
2.3. Directivas........................................................................................................................................................4
3. La primera página JSP................................................................................ 4
3.1. Requisitos para probar JSP...........................................................................................................................4
3.2. Objetos Implícitos...........................................................................................................................................5
3.3. Ejemplos de páginas 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. Utilización de Páginas de Error .................................................................. 7
4.1. Excepciones en JSP.......................................................................................................................................7
4.2. Ejemplo de utilización de páginas de error.....................................................................................................8
5. Ejemplo completo de Servlets y JSP con acceso a datos......................... 9
5.1. Requisitos previos ..........................................................................................................................................9
5.2. Página HTML que realiza la petición al servlet ..............................................................................................9
5.3. Servlet que se encarga de actualizar la base de datos................................................................................10
5.4. Servlet que muestra los datos......................................................................................................................11
6. Utilización de JSP..................................................................................... 13
7. Ampliación de la práctica......................................................................... 13
2 de 13
1. Introducción a JSP
1.1. Que es Java Server Page (JSP)?
Es una interfaz de programación de aplicaciones de servidores Web. En una página jsp se
entremezclan bloques de HTML estáticos, y HTML dinámico generados con Java que se ejecutan en el
servidor.
Una página jsp puede procesar formularios Web, acceder a bases de datos y redireccionar a otras
páginas. Las páginas jsp son transformadas a un servlet y después compiladas.
El contenedor JSP proporciona un motor que interpreta y procesa una página JSP como un servlet (en
tomcat, dicho motor se llama jasper). Al estar basadas en los servlets, las distintas peticiones a una
misma página jsp son atendidas por una única instancia del servlet.
1.2. Diferencias entre JSP y Servlet
En JSP, el código de presentación está separado de la lógica del programa, mientras que en un
servlet, el código de presentación se compila dentro de la clase.
En una página JSP el código de presentación puede ser actualizado por un diseñador web que no
conozca Java.
Los servlets se encuentran ya compilados, mientras que las páginas JSP se compilan bajo
petición, lo que hace que la ejecución del servlet sea algo más rápida (en la primera petición).
1.3. Características de JSP
Permiten separar la parte dinámica de la estática en una página web
Las páginas jsp se almacenan en el servidor en archivos con extensión .jsp.
El código JSP es java y se encierra entre: <% y %>, por ejemplo:
<H1>Hora: <%= new java.util.Date() %></H1>
La sintaxis también se puede expresar en formato XML
<jsp:xxx> ... </jsp:xxx>
En una página jsp hay varios objetos implícitos (predefinidos):
request, response, out, session, application, config, pageContext,
page y exception
Cada página JSP es compilada automáticamente hacia un servlet por el motor JSP la primera vez
que se accede a esa página.
Desde una página JSP se puede llamar a un componente JavaBean donde se puede implementar
la lógica de negocio.
1.4. Funcionamiento de JSP
Una página JSP es básicamente una página Web con HTML tradicional y código Java incrustado. La
extensión de fichero de una página JSP es ".jsp" en vez de ".html" o ".htm", y eso le indica al servidor
que esta página requiere un tratamiento especial que se conseguirá con una extensión del servidor o
un plug-in.
El servidor web comprueba si la página 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 página.
3 de 13
Cuando un cliente solicita una página jsp, se ejecuta en el servidor el código JSP de la página, dando
como resultado una página HTML que se fusiona con el HTML original, generando una página HTML
de respuesta que será enviada al cliente.
2. Programando con JSP
2.1. Tipos de construcciones JSP
Elementos de script:
o Permiten especificar código 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:
<%= expresión Java %>
<jsp:expr> ... </jsp:expr>
Por ejemplo:
hora:<%= new java.util.Date() %>
Las expresiones tienen acceso a los objetos implícitos. Por ejemplo:
<%= "Método envío formulario: " + request.getMethod() %>
Ejemplo con XML:
<jsp:expr>
"Método envío formulario: " + request.getMethod()
</jsp:expr>
Scriptlets: Permiten insertar código Java directamente en la página JSP.
<% codigo Java; %>
<jsp:scriptlet> ... </jsp:scriptlet>
Por ejemplo:
<% i = 7; %>
Los scriplets tienen acceso a los objetos implícitos. Por ejemplo:
<% String str = “hola”;
out.println(str); %>
Ejemplo con XML:
<jsp:scriptlet>
String str = “hola”;
out.println(str);
</jsp:scriptlet>
4 de 13
Declaraciones: Permiten definir las variables o métodos que serán utilizados en la página. No tienen
acceso a los objetos implícitos. La sintaxis es:
<%! declaración Java; %>
<jsp:decl> ... </jsp:decl>
Por ejemplo:
<%! private int i = 5; %>
<%= i %>
Ejemplo con XML:
<jsp:decl>
int i = 5;
</jsp:decl>
<jsp:expr>
“i: " + i
</jsp:expr>
2.3. Directivas
Directiva page: Permite definir uno o más atributos.
<%@ page attributo=“valor” %>
<jsp:directive.page attributo=“valor”/>
Los atributos serían:
import="paquete.clase"
contentType="MIME-Type"
isThreadSafe="true|false"
session="true|false"
buffer="sizekb|none"
autoFlush="true|false"
extends="package.class"
info="message"
errorPage="url"
isErrorPage="true|false"
nlanguage="java“
Por ejemplo:
<%@ page import=“java.util.*” %>
Ejemplo con XML:
<jsp:directive.page import=“java.util.*”/>
Directiva include: Permite incluir ficheros en la pagina JSP. Inserta el fichero en tiempo de
compilación. La sintaxis es:
<%@ include file=“url” %>
<jsp:directive.include file=“url”/>
Por ejemplo:
<%@ include file=“pagina.html” %>
Ejemplo con XML:
<jsp:directive.include file=“pagina.html”/>
3. La primera página JSP
3.1. Requisitos para probar JSP
Cualquier servidor web que soporte Servlets (Apache Tomcat 5.X, se encuentra en la dirección
http://tomcat.apache.org/)
Instalar Web Tools Platform (WTP) plugin a eclipse, o descargar la versión 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 están
incluidos como jar externos).
5 de 13
3.2. Objetos Implícitos
Los objetos implícitos también son llamados variables predefinidas y se utilizan directamente, sin
crearlos. A continuación se muestra una tabla con los objetos implícitos que pueden ser utilizados
desde las páginas JSP:
La mayoría de los objetos implícitos provienen de la clase abstracta javax.servlet.jsp.PageContext.
Cuando se compila la JSP, el servlet que se obtiene, contiene la creación de estos objetos implícitos
dentro del método _jspService:
public void _jspService
( HttpServletRequest request,
HttpServletResponse response ) throws IOException, ServletException
{
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
...
pageContext =
_jspxFactory.getPageContext(this, request, response, "", true,
8192, true);
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
...
}
java.lang.Object
javax.servlet.jsp.PageContext
javax.servlet.ServletConfig
java.lang.Throwable
javax.servlet.jsp.JspWriter
javax.servlet.http.HttpServletRespon
se
javax.servlet.http.HttpServletReques
t
javax.servlet.http.HttpSession
javax.servlet.ServletContext
Tipo
pageEnvía datos al cliente
pageLa propia página JSPpage
pageEs de donde se obtienen
algunos objetos implícitos
pageConte
xt
pageRepresenta la configuración del
Servlet
config
pageInformación último errorexception
pageEnvía la salida al clienteout
requestExtrae datos del clienterequest
sessionSesión de un clientesession
applicationRepresenta el contexto en el
que se ejecutan las JSPapplication
ÁmbitoDescripciónObjeto
6 de 13
3.3. Ejemplos de páginas JSP sencillas
En estos ejemplos se mostrará la utilización de las distintas construcciones JSP vistas anteriormente.
Para la realización de las pruebas crearemos un nuevo proyecto Web Dinámico llamado jsp, en el cuál
crearemos los estos ejemplos.
Ejemplo de Expresiones (Expresiones.jsp)
<%@ 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>Expresiones JSP</title>
</head>
<body>
<H1>Ejemplo de expresiones JSP</H1>
<UL>
<LI>Fecha actual: <%=new java.util.Date()%>
<LI>Nombre del host: <%=request.getRemoteHost()%>
<LI>ID de la sesión: <%=session.getId()%>
<LI>El parámetro es: <%=request.getParameter("nombre")%>
</UL>
</body>
</html>
Para probarlo, publicar la página en el servidor web e invocarla desde el navegador:
http://localhost:8080/jsp/Expresiones.jsp
http://localhost:8080/jsp/Expresiones.jsp?nombre=Alumnos_Felices
Ejemplo de Scriplets (Color.jsp)
<%@ 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>Scriptlets JSP</title>
<%
String bgColor=request.getParameter("bgColor");
boolean hayColor;
if (bgColor!=null) hayColor=true; else
{
hayColor=false;
bgColor="WHITE";
}
%>
</head>
<body BGCOLOR="<%=bgColor%>">
<H1>Ejemplo de scriptlets JSP</H1>
<%
if (hayColor) out.println("Se ha utilizado el color: " + bgColor);
else out.println("Se ha utilizado el color por defecto: WHITE");
%>
</body>
</html>
Para probarlo, publicar la página en el servidor web e invocarla desde el navegador:
http://localhost:8080/jsp/Color.jsp
http://localhost:8080/jsp/Color.jsp?bgColor=RED
7 de 13
Ejemplo de declaraciones y directiva page (Contador.jsp)
<%@page import="java.util.*"%>
<%-- Esto en un comentario de JSP --%>
<%!
private int cont=0;
private Date fecha= new Date();
private String host="<I>Sin acceso previo</I>";
%>
<p>Esta página ha sido accedida <b><%= ++cont%></b> veces desde que
se inició el servidor.</p>
<p>El último acceso ha sido desde: <b><%=host%></b> con fecha
<b><%=fecha%></b></p>
<%
host=request.getRemoteHost();
fecha=new Date();
%>
Para probarlo, publicar la página en el servidor web e invocarla desde el navegador:
http://localhost:8080/jsp/Contador.jsp
Ejemplo de directiva include (Empresa.jsp)
<%@ 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>Ejemplo de uso de un contador incluido en un JSP</title>
</head>
<body>
<H1>Ejemplo de uso de un contador incluido en un JSP</H1>
<%@include file="Contador.jsp"%>
</body>
</html>
Para probarlo, publicar la página en el servidor web e invocarla desde el navegador:
http://localhost:8080/jsp/Empresa.jsp
4. Utilización de Páginas de Error
4.1. Excepciones en JSP
La gestión de excepciones en JSP se lleva a cabo a través 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 podría indicarse como:
public Object metodo() throws NullPointerException { ... }
Escribir una JSP que será la página 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 página:
<%@ page isErrorPage=“true” import=“java.util.*” %>
En la página de error usar el objeto exception para obtener información de la excepción
<%= exception.toString() %>
<% exception.printStackTrace(); %>
En las JSP que usan el componente, indicar qué página se ejecutará si se produce algún error,
mediante la directiva page, estableciendo errorPage a la página de error.
<%@ page isThreadSafe=“false” import=“java.util.*” errorPage=“error.jsp” %>
8 de 13
4.2. Ejemplo de utilización de páginas de error
A continuación mostramos un ejemplo en el que intervienen dos páginas, la página que puede provocar
la excepción o lanzar el error (Division.jsp) y la página que saldrá como tratamiento de la excepción
(ErrDiv.jsp). La página Division.jsp podría quedar codificada de la siguiente forma:
<%@ 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>Manejo de errores de JSP</title>
</head>
<body >
<%@page errorPage="ErrDiv.jsp"%>
<H1>Ejemplo de manejo de errores en JSP</H1>
<%!
private double toDouble(String value)
{
return(Double.valueOf(value).doubleValue());
}
%>
<%
double op1 = toDouble(request.getParameter("op1"));
double op2= toDouble(request.getParameter("op2"));
double res = op1/op2;
%>
<TABLE border=1>
<TR><TH></TH><TH>División</TH></TR>
<TR><TH>Operando 1: </TH><Td><%=op1%></Td></TR>
<TR><TH>Operando 2: </TH><Td><%=op2%></Td></TR>
<TR><TH>Resultado: </TH><Td><%=res%></Td></TR>
</TABLE>
</body>
</html>
La página de error ErrDiv.jsp quedaría 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>Página de errores en JSP</title>
</head>
<body >
<%@page isErrorPage="true"%>
<H1>Página 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 página en el servidor web e invocarla desde el navegador:
http://localhost:8080/jsp/Division.jsp?op1=12&op2=6
http://localhost:8080/jsp/Division.jsp?op1=12&op2=0
Para que salga la página de error, uno de los operándoos tiene que ser una letra o no pasar
parámetros:
http://localhost:8080/jsp/Division.jsp?op1=12&op2=
http://localhost:8080/jsp/Division.jsp?op1=12&op2=a
9 de 13
5. Ejemplo completo de Servlets y JSP con acceso a datos
Partiendo del ejemplo de los jugadores de fútbol de la práctica anterior, vamos a desarrollar un ejemplo
en el que utilizaremos primeramente la página web Futbol.html que se ampliará para permitir votar por
un jugador. Luego esta información 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 cómo han quedado las estadísticas de votos.
5.1. Requisitos previos
Es necesario tener disponible los ejemplos de la práctica 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 Tipo
Nombre Varchar (50)
Votos Integer
Tabla Registro:
Campo Tipo
Nombre Varchar (50)
Correo Varchar (30)
Visitas Integer
La tabla de Jugadores se rellenará inicialmente con datos de algunos jugadores y se pondrán a 0 los
votos de cada uno. Por ejemplo:
Nombre Votos
Roberto Carlos 0
Raul 0
Torres 0
Ronaldinho 0
Ronaldo 0
Figo 0
Zidane 0
5.2. Página HTML que realiza la petición al servlet
La página HTML Futbol.html permitirá que un cliente introduzca su nombre y correo y pueda emitir su
voto por algún jugador de los que se visualizan. Si no le gusta ninguno, podrá añadir un nuevo jugador.
Esta página enviará su petición al servlet Futbol.java para que éste se encargue de actualizar la base
de datos. La página tendría el siguiente código:
<html>
<head>
<title>Estadísticas de Futbol</title>
</head>
<body>
<center><H1>Estadísticas de Jugadores de Futbol</H1></center>
<p align="center"><font color="#002424" size="7"><u>VOTE POR EL MEJOR
JUGADOR</u></font></p>
<p align="center"><font color="#002424" size="7"><u>DE FUTBOL DE
10 de 13
2003</u></font></p>
<form action="./Futbol" method="POST" left>
<p align="left">Nombre del Visitante: <input type="text" size="20"
name="txtNombre">
eMail: <input type="text" size="20" name="txtMail"></p>
<p align="left"><input type="radio" name="R1" value="Roberto Carlos">Roberto
Carlos</p>
<p align="left"><input type="radio" name="R1" value="Raul">Raul</p>
...
<p align="left"><input type="radio" name="R1" value="Otros">Otros <input
type="text" size="20" name="txtOtros"></p>
<p align="left"><input type="submit" name="B1" value="Votar"> <input
type="reset" name="B2" value="Reset"></p>
</form>
</body>
</html>
5.3. Servlet que se encarga de actualizar la base de datos
A continuación mostramos el código del servlet Futbol.java que atenderá la petición
de Futbol.html, conectándose 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 pondrán sus votos a 1.
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
public class Futbol extends HttpServlet
{
private Connection con;
private Statement set;
private ResultSet rs;
String cad;
public void init(ServletConfig cfg) throws ServletException
{
String sURL="jdbc:mysql://localhost/BDJugadores";
super.init(cfg);
String userName = "root";
String password = "admin";
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection(sURL, userName, password);
System.out.println("Se ha conectado");
}
catch(Exception e)
{
System.out.println( "No se ha conectado");
}
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
// Obtener la sesion
HttpSession s = req.getSession(true);
// Guardar el nombre del cliente en la sesión
// para poderlo utilizar en el siguiente servlet
String nombreP=(String)req.getParameter("txtNombre");
s.putValue("nombreCliente", nombreP);
String nombre=(String)req.getParameter("R1");
if (nombre.equals("Otros"))
nombre=(String)req.getParameter("txtOtros");
boolean existe = false;
try
11 de 13
{
set = con.createStatement();
rs = set.executeQuery("SELECT * FROM Jugadores");
while (rs.next())
{
cad = rs.getString("Nombre");
cad = cad.trim();
if (cad.compareTo(nombre.trim())==0)
existe = true;
}
rs.close();
set.close();
}
catch(Exception e)
{
System.out.println("No lee de la tabla");
}
try
{
set = con.createStatement();
if (existe)
set.executeUpdate( "UPDATE Jugadores SET votos=votos+1 " +
"WHERE nombre LIKE '%" + nombre + "%'");
else
set.executeUpdate( "INSERT INTO Jugadores " +
"(nombre,votos) VALUES ('" + nombre + "',1)");
rs.close();
set.close();
}
catch(Exception e)
{
System.out.println( "No inserta ni modifica la tabla");
}
// Llamada al servlet que nos visualiza
// las estadísticas de jugadores
res.sendRedirect(res.encodeRedirectURL("./TablaVotos.jsp"));
}
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
try{doPost(req,res);}catch (Exception e)
{
}
}
public void destroy()
{
try
{
con.close();
}
catch (Exception e)
{
}
super.destroy();
}
}
5.4. Servlet que muestra los datos
Por último tendríamos la codificación del servlet que se encarga de mostrar las estadísticas de votos al
cliente. Este es el TablaVotos.java que quedaría:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
12 de 13
public class TablaVotos extends HttpServlet
{
private Connection con;
private Statement set;
private ResultSet rs;
public void init(ServletConfig cfg) throws ServletException
{
String sURL="jdbc:mysql://localhost/BDJugadores";
super.init(cfg);
String userName = "root";
String password = "admin";
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection(sURL, userName, password);
System.out.println("Se ha conectado");
}
catch(Exception e)
{
System.out.println("No se ha conectado");
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res)
throws ServletException, IOException
{
HttpSession s = req.getSession(true);
//Leer el nombre del cliente de la sesión para darle las
//gracias al final
String nombreP = (String)s.getValue("nombreCliente");
PrintWriter out = res.getWriter();
res.setContentType("text/html");
out.println("<html><head><title>JDBC</title></head>");
out.println("<body><font size=10>");
out.println("<h1>Ejemplo de JDBC</h1>");
out.println("<table border=1>");
out.println("<tr><td><b>Jugador</b></td><td><b>Votos" +
"</b></td></tr>");
try
{
String nombre;
int votos;
set = con.createStatement();
rs = set.executeQuery("SELECT * FROM Jugadores");
while (rs.next())
{
nombre = rs.getString("Nombre");
votos = rs.getInt("Votos");
out.println("<tr><td>"+ nombre + "</td><td>" +
votos + "</td></tr>");
}
rs.close();
set.close();
}
catch(Exception e)
{
System.out.println("No lee de la tabla");
}
out.println("</table>");
out.println("<h3>Muchas gracias " + nombreP + " por su visita</h3>");
out.println("</form></font></body></html>");
out.close();
}
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
try{doPost(req,res);}catch (Exception e){}
}
public void destroy()
{
try {con.close();}
catch (Exception e){}
super.destroy();
}
}
13 de 13
6. Utilización de JSP
Convertiremos el servlet TablaVotos.java en una página JSP, puesto que es la que más se adecua, ya
que la mayor parte de su código es la confección de la pagina HTML de respuesta y quedaría mucho
más claro como página JSP que como servlet. Se llamará TablaVotos.jsp y su código sería:
<%@ 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">
<%@page import="java.io.*"%>
<%@page import="java.util.*"%>
<%@page import="java.sql.*"%>
<%@page import="java.util.*"%>
<html>
<head><title>JDBC</title></head>
<body><font size=10>
<h1>Ejemplo de JDBC</h1>
<table border=1>
<tr><td><b>Jugador</b></td><td><b>Votos</b></td></tr>
<%
Connection con;
Statement set;
ResultSet rs;
String sURL="jdbc:mysql://localhost/BDJugadores";
String userName = "root";
String password = "admin";
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection(sURL, userName, password);
System.out.println("Se ha conectado");
String nombre;
int votos;
set = con.createStatement();
rs = set.executeQuery("SELECT * FROM Jugadores");
while (rs.next())
{
nombre = rs.getString("Nombre");
votos = rs.getInt("Votos");
out.println("<tr><td>"+ nombre + "</td><td>" + votos
+ "</td></tr>");
}
rs.close();
set.close();
con.close();
}
catch(Exception e)
{
System.out.println("Error en acceso a BD");
}
%>
</table>
<h3>Muchas gracias por su visita</h3>
</form></font></body>
</html>
7. Ampliación de la práctica
Para culminar la práctica se debe desarrollar por parte de los estudiantes las siguientes tareas:
Crear páginas JSP para controlar los posibles errores de acceso a bases de datos.
Convertir Futbol.html en una página JSP que dinámicamente se actualice teniendo en cuenta los
nuevos jugadores que se van añadiendo. Es decir, que aparezcan los nuevos jugadores de la
misma forma que los iniciales y que se siga permitiendo añadir nuevos por medio del cuadro de
texto.

Más contenido relacionado

La actualidad más candente

Capa de presentacion jsp
Capa de presentacion jspCapa de presentacion jsp
Capa de presentacion jsp
mirianapaola
 
Jsp(java server pages)
Jsp(java server pages)Jsp(java server pages)
Jsp(java server pages)
diegob1098
 
JSP
JSP JSP
Prg3 3x02
Prg3 3x02Prg3 3x02
Prg3 3x02
Jorge Juárez
 
Manual programacion - java - jsp & xml
Manual   programacion - java - jsp & xmlManual   programacion - java - jsp & xml
Manual programacion - java - jsp & xml
gilhorak
 
Jsp
JspJsp
Elementos de JSP
Elementos de JSPElementos de JSP
Elementos de JSP
lauijure
 
Java web Lección 04 - JSTL
Java web Lección 04 - JSTLJava web Lección 04 - JSTL
Java web Lección 04 - JSTL
Eric Gustavo Coronel Castillo
 
Curso Java Avanzado 2 Servlets
Curso Java Avanzado   2 ServletsCurso Java Avanzado   2 Servlets
Curso Java Avanzado 2 Servlets
Emilio Aviles Avila
 
09b jsf (1)
09b jsf (1)09b jsf (1)
09b jsf (1)
UTN
 
Servlets y jsp
Servlets y jspServlets y jsp
Servlets y jsp
dtbadboy0
 
componentes de jsp
componentes de jsp componentes de jsp
componentes de jsp
Angie2331
 
JSP Objetos
JSP ObjetosJSP Objetos
JSP Objetos
Natyhn
 
Jsp servlet- Tutorial BD Conexión
Jsp servlet- Tutorial BD ConexiónJsp servlet- Tutorial BD Conexión
Jsp servlet- Tutorial BD Conexión
Pattzy Montero
 
5 c arquitecturas_aplicaciones_web
5 c arquitecturas_aplicaciones_web5 c arquitecturas_aplicaciones_web
5 c arquitecturas_aplicaciones_web
Juy JLopez
 
06. jsf (java server faces) (1)
06. jsf (java server faces) (1)06. jsf (java server faces) (1)
06. jsf (java server faces) (1)
Michael Mieles Caballero
 
jsp - funcionamiento
jsp - funcionamientojsp - funcionamiento
jsp - funcionamiento
Boris Salleg
 
Resumen jee
Resumen jeeResumen jee
Java Web 00 - Contexto
Java Web 00 - ContextoJava Web 00 - Contexto
Java Web 00 - Contexto
Eric Gustavo Coronel Castillo
 

La actualidad más candente (19)

Capa de presentacion jsp
Capa de presentacion jspCapa de presentacion jsp
Capa de presentacion jsp
 
Jsp(java server pages)
Jsp(java server pages)Jsp(java server pages)
Jsp(java server pages)
 
JSP
JSP JSP
JSP
 
Prg3 3x02
Prg3 3x02Prg3 3x02
Prg3 3x02
 
Manual programacion - java - jsp & xml
Manual   programacion - java - jsp & xmlManual   programacion - java - jsp & xml
Manual programacion - java - jsp & xml
 
Jsp
JspJsp
Jsp
 
Elementos de JSP
Elementos de JSPElementos de JSP
Elementos de JSP
 
Java web Lección 04 - JSTL
Java web Lección 04 - JSTLJava web Lección 04 - JSTL
Java web Lección 04 - JSTL
 
Curso Java Avanzado 2 Servlets
Curso Java Avanzado   2 ServletsCurso Java Avanzado   2 Servlets
Curso Java Avanzado 2 Servlets
 
09b jsf (1)
09b jsf (1)09b jsf (1)
09b jsf (1)
 
Servlets y jsp
Servlets y jspServlets y jsp
Servlets y jsp
 
componentes de jsp
componentes de jsp componentes de jsp
componentes de jsp
 
JSP Objetos
JSP ObjetosJSP Objetos
JSP Objetos
 
Jsp servlet- Tutorial BD Conexión
Jsp servlet- Tutorial BD ConexiónJsp servlet- Tutorial BD Conexión
Jsp servlet- Tutorial BD Conexión
 
5 c arquitecturas_aplicaciones_web
5 c arquitecturas_aplicaciones_web5 c arquitecturas_aplicaciones_web
5 c arquitecturas_aplicaciones_web
 
06. jsf (java server faces) (1)
06. jsf (java server faces) (1)06. jsf (java server faces) (1)
06. jsf (java server faces) (1)
 
jsp - funcionamiento
jsp - funcionamientojsp - funcionamiento
jsp - funcionamiento
 
Resumen jee
Resumen jeeResumen jee
Resumen jee
 
Java Web 00 - Contexto
Java Web 00 - ContextoJava Web 00 - Contexto
Java Web 00 - Contexto
 

Destacado

Master j2ee
Master j2eeMaster j2ee
Master j2ee
sergioap40
 
Modulo Jee Practica Pos Fp Une
Modulo Jee Practica  Pos Fp UneModulo Jee Practica  Pos Fp Une
Modulo Jee Practica Pos Fp Une
Marcos Jara
 
Resumen de la sintaxis jsp
Resumen de la sintaxis jspResumen de la sintaxis jsp
Resumen de la sintaxis jsp
Boris Salleg
 
Modelo Java Enterprise Edition
Modelo Java Enterprise EditionModelo Java Enterprise Edition
Modelo Java Enterprise Edition
Araceli Justo
 
Intro jsf
Intro jsfIntro jsf
Intro jsf
René Pilataxi
 
Websocket,JSON in JEE7
Websocket,JSON in JEE7Websocket,JSON in JEE7
Websocket,JSON in JEE7
PrasannaKumar Sathyanarayanan
 
Sesion 3. desarrollo de aplicaciones jee
Sesion 3. desarrollo de aplicaciones jeeSesion 3. desarrollo de aplicaciones jee
Sesion 3. desarrollo de aplicaciones jee
Héctor Santos
 
Desarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EEDesarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EE
Fernando Montaño
 
Introducción a JEE
Introducción a JEEIntroducción a JEE
Introducción a JEE
Iker Canarias
 
Manejo de archivos en JAVA
Manejo de archivos en JAVAManejo de archivos en JAVA
Manejo de archivos en JAVA
Michelle Torres
 
Curso Java Avanzado 5 Ejb
Curso Java Avanzado   5 EjbCurso Java Avanzado   5 Ejb
Curso Java Avanzado 5 Ejb
Emilio Aviles Avila
 
Jsp
JspJsp

Destacado (12)

Master j2ee
Master j2eeMaster j2ee
Master j2ee
 
Modulo Jee Practica Pos Fp Une
Modulo Jee Practica  Pos Fp UneModulo Jee Practica  Pos Fp Une
Modulo Jee Practica Pos Fp Une
 
Resumen de la sintaxis jsp
Resumen de la sintaxis jspResumen de la sintaxis jsp
Resumen de la sintaxis jsp
 
Modelo Java Enterprise Edition
Modelo Java Enterprise EditionModelo Java Enterprise Edition
Modelo Java Enterprise Edition
 
Intro jsf
Intro jsfIntro jsf
Intro jsf
 
Websocket,JSON in JEE7
Websocket,JSON in JEE7Websocket,JSON in JEE7
Websocket,JSON in JEE7
 
Sesion 3. desarrollo de aplicaciones jee
Sesion 3. desarrollo de aplicaciones jeeSesion 3. desarrollo de aplicaciones jee
Sesion 3. desarrollo de aplicaciones jee
 
Desarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EEDesarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EE
 
Introducción a JEE
Introducción a JEEIntroducción a JEE
Introducción a JEE
 
Manejo de archivos en JAVA
Manejo de archivos en JAVAManejo de archivos en JAVA
Manejo de archivos en JAVA
 
Curso Java Avanzado 5 Ejb
Curso Java Avanzado   5 EjbCurso Java Avanzado   5 Ejb
Curso Java Avanzado 5 Ejb
 
Jsp
JspJsp
Jsp
 

Similar a Practica jsp

Sesion06 apuntes
Sesion06 apuntesSesion06 apuntes
Sesion06 apuntes
AnthonyFisi
 
Jsp Paginacion
Jsp PaginacionJsp Paginacion
Jsp Paginacion
luis angel aranda
 
Programacion Web 2o dept
Programacion Web 2o deptProgramacion Web 2o dept
Programacion Web 2o dept
Leonardo Moreno
 
Java Web - JSP
Java Web - JSPJava Web - JSP
Java Web - JSP
Luis Miguel De Bello
 
JavaServer Page
JavaServer PageJavaServer Page
[ES] Introdución al desarrollo de aplicaciones web en java
[ES] Introdución al desarrollo de aplicaciones  web en java[ES] Introdución al desarrollo de aplicaciones  web en java
[ES] Introdución al desarrollo de aplicaciones web en java
Eudris Cabrera
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a Tomcat
Iker Canarias
 
Java Web Lección 02 - JSP
Java Web Lección 02 - JSPJava Web Lección 02 - JSP
Java Web Lección 02 - JSP
Eric Gustavo Coronel Castillo
 
Herramientas de Desarrollo de Sistemas
Herramientas de Desarrollo de SistemasHerramientas de Desarrollo de Sistemas
Herramientas de Desarrollo de Sistemas
José Tomás Diarte Añazco
 
Tema2a Jsp
Tema2a JspTema2a Jsp
Tema2a Jsp
guest03a5107
 
Jsp
JspJsp
[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java
Eudris Cabrera
 
JSP
JSPJSP
JSP
JSPJSP
Aplicaciones web
Aplicaciones webAplicaciones web
Aplicaciones web
Felipe
 
Módulo 7–Programación Web con Java.pdf
Módulo 7–Programación Web con Java.pdfMódulo 7–Programación Web con Java.pdf
Módulo 7–Programación Web con Java.pdf
tripfrap
 
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component DeveloperGuia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
Oscar V
 
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-20065. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
Samuel Marrero
 
JSP
JSP JSP
Introduccion java ser
Introduccion java serIntroduccion java ser
Introduccion java ser
Centro Educativos JSP / UTP
 

Similar a Practica jsp (20)

Sesion06 apuntes
Sesion06 apuntesSesion06 apuntes
Sesion06 apuntes
 
Jsp Paginacion
Jsp PaginacionJsp Paginacion
Jsp Paginacion
 
Programacion Web 2o dept
Programacion Web 2o deptProgramacion Web 2o dept
Programacion Web 2o dept
 
Java Web - JSP
Java Web - JSPJava Web - JSP
Java Web - JSP
 
JavaServer Page
JavaServer PageJavaServer Page
JavaServer Page
 
[ES] Introdución al desarrollo de aplicaciones web en java
[ES] Introdución al desarrollo de aplicaciones  web en java[ES] Introdución al desarrollo de aplicaciones  web en java
[ES] Introdución al desarrollo de aplicaciones web en java
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a Tomcat
 
Java Web Lección 02 - JSP
Java Web Lección 02 - JSPJava Web Lección 02 - JSP
Java Web Lección 02 - JSP
 
Herramientas de Desarrollo de Sistemas
Herramientas de Desarrollo de SistemasHerramientas de Desarrollo de Sistemas
Herramientas de Desarrollo de Sistemas
 
Tema2a Jsp
Tema2a JspTema2a Jsp
Tema2a Jsp
 
Jsp
JspJsp
Jsp
 
[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java
 
JSP
JSPJSP
JSP
 
JSP
JSPJSP
JSP
 
Aplicaciones web
Aplicaciones webAplicaciones web
Aplicaciones web
 
Módulo 7–Programación Web con Java.pdf
Módulo 7–Programación Web con Java.pdfMódulo 7–Programación Web con Java.pdf
Módulo 7–Programación Web con Java.pdf
 
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component DeveloperGuia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
 
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-20065. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
 
JSP
JSP JSP
JSP
 
Introduccion java ser
Introduccion java serIntroduccion java ser
Introduccion java ser
 

Último

Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
al050121024
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
gisellearanguren1
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
cbtechchihuahua
 
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
AbrahamCastillo42
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
larapalaciosmonzon28
 
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMAUML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
martinezluis17
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
leia ereni
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
cecypozos703
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
YashiraPaye
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
AMADO SALVADOR
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
doctorsoluciones34
 
El uso de las TIC's en la vida cotidiana
El uso de las TIC's en la vida cotidianaEl uso de las TIC's en la vida cotidiana
El uso de las TIC's en la vida cotidiana
231458066
 
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajasSlideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
AdrianaRengifo14
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
larapalaciosmonzon28
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
KukiiSanchez
 
trabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdk
trabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdktrabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdk
trabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdk
KukiiSanchez
 
CURSO CAMARAS DE SEGURIDAD 2023 FINAL .pdf
CURSO CAMARAS DE SEGURIDAD 2023 FINAL .pdfCURSO CAMARAS DE SEGURIDAD 2023 FINAL .pdf
CURSO CAMARAS DE SEGURIDAD 2023 FINAL .pdf
LagsSolucSoporteTecn
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
Paola De la Torre
 
La Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docxLa Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docx
luiscohailatenazoa0
 
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
codesiret
 

Último (20)

Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
 
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
 
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMAUML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
 
El uso de las TIC's en la vida cotidiana
El uso de las TIC's en la vida cotidianaEl uso de las TIC's en la vida cotidiana
El uso de las TIC's en la vida cotidiana
 
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajasSlideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
 
trabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdk
trabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdktrabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdk
trabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdk
 
CURSO CAMARAS DE SEGURIDAD 2023 FINAL .pdf
CURSO CAMARAS DE SEGURIDAD 2023 FINAL .pdfCURSO CAMARAS DE SEGURIDAD 2023 FINAL .pdf
CURSO CAMARAS DE SEGURIDAD 2023 FINAL .pdf
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
 
La Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docxLa Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docx
 
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
 

Practica jsp

  • 1. 1 de 13 Práctica 4 PROGRAMACIÓN WEB CON SERVLETS Y JSP Tabla de contenidos 1. Introducción a JSP ..................................................................................... 2 1.1. Que es Java Server Page (JSP)? ..................................................................................................................2 1.2. Diferencias entre JSP y Servlet......................................................................................................................2 1.3. Características de JSP...................................................................................................................................2 1.4. Funcionamiento de JSP .................................................................................................................................2 2. Programando con JSP ................................................................................ 3 2.1. Tipos de construcciones JSP .........................................................................................................................3 2.2. Elementos de scriptº.......................................................................................................................................3 2.3. Directivas........................................................................................................................................................4 3. La primera página JSP................................................................................ 4 3.1. Requisitos para probar JSP...........................................................................................................................4 3.2. Objetos Implícitos...........................................................................................................................................5 3.3. Ejemplos de páginas 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. Utilización de Páginas de Error .................................................................. 7 4.1. Excepciones en JSP.......................................................................................................................................7 4.2. Ejemplo de utilización de páginas de error.....................................................................................................8 5. Ejemplo completo de Servlets y JSP con acceso a datos......................... 9 5.1. Requisitos previos ..........................................................................................................................................9 5.2. Página HTML que realiza la petición al servlet ..............................................................................................9 5.3. Servlet que se encarga de actualizar la base de datos................................................................................10 5.4. Servlet que muestra los datos......................................................................................................................11 6. Utilización de JSP..................................................................................... 13 7. Ampliación de la práctica......................................................................... 13
  • 2. 2 de 13 1. Introducción a JSP 1.1. Que es Java Server Page (JSP)? Es una interfaz de programación de aplicaciones de servidores Web. En una página jsp se entremezclan bloques de HTML estáticos, y HTML dinámico generados con Java que se ejecutan en el servidor. Una página jsp puede procesar formularios Web, acceder a bases de datos y redireccionar a otras páginas. Las páginas jsp son transformadas a un servlet y después compiladas. El contenedor JSP proporciona un motor que interpreta y procesa una página JSP como un servlet (en tomcat, dicho motor se llama jasper). Al estar basadas en los servlets, las distintas peticiones a una misma página jsp son atendidas por una única instancia del servlet. 1.2. Diferencias entre JSP y Servlet En JSP, el código de presentación está separado de la lógica del programa, mientras que en un servlet, el código de presentación se compila dentro de la clase. En una página JSP el código de presentación puede ser actualizado por un diseñador web que no conozca Java. Los servlets se encuentran ya compilados, mientras que las páginas JSP se compilan bajo petición, lo que hace que la ejecución del servlet sea algo más rápida (en la primera petición). 1.3. Características de JSP Permiten separar la parte dinámica de la estática en una página web Las páginas jsp se almacenan en el servidor en archivos con extensión .jsp. El código JSP es java y se encierra entre: <% y %>, por ejemplo: <H1>Hora: <%= new java.util.Date() %></H1> La sintaxis también se puede expresar en formato XML <jsp:xxx> ... </jsp:xxx> En una página jsp hay varios objetos implícitos (predefinidos): request, response, out, session, application, config, pageContext, page y exception Cada página JSP es compilada automáticamente hacia un servlet por el motor JSP la primera vez que se accede a esa página. Desde una página JSP se puede llamar a un componente JavaBean donde se puede implementar la lógica de negocio. 1.4. Funcionamiento de JSP Una página JSP es básicamente una página Web con HTML tradicional y código Java incrustado. La extensión de fichero de una página JSP es ".jsp" en vez de ".html" o ".htm", y eso le indica al servidor que esta página requiere un tratamiento especial que se conseguirá con una extensión del servidor o un plug-in. El servidor web comprueba si la página 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 página.
  • 3. 3 de 13 Cuando un cliente solicita una página jsp, se ejecuta en el servidor el código JSP de la página, dando como resultado una página HTML que se fusiona con el HTML original, generando una página HTML de respuesta que será enviada al cliente. 2. Programando con JSP 2.1. Tipos de construcciones JSP Elementos de script: o Permiten especificar código 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: <%= expresión Java %> <jsp:expr> ... </jsp:expr> Por ejemplo: hora:<%= new java.util.Date() %> Las expresiones tienen acceso a los objetos implícitos. Por ejemplo: <%= "Método envío formulario: " + request.getMethod() %> Ejemplo con XML: <jsp:expr> "Método envío formulario: " + request.getMethod() </jsp:expr> Scriptlets: Permiten insertar código Java directamente en la página JSP. <% codigo Java; %> <jsp:scriptlet> ... </jsp:scriptlet> Por ejemplo: <% i = 7; %> Los scriplets tienen acceso a los objetos implícitos. Por ejemplo: <% String str = “hola”; out.println(str); %> Ejemplo con XML: <jsp:scriptlet> String str = “hola”; out.println(str); </jsp:scriptlet>
  • 4. 4 de 13 Declaraciones: Permiten definir las variables o métodos que serán utilizados en la página. No tienen acceso a los objetos implícitos. La sintaxis es: <%! declaración Java; %> <jsp:decl> ... </jsp:decl> Por ejemplo: <%! private int i = 5; %> <%= i %> Ejemplo con XML: <jsp:decl> int i = 5; </jsp:decl> <jsp:expr> “i: " + i </jsp:expr> 2.3. Directivas Directiva page: Permite definir uno o más atributos. <%@ page attributo=“valor” %> <jsp:directive.page attributo=“valor”/> Los atributos serían: import="paquete.clase" contentType="MIME-Type" isThreadSafe="true|false" session="true|false" buffer="sizekb|none" autoFlush="true|false" extends="package.class" info="message" errorPage="url" isErrorPage="true|false" nlanguage="java“ Por ejemplo: <%@ page import=“java.util.*” %> Ejemplo con XML: <jsp:directive.page import=“java.util.*”/> Directiva include: Permite incluir ficheros en la pagina JSP. Inserta el fichero en tiempo de compilación. La sintaxis es: <%@ include file=“url” %> <jsp:directive.include file=“url”/> Por ejemplo: <%@ include file=“pagina.html” %> Ejemplo con XML: <jsp:directive.include file=“pagina.html”/> 3. La primera página JSP 3.1. Requisitos para probar JSP Cualquier servidor web que soporte Servlets (Apache Tomcat 5.X, se encuentra en la dirección http://tomcat.apache.org/) Instalar Web Tools Platform (WTP) plugin a eclipse, o descargar la versión 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 están incluidos como jar externos).
  • 5. 5 de 13 3.2. Objetos Implícitos Los objetos implícitos también son llamados variables predefinidas y se utilizan directamente, sin crearlos. A continuación se muestra una tabla con los objetos implícitos que pueden ser utilizados desde las páginas JSP: La mayoría de los objetos implícitos provienen de la clase abstracta javax.servlet.jsp.PageContext. Cuando se compila la JSP, el servlet que se obtiene, contiene la creación de estos objetos implícitos dentro del método _jspService: public void _jspService ( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException { PageContext pageContext = null; HttpSession session = null; ServletContext application = null; ServletConfig config = null; JspWriter out = null; Object page = this; ... pageContext = _jspxFactory.getPageContext(this, request, response, "", true, 8192, true); application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); ... } java.lang.Object javax.servlet.jsp.PageContext javax.servlet.ServletConfig java.lang.Throwable javax.servlet.jsp.JspWriter javax.servlet.http.HttpServletRespon se javax.servlet.http.HttpServletReques t javax.servlet.http.HttpSession javax.servlet.ServletContext Tipo pageEnvía datos al cliente pageLa propia página JSPpage pageEs de donde se obtienen algunos objetos implícitos pageConte xt pageRepresenta la configuración del Servlet config pageInformación último errorexception pageEnvía la salida al clienteout requestExtrae datos del clienterequest sessionSesión de un clientesession applicationRepresenta el contexto en el que se ejecutan las JSPapplication ÁmbitoDescripciónObjeto
  • 6. 6 de 13 3.3. Ejemplos de páginas JSP sencillas En estos ejemplos se mostrará la utilización de las distintas construcciones JSP vistas anteriormente. Para la realización de las pruebas crearemos un nuevo proyecto Web Dinámico llamado jsp, en el cuál crearemos los estos ejemplos. Ejemplo de Expresiones (Expresiones.jsp) <%@ 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>Expresiones JSP</title> </head> <body> <H1>Ejemplo de expresiones JSP</H1> <UL> <LI>Fecha actual: <%=new java.util.Date()%> <LI>Nombre del host: <%=request.getRemoteHost()%> <LI>ID de la sesión: <%=session.getId()%> <LI>El parámetro es: <%=request.getParameter("nombre")%> </UL> </body> </html> Para probarlo, publicar la página en el servidor web e invocarla desde el navegador: http://localhost:8080/jsp/Expresiones.jsp http://localhost:8080/jsp/Expresiones.jsp?nombre=Alumnos_Felices Ejemplo de Scriplets (Color.jsp) <%@ 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>Scriptlets JSP</title> <% String bgColor=request.getParameter("bgColor"); boolean hayColor; if (bgColor!=null) hayColor=true; else { hayColor=false; bgColor="WHITE"; } %> </head> <body BGCOLOR="<%=bgColor%>"> <H1>Ejemplo de scriptlets JSP</H1> <% if (hayColor) out.println("Se ha utilizado el color: " + bgColor); else out.println("Se ha utilizado el color por defecto: WHITE"); %> </body> </html> Para probarlo, publicar la página en el servidor web e invocarla desde el navegador: http://localhost:8080/jsp/Color.jsp http://localhost:8080/jsp/Color.jsp?bgColor=RED
  • 7. 7 de 13 Ejemplo de declaraciones y directiva page (Contador.jsp) <%@page import="java.util.*"%> <%-- Esto en un comentario de JSP --%> <%! private int cont=0; private Date fecha= new Date(); private String host="<I>Sin acceso previo</I>"; %> <p>Esta página ha sido accedida <b><%= ++cont%></b> veces desde que se inició el servidor.</p> <p>El último acceso ha sido desde: <b><%=host%></b> con fecha <b><%=fecha%></b></p> <% host=request.getRemoteHost(); fecha=new Date(); %> Para probarlo, publicar la página en el servidor web e invocarla desde el navegador: http://localhost:8080/jsp/Contador.jsp Ejemplo de directiva include (Empresa.jsp) <%@ 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>Ejemplo de uso de un contador incluido en un JSP</title> </head> <body> <H1>Ejemplo de uso de un contador incluido en un JSP</H1> <%@include file="Contador.jsp"%> </body> </html> Para probarlo, publicar la página en el servidor web e invocarla desde el navegador: http://localhost:8080/jsp/Empresa.jsp 4. Utilización de Páginas de Error 4.1. Excepciones en JSP La gestión de excepciones en JSP se lleva a cabo a través 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 podría indicarse como: public Object metodo() throws NullPointerException { ... } Escribir una JSP que será la página 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 página: <%@ page isErrorPage=“true” import=“java.util.*” %> En la página de error usar el objeto exception para obtener información de la excepción <%= exception.toString() %> <% exception.printStackTrace(); %> En las JSP que usan el componente, indicar qué página se ejecutará si se produce algún error, mediante la directiva page, estableciendo errorPage a la página de error. <%@ page isThreadSafe=“false” import=“java.util.*” errorPage=“error.jsp” %>
  • 8. 8 de 13 4.2. Ejemplo de utilización de páginas de error A continuación mostramos un ejemplo en el que intervienen dos páginas, la página que puede provocar la excepción o lanzar el error (Division.jsp) y la página que saldrá como tratamiento de la excepción (ErrDiv.jsp). La página Division.jsp podría quedar codificada de la siguiente forma: <%@ 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>Manejo de errores de JSP</title> </head> <body > <%@page errorPage="ErrDiv.jsp"%> <H1>Ejemplo de manejo de errores en JSP</H1> <%! private double toDouble(String value) { return(Double.valueOf(value).doubleValue()); } %> <% double op1 = toDouble(request.getParameter("op1")); double op2= toDouble(request.getParameter("op2")); double res = op1/op2; %> <TABLE border=1> <TR><TH></TH><TH>División</TH></TR> <TR><TH>Operando 1: </TH><Td><%=op1%></Td></TR> <TR><TH>Operando 2: </TH><Td><%=op2%></Td></TR> <TR><TH>Resultado: </TH><Td><%=res%></Td></TR> </TABLE> </body> </html> La página de error ErrDiv.jsp quedaría 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>Página de errores en JSP</title> </head> <body > <%@page isErrorPage="true"%> <H1>Página 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 página en el servidor web e invocarla desde el navegador: http://localhost:8080/jsp/Division.jsp?op1=12&op2=6 http://localhost:8080/jsp/Division.jsp?op1=12&op2=0 Para que salga la página de error, uno de los operándoos tiene que ser una letra o no pasar parámetros: http://localhost:8080/jsp/Division.jsp?op1=12&op2= http://localhost:8080/jsp/Division.jsp?op1=12&op2=a
  • 9. 9 de 13 5. Ejemplo completo de Servlets y JSP con acceso a datos Partiendo del ejemplo de los jugadores de fútbol de la práctica anterior, vamos a desarrollar un ejemplo en el que utilizaremos primeramente la página web Futbol.html que se ampliará para permitir votar por un jugador. Luego esta información 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 cómo han quedado las estadísticas de votos. 5.1. Requisitos previos Es necesario tener disponible los ejemplos de la práctica 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 Tipo Nombre Varchar (50) Votos Integer Tabla Registro: Campo Tipo Nombre Varchar (50) Correo Varchar (30) Visitas Integer La tabla de Jugadores se rellenará inicialmente con datos de algunos jugadores y se pondrán a 0 los votos de cada uno. Por ejemplo: Nombre Votos Roberto Carlos 0 Raul 0 Torres 0 Ronaldinho 0 Ronaldo 0 Figo 0 Zidane 0 5.2. Página HTML que realiza la petición al servlet La página HTML Futbol.html permitirá que un cliente introduzca su nombre y correo y pueda emitir su voto por algún jugador de los que se visualizan. Si no le gusta ninguno, podrá añadir un nuevo jugador. Esta página enviará su petición al servlet Futbol.java para que éste se encargue de actualizar la base de datos. La página tendría el siguiente código: <html> <head> <title>Estadísticas de Futbol</title> </head> <body> <center><H1>Estadísticas de Jugadores de Futbol</H1></center> <p align="center"><font color="#002424" size="7"><u>VOTE POR EL MEJOR JUGADOR</u></font></p> <p align="center"><font color="#002424" size="7"><u>DE FUTBOL DE
  • 10. 10 de 13 2003</u></font></p> <form action="./Futbol" method="POST" left> <p align="left">Nombre del Visitante: <input type="text" size="20" name="txtNombre"> eMail: <input type="text" size="20" name="txtMail"></p> <p align="left"><input type="radio" name="R1" value="Roberto Carlos">Roberto Carlos</p> <p align="left"><input type="radio" name="R1" value="Raul">Raul</p> ... <p align="left"><input type="radio" name="R1" value="Otros">Otros <input type="text" size="20" name="txtOtros"></p> <p align="left"><input type="submit" name="B1" value="Votar"> <input type="reset" name="B2" value="Reset"></p> </form> </body> </html> 5.3. Servlet que se encarga de actualizar la base de datos A continuación mostramos el código del servlet Futbol.java que atenderá la petición de Futbol.html, conectándose 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 pondrán sus votos a 1. import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; public class Futbol extends HttpServlet { private Connection con; private Statement set; private ResultSet rs; String cad; public void init(ServletConfig cfg) throws ServletException { String sURL="jdbc:mysql://localhost/BDJugadores"; super.init(cfg); String userName = "root"; String password = "admin"; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); con = DriverManager.getConnection(sURL, userName, password); System.out.println("Se ha conectado"); } catch(Exception e) { System.out.println( "No se ha conectado"); } } public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { // Obtener la sesion HttpSession s = req.getSession(true); // Guardar el nombre del cliente en la sesión // para poderlo utilizar en el siguiente servlet String nombreP=(String)req.getParameter("txtNombre"); s.putValue("nombreCliente", nombreP); String nombre=(String)req.getParameter("R1"); if (nombre.equals("Otros")) nombre=(String)req.getParameter("txtOtros"); boolean existe = false; try
  • 11. 11 de 13 { set = con.createStatement(); rs = set.executeQuery("SELECT * FROM Jugadores"); while (rs.next()) { cad = rs.getString("Nombre"); cad = cad.trim(); if (cad.compareTo(nombre.trim())==0) existe = true; } rs.close(); set.close(); } catch(Exception e) { System.out.println("No lee de la tabla"); } try { set = con.createStatement(); if (existe) set.executeUpdate( "UPDATE Jugadores SET votos=votos+1 " + "WHERE nombre LIKE '%" + nombre + "%'"); else set.executeUpdate( "INSERT INTO Jugadores " + "(nombre,votos) VALUES ('" + nombre + "',1)"); rs.close(); set.close(); } catch(Exception e) { System.out.println( "No inserta ni modifica la tabla"); } // Llamada al servlet que nos visualiza // las estadísticas de jugadores res.sendRedirect(res.encodeRedirectURL("./TablaVotos.jsp")); } public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { try{doPost(req,res);}catch (Exception e) { } } public void destroy() { try { con.close(); } catch (Exception e) { } super.destroy(); } } 5.4. Servlet que muestra los datos Por último tendríamos la codificación del servlet que se encarga de mostrar las estadísticas de votos al cliente. Este es el TablaVotos.java que quedaría: import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*;
  • 12. 12 de 13 public class TablaVotos extends HttpServlet { private Connection con; private Statement set; private ResultSet rs; public void init(ServletConfig cfg) throws ServletException { String sURL="jdbc:mysql://localhost/BDJugadores"; super.init(cfg); String userName = "root"; String password = "admin"; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); con = DriverManager.getConnection(sURL, userName, password); System.out.println("Se ha conectado"); } catch(Exception e) { System.out.println("No se ha conectado"); } } public void doPost(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException { HttpSession s = req.getSession(true); //Leer el nombre del cliente de la sesión para darle las //gracias al final String nombreP = (String)s.getValue("nombreCliente"); PrintWriter out = res.getWriter(); res.setContentType("text/html"); out.println("<html><head><title>JDBC</title></head>"); out.println("<body><font size=10>"); out.println("<h1>Ejemplo de JDBC</h1>"); out.println("<table border=1>"); out.println("<tr><td><b>Jugador</b></td><td><b>Votos" + "</b></td></tr>"); try { String nombre; int votos; set = con.createStatement(); rs = set.executeQuery("SELECT * FROM Jugadores"); while (rs.next()) { nombre = rs.getString("Nombre"); votos = rs.getInt("Votos"); out.println("<tr><td>"+ nombre + "</td><td>" + votos + "</td></tr>"); } rs.close(); set.close(); } catch(Exception e) { System.out.println("No lee de la tabla"); } out.println("</table>"); out.println("<h3>Muchas gracias " + nombreP + " por su visita</h3>"); out.println("</form></font></body></html>"); out.close(); } public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { try{doPost(req,res);}catch (Exception e){} } public void destroy() { try {con.close();} catch (Exception e){} super.destroy(); } }
  • 13. 13 de 13 6. Utilización de JSP Convertiremos el servlet TablaVotos.java en una página JSP, puesto que es la que más se adecua, ya que la mayor parte de su código es la confección de la pagina HTML de respuesta y quedaría mucho más claro como página JSP que como servlet. Se llamará TablaVotos.jsp y su código sería: <%@ 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"> <%@page import="java.io.*"%> <%@page import="java.util.*"%> <%@page import="java.sql.*"%> <%@page import="java.util.*"%> <html> <head><title>JDBC</title></head> <body><font size=10> <h1>Ejemplo de JDBC</h1> <table border=1> <tr><td><b>Jugador</b></td><td><b>Votos</b></td></tr> <% Connection con; Statement set; ResultSet rs; String sURL="jdbc:mysql://localhost/BDJugadores"; String userName = "root"; String password = "admin"; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); con = DriverManager.getConnection(sURL, userName, password); System.out.println("Se ha conectado"); String nombre; int votos; set = con.createStatement(); rs = set.executeQuery("SELECT * FROM Jugadores"); while (rs.next()) { nombre = rs.getString("Nombre"); votos = rs.getInt("Votos"); out.println("<tr><td>"+ nombre + "</td><td>" + votos + "</td></tr>"); } rs.close(); set.close(); con.close(); } catch(Exception e) { System.out.println("Error en acceso a BD"); } %> </table> <h3>Muchas gracias por su visita</h3> </form></font></body> </html> 7. Ampliación de la práctica Para culminar la práctica se debe desarrollar por parte de los estudiantes las siguientes tareas: Crear páginas JSP para controlar los posibles errores de acceso a bases de datos. Convertir Futbol.html en una página JSP que dinámicamente se actualice teniendo en cuenta los nuevos jugadores que se van añadiendo. Es decir, que aparezcan los nuevos jugadores de la misma forma que los iniciales y que se siga permitiendo añadir nuevos por medio del cuadro de texto.