Para realizar los siguientes ejercicios he cargado los
siguientes archivos para los JSP:
- Para los ejercicios del 1 al 10:
- Para el resto de ejercicios
- screen.css (distinto del anterior)
- styles.scss
- shared (carpeta referenciada desde styles.scss)
- scripts.js
- jQuery 1.11.3
Bien, empecemos.
1. Realiza una página
JSP que permita imprimir por pantalla el navegador que está utilizando el
cliente, la dirección IP y nombre del servidor donde se ejecuta el script, el
servidor Web instalado así como la dirección IP del cliente. Ejemplo:
<%@
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>
<meta http-equiv="Content-Type"
content="text/html;
charset=ISO-8859-1">
<title>Info Page</title>
</head>
<body>
<p>
<span>Navegador actual: <%= request.getHeader("user-agent") %></span><br>
<span>IP del servidor: <%=
request.getRemoteAddr() %></span><br>
<span>Nombre del servidor: <%=
request.getRemoteHost() %></span><br>
<span>Servidor instalado: <%=
application.getServerInfo() %></span><br>
<span>IP del cliente: <%=
request.getLocalAddr() %></span><br>
</p>
</body>
</html>
2. Realiza una página
JSP que imprima por pantalla tu nombre entre comillas precedido de la palabra
en negrita Nombre:
<%@
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>
<meta http-equiv="Content-Type"
content="text/html;
charset=ISO-8859-1">
<title>Mi nombre</title>
</head>
<body>
<% out.println("<b>Nombre:</b>
'Inazio Claver'"); %>
</body>
</html>
3. Realiza una página
JSP para imprimir por pantalla los 100 primeros números pares comenzando con el
2. Al finalizar imprimir la suma de todos ellos.
<%@
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>
<meta http-equiv="Content-Type"
content="text/html;
charset=ISO-8859-1">
<title>Numeros pares</title>
</head>
<body>
<%
int numero = 2;
int suma = 0;
for (int i = 0; i < 100;
i++){
out.println(numero);
suma =
suma + numero;
numero =
numero + 2;
}
out.println("<p>Suma
total: " + suma + "</p>");
%>
</body>
</html>
4. Realizar una
página JSP que imprima si un número entero enviado como argumento es capicú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">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html;
charset=ISO-8859-1">
<title>Capicua</title>
</head>
<body>
<%
if(request.getParameter("cifra") != null &&
request.getParameter("cifra") != ""){
int cifra =
Integer.parseInt(request.getParameter("cifra"));
int falta, numInverso,
resto;
falta = cifra;
numInverso = 0;
resto = 0;
while (falta != 0){
resto =
falta % 10;
numInverso
= numInverso * 10 + resto;
falta =
falta / 10;
}
if (numInverso ==
cifra)
out.println(cifra
+ "
es capicua");
else
out.println(cifra
+ "
no es capicua");
out.println("<br><a
href='Ej1.4.jsp'>Volver atrás</a>");
}
else{
%>
<div>
<p>Cifra a enviar</p>
<form action="" method="post">
<input type="text" name="cifra">
<input type="submit" name="enviar">
</form>
</div>
<%} %>
</body>
</html>
5. Codifica una
página JSP que reciba una cadena y la visualice al revés.
<%@
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>
<meta http-equiv="Content-Type"
content="text/html;
charset=ISO-8859-1">
<title>Cadena reversa</title>
</head>
<body>
<%
if
(request.getParameter("cadena") != null && request.getParameter("cadena") != ""){
String
cadena = request.getParameter("cadena");
String
resultado = new StringBuilder(cadena).reverse().toString();
out.println("Cadena
previa: " + request.getParameter("cadena") + ". Cadena revertida:
" +
resultado);
}
else{
%>
<form action="Ej1.5.jsp" method="post">
<input type="text" name="cadena"/>
<input type="submit" name="enviar"/>
</form>
<%} %>
</body>
</html>
6. Realiza una página
JSP que devuelva la letra que le corresponde a un DNI que se le envíe como
argumento. La letra del DNI se obtiene:
- Calculando el resto de dividir el DNI por 23.
- Con el resto mirar la entrada correspondiente de esta tabla:
<%@
page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE
html>
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html;
charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="css/screen.css"/>
<title>DNI</title>
</head>
<body>
<%
if (request.getParameter("dni") != null &&
request.getParameter("dni") != ""){
String[]
letras = {"T", "R", "W", "A", "G", "M", "Y", "F", "P", "D", "X", "B", "N", "J", "Z", "S", "Q", "V", "H", "L", "C", "K", "E"};
int n =
Integer.parseInt(request.getParameter("dni"));
String r = letras[n%23];
out.println("<p><span
class='titulo'>Numero DNI: </span>" + n + "<br><span
class='titulo'>Letra DNI: </span>" + r);
out.println("<br/><br/><a
href='Ej1.6.jsp'>Volver a calcular letra</a></p>");
}
else{
%>
<h1>Generador letra DNI</h1>
<form action="Ej1.6.jsp" method="post">
<label>Dni (Sin letra): </label><input type="text" name="dni">
<input type="submit" name="enviar">
</form>
<%
}
%>
</body>
</html>
7. Desarrollar una
página JSP que visualice el número de años completos que hay entre dos fechas
que se pasan como parámetros.
<%@
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>
<meta http-equiv="Content-Type"
content="text/html;
charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="css/screen.css"/>
<title>Años completos</title>
</head>
<body>
<%
if
(request.getParameter("agno1") != null && request.getParameter("agno1") != "" &&
request.getParameter("mes1") != null && request.getParameter("mes1") != "" &&
request.getParameter("dia1") != null && request.getParameter("dia1") != "" &&
request.getParameter("agno2") != null && request.getParameter("agno2") != "" &&
request.getParameter("mes2") != null && request.getParameter("mes2") != "" &&
request.getParameter("dia2") != null && request.getParameter("dia2") != ""){
java.util.Calendar
fecha1 = java.util.Calendar.getInstance();
java.util.Calendar
fecha2 = java.util.Calendar.getInstance();
int agno1 =
Integer.parseInt(request.getParameter("agno1"));
int agno2 =
Integer.parseInt(request.getParameter("agno2"));
int mes1 =
Integer.parseInt(request.getParameter("mes1"));
int mes2 =
Integer.parseInt(request.getParameter("mes2"));
int dia1 =
Integer.parseInt(request.getParameter("dia1"));
int dia2 =
Integer.parseInt(request.getParameter("dia2"));
fecha1.set(agno1,
mes1, dia1);
fecha2.set(agno2,
mes2, dia2);
long milis1 =
fecha1.getTimeInMillis();
long milis2 =
fecha2.getTimeInMillis();
long diferencia = 0;
if (milis1 >
milis2){
diferencia
= ((milis1 - milis2) / (24 * 60 * 60 * 1000)) / 365;
}
else{
diferencia
= ((milis2 - milis1) / (24 * 60 * 60 * 1000)) / 365;
}
out.println("<p><span
class='titulo'>Años de diferencia: </span>" + diferencia);
out.println("<br/><br/><a
href='Ej1.7.jsp'>Volver a calcular</a></p>");
}
else{
%>
<form action="Ej1.7.jsp" method="post">
<h1>Primera fecha</h1>
<label>Día</label>
<input type="text" name="dia1"/>
<label>Mes</label>
<input type="text" name="mes1"/>
<label>Año</label>
<input type="text" name="agno1"/>
<h1>Segunda fecha</h1>
<label>Día</label>
<input type="text" name="dia2"/>
<label>Mes</label>
<input type="text" name="mes2"/>
<label>Año</label>
<input type="text" name="agno2"/>
<p>
<input type="submit" name="enviar" value="Calcular"/></p>
</form>
<%
} // Cierro el else
%>
</body>
</html>
8. Implementa una
página JSP que reciba un importe y visualice el desglose del cambio en unidades
monetarias de céntimos de €, 1€, 2€, 5€, 10€, 50€. Ej. 58.9 = 1 billete de 50€,
1 billete de 5 €, 3 monedas de 1€ y 90 céntimos de €.
<%@
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>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="css/screen.css"/>
<title>Insert title here</title>
</head>
<body>
<%
if
(request.getParameter("pasta") != null && request.getParameter("pasta") != ""){
double dinero =
Double.parseDouble(request.getParameter("pasta"));
int e50 = 0, e20 = 0,
e10 = 0, e5 = 0, e2 = 0, e1 = 0;
double cents = 0;
if (dinero >= 50){
e50 = (int)dinero / 50;
dinero =
dinero % 50;
}
if (dinero >= 20){
e20 = (int)dinero / 20;
dinero =
dinero % 20;
}
if (dinero >= 10){
e10 = (int)dinero / 10;
dinero =
dinero % 10;
}
if (dinero >= 5){
e5 = (int)dinero / 5;
dinero =
dinero % 5;
}
if (dinero >= 2){
e2 = (int)dinero / 2;
dinero =
dinero % 2;
}
if (dinero >= 1){
e2 = (int)dinero / 1;
cents =
dinero % 1;
}
out.println("<span
class='titulo'>Monedas de 50: </span>" + e50 + "<br/>");
out.println("<span
class='titulo'>Monedas de 50: </span>" + e20 + "<br/>");
out.println("<span
class='titulo'>Monedas de 50: </span>" + e10 + "<br/>");
out.println("<span
class='titulo'>Monedas de 50: </span>" + e5 + "<br/>");
out.println("<span
class='titulo'>Monedas de 50: </span>" + e2 + "<br/>");
out.println("<span
class='titulo'>Monedas de 50: </span>" + e1 + "<br/>");
out.println("<span
class='titulo'>Monedas de 50: </span>" + cents + "<br/>");
out.println("<br/><br/><a
href='Ej1.8.jsp'>Volver a calcular</a></p>");
}
else{
%>
<form action="Ej1.8.jsp" method="post">
<label>Dinero a cambiar:</label>
<input type="text" name="pasta"/>
<input type="submit" name="enviar" value="Calcular"/>
</form>
<%
}
%>
</body>
</html>
9. Realizar página
JSP que a partir de una cantidad en euros fija (en el ejemplo 337) muestre el
cambio con relación a las otras monedas. Utilizar un vector para almacenar el
tipo de moneda y su cambio.
<%@
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>
<meta http-equiv="Content-Type"
content="text/html;
charset=ISO-8859-1">
<title>Conversiones</title>
</head>
<body>
<%
if
(request.getParameter("euros") != null && request.getParameter("euros") != ""){
Double
euros = Double.parseDouble(request.getParameter("euros"));
Double[]
monedas = {1.4638, 1.6446, 1.4296, 161.45, 10.869, 35.868};
String []
monedasTexto = {"Dólar americano", "Dólar australiano", "Dólar
canadiense", "Yen japonés", "Yuan chino", "Rublo
ruso"};
out.println("<h1>Euros:
" +
euros + "</h1>");
out.println("<table>");
out.println("<tr>");
out.println("<th>Moneda</td>");
out.println("<th>Tasa
de cambio</td>");
out.println("<th>Resultado</td>");
out.println("</tr>");
for (int i = 0; i <
monedas.length; i++){
out.println("<tr>");
out.println("<td>" + monedasTexto[i] + "</td>");
out.println("<td>" + monedas[i] + "</td>");
out.println("<td>" + monedas[1] * euros
+ "</td>");
out.println("</tr>");
}
out.println("</table>");
}
else{
%>
<form action="Ej1.9.jsp" method="post">
<label>Euros</label>
<input type="text" name="euros"/>
<input type="submit" name="enviar" value="Convertir"/>
</form>
<%
}
%>
</body>
</html>
10. Realizar página
JSP para visualizar las notas por asignatura y nota media de un alumno:
Almacenar previamente
las notas de cada asignatura en una matriz dentro de un fichero.
La nota media debe
aparecer redondeada a un decimal.
<%@
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>
<meta http-equiv="Content-Type"
content="text/html;
charset=ISO-8859-1">
<title>Calificaciones</title>
</head>
<body>
<%
java.io.FileReader
fill = null;
java.io.BufferedReader
bF = null;
String linea;
int contador = 0;
double nota1 = 0.00;
double nota2 = 0.00;
java.text.NumberFormat
formato = new java.text.DecimalFormat("#0.0");
try{
fill = new java.io.FileReader("C:\\Users\\Inazio\\workspace\\JSP\\notas.txt");
bF = new
java.io.BufferedReader(fill); // Creo buffer dependiente del fichero
linea =
bF.readLine(); // Cada linea cargará el buffer actual
out.println("<h1>Boletín
de notas</h1>");
out.println("<table>");
out.println("<tr>");
out.println("<th>Asignatura</td>");
out.println("<th>Cuatrimestre
1</td>");
out.println("<th>Cuatrimestre
2</td>");
out.println("<th>Media</td>");
out.println("</tr>");
while (linea != null){ // Cuando no pueda
cargar texto del buffer habrá acabado el fichero
if (contador == 0){
out.println("<tr>");
out.println("<td>" + linea + "</td>");
contador++;
}
else if (contador == 1){
out.println("<td>" + linea + "</td>");
nota1
= Double.parseDouble(linea);
contador++;
}
else if (contador == 2){
nota2
= Double.parseDouble(linea);
double media = (nota1 +
nota2) / 2;
out.println("<td>" + linea + "</td>");
out.println("<td>" +
formato.format(media) + "</td>");
out.println("</tr>");
contador
= 0;
}
linea
= bF.readLine();
}
out.println("</table>");
}
catch(java.io.FileNotFoundException
e){
e.printStackTrace();
}
catch(java.io.IOException
e){
e.printStackTrace();
}
finally{
try{
bF.close();
fill.close();
}
catch(java.io.IOException
e){
e.printStackTrace();
}
}
%>
</body>
</html>
11. Utilizando el
siguiente script crea la tabla clientes dentro de la base de datos test
DROP TABLE IF EXISTS
CLIENTES;
CREATE TABLE CLIENTES
(
COD_CLIENTE VARCHAR(10)
PRIMARY KEY,
NOMBRE VARCHAR(50),
DIRECCION VARCHAR(30),
POBLACION VARCHAR(20),
PROVINCIA VARCHAR(20),
PAIS VARCHAR(20),
TELEFONO VARCHAR(15),
CORREO VARCHAR(25),
CLAVE VARCHAR(50)
);
Realiza una página JSP de inserción de datos para la tabla
anterior teniendo en cuenta:
- El código del cliente no debe quedar vacío y su longitud no debe ser superior a 10
- El nombre del cliente no debe quedar vacío y su longitud no debe ser superior a 50
- La dirección del cliente no debe quedar vacía y su longitud no debe ser superior a 30
- La población del cliente no debe quedar vacía y su longitud no debe ser superior a 20
- La provincia del cliente no debe quedar vacía y su longitud no debe ser superior a 20
- El país del cliente no debe quedar vacío y su longitud no debe ser superior a 20
- El teléfono del cliente no debe quedar vacío, debe contener solamente caracteres numéricos y su longitud no debe ser superior a 15
- La dirección del correo electrónico debe incluir los caracteres @ y .
- Los campos contraseña deben ser obligatorios y además coincidir. Su longitud mínima debe ser de 6 caracteres
Archivo Acciones.java
package baseDatos;
import java.sql.*;
public class Acciones {
// Propiedades
Connection conn = null;
PreparedStatement ps = null;
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
String driver = "com.mysql.jdbc.Driver";
// Métodos
public void conectarBD(){
// Cargra del
Driver
try{
Class.forName(driver);
}
catch(ClassNotFoundException
e){
e.printStackTrace();
}
// Conexión a Base
de datos
try{
conn = DriverManager.getConnection(url, user, password);
}
catch(SQLException e){
e.printStackTrace();
}
} // Fin conectarBD()
public void desconectarBD(){
if (conn != null){
try{
conn.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
} // Fin
desconectarBD()
public String
nuevoCliente(String codCliente, String nombre, String direccion, String poblacion, String provincia, String pais, String telefono, String correo, String clave){
String resultado = "";
try{
conectarBD();
conn.setAutoCommit(false);
ps = conn.prepareStatement("INSERT INTO
clientes VALUES ((?), (?), (?), (?), (?), (?), (?), (?), (?));");
ps.setString(1, codCliente);
ps.setString(2, nombre);
ps.setString(3, direccion);
ps.setString(4, poblacion);
ps.setString(5, provincia);
ps.setString(6, pais);
ps.setString(7, telefono);
ps.setString(8, correo);
ps.setString(9, clave);
ps.executeUpdate();
conn.commit();
conn.setAutoCommit(true);
}
catch(SQLException e){
try{
conn.rollback();
resultado = e.getMessage();
}
catch(SQLException ex){
ex.printStackTrace();
resultado = ex.getMessage();
}
}
finally{
if (ps != null){
try{
ps.close();
resultado = "Inserción
correcta";
}
catch(SQLException e){
e.printStackTrace();
resultado = e.getMessage();
}
}
desconectarBD();
}
return resultado;
} // Fin
nuevoCliente()
}
Archivo 15a.jsp
<%@
page language="java"
contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE
html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible"
content="IE=edge,chrome=1">
<title>Formulario</title>
<link rel="stylesheet"
href="css/screen.css">
</head>
<body>
<form class="sign-up"
action="15b.jsp" method="post">
<h1 class="sign-up-title">Altas de clientes</h1>
<input type="text"
class="sign-up-input" maxlength="10" name="cod_cliente"
placeholder="Código (máx 10 caract.)" required autofocus>
<input type="text"
class="sign-up-input" maxlength="50" name="nombre"
placeholder="Nombre completo" required>
<input type="text"
class="sign-up-input" maxlength="30" name="direccion"
placeholder="Dirección" required>
<input type="text"
class="sign-up-input" maxlength="20" name="poblacion"
placeholder="Población" required>
<input type="text"
class="sign-up-input" maxlength="20" name="provincia"
placeholder="Provincia" required>
<input type="text"
class="sign-up-input" maxlength="20" name="pais"
placeholder="País" required>
<input type="text"
class="sign-up-input" maxlength="15" name="telefono"
placeholder="Teléfono" required>
<input type="email"
class="sign-up-input" name="correo" placeholder="E-mail">
<input type="password"
class="sign-up-input" name="clave1" placeholder="Contraseña
(min. 6 caract.)">
<input type="password"
class="sign-up-input" name="clave2" placeholder="Repetir
contraseña">
<input type="submit"
value="Enviar" class="sign-up-button">
</form>
</body>
</html>
Archivo 15b.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>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Formulario</title>
</head>
<body>
<jsp:useBean id="datos"
scope="request" class="baseDatos.Acciones"/>
<%
datos.conectarBD();
String
codCliente = request.getParameter("cod_cliente");
String nombre =
request.getParameter("nombre");
String direccion
= request.getParameter("direccion");
String poblacion
= request.getParameter("poblacion");
String provincia
= request.getParameter("provincia");
String pais =
request.getParameter("pais");
String telefono
= request.getParameter("telefono");
String correo =
request.getParameter("correo");
String clave1 =
request.getParameter("clave1");
String clave2 =
request.getParameter("clave2");
if
(clave1.equals(clave2)){
String r
= datos.nuevoCliente(codCliente, nombre, direccion, poblacion, provincia, pais,
telefono, correo, clave1);
response.sendRedirect("15a.jsp");
out.println("<script>alert(" + r + ")</script>");
}
else{
%>
<jsp:forward page="ejemplo15a.jsp">
<jsp:param name="error"
value="Las contraseñas no coinciden.<br>Vuelve a teclearlas"/>
</jsp:forward>
<%
}
datos.desconectarBD();
%>
</body>
</html>
12. Realiza las
páginas JSP necesarias para gestionar la base de datos agenda (el siguiente
script sql la genera)
-- phpMyAdmin SQL
Dump
-- version 2.11.1
-- http://www.phpmyadmin.net
--
-- Servidor:
localhost
-- Tiempo de
generación: 12-12-2007 a las 22:33:41
-- Versión del
servidor: 5.0.45
-- Versión de PHP:
5.2.4
SET
SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
--
--
--------------------------------------------------------
--
-- Estructura de
tabla para la tabla `agenda`
--
DROP TABLE IF EXISTS
`agenda`;
CREATE TABLE IF NOT
EXISTS `agenda` (
`registro` int(4) unsigned NOT NULL
auto_increment,
`Apellidos` varchar(150) NOT NULL default '',
`Nombre` varchar(60) default NULL,
`Telefono_oficina` varchar(20) default NULL,
`Telefono_movil` varchar(20) default NULL,
`email` varchar(200) default NULL,
`direccion` varchar(150) default NULL,
`localidad` varchar(100) default NULL,
`provincia` varchar(60) default NULL,
`codigo_postal` varchar(5) default NULL,
`telefono` varchar(20) default NULL,
`notas` blob,
PRIMARY KEY
(`registro`),
KEY `apellidos` (`Apellidos`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;
--
-- Volcar la base de
datos para la tabla `agenda`
--
INSERT INTO `agenda`
(`registro`, `Apellidos`, `Nombre`, `Telefono_oficina`, `Telefono_movil`,
`email`, `direccion`, `localidad`, `provincia`, `codigo_postal`, `telefono`,
`notas`) VALUES
(9, 'García Pérez',
'Fernando', '91-8765432', '611-876142', 'jgarcia@mec.es', 'C/ Alicante, 25 - 4º
B', 'Madrid', 'Madrid', '255', '91-8765432',
0x416c756d6e6f2064656c20637572736f206465205048502e),
(10, 'Fernández de
Juana', 'María', '91-8044167', '291-226974', 'maria.fernandez@email.com', 'C/
Escultores, 23 3º J', 'Tres Cantos', 'Madrid', '255', '91-8034567',
0x536563726574617269612064656c206469726563746f72),
(11, 'Ortega Mora',
'Jaime', '921-444444', '196-555889', 'jortega@correo.net', 'C/ La rana, 11 7º
L', 'Aguilafuente', 'Segovia', '255', '921-444442',
0x566563696e6f2064656c20707565626c6f),
(12, 'Robledo
Sacristán', 'Clodoaldo', '91-4123836', '', '', '', '', '', '0', '', '');
--
--------------------------------------------------------
Ejemplos de ejecución
de las 3 opciones anteriores:
Archivo Agenda.java
package baseDatos;
public class Agenda {
// Propiedades
private String apellidos;
private String nombre;
private String telefono;
private String direccion;
private String localidad;
private String provincia;
// Constructor
public Agenda(String apellidos, String nombre, String telefono, String direccion, String localidad, String provincia){
this.apellidos = apellidos;
this.nombre = nombre;
this.telefono = telefono;
this.direccion = direccion;
this.localidad = localidad;
this.provincia = provincia;
}
// Métodos
public String
getApellidos() {
return apellidos;
}
public String getNombre() {
return nombre;
}
public String getTelefono()
{
return telefono;
}
public String
getDireccion() {
return direccion;
}
public String
getLocalidad() {
return localidad;
}
public String
getProvincia() {
return provincia;
}
}
Archivo AccionesAgenda.java
package baseDatos;
import java.sql.*;
import java.util.ArrayList;
import java.util.Collection;
public class AccionesAgenda {
// Propiedades
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "";
String driver = "com.mysql.jdbc.Driver";
// Métodos
public void conectarBD(){
// Cargra del
Driver
try{
Class.forName(driver);
}
catch(ClassNotFoundException
e){
e.printStackTrace();
}
// Conexión a Base
de datos
try{
conn = DriverManager.getConnection(url, user, password);
}
catch(SQLException e){
e.printStackTrace();
}
} // Fin conectarBD()
public void desconectarBD(){
if (conn != null){
try{
conn.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
} // Fin desconectarBD()
public String
nuevoContacto(String nombre, String apellidos, String direccion, String localidad, String provincia, String telefono){
String resultado = "";
try{
conn.setAutoCommit(false);
ps = conn.prepareStatement("INSERT INTO
agenda (Apellidos, Nombre, Telefono_oficina, direccion, localidad, provincia)
VALUES((?), (?), (?), (?), (?), (?));");
ps.setString(1, apellidos);
ps.setString(2, nombre);
ps.setString(3, telefono);
ps.setString(4, direccion);
ps.setString(5, localidad);
ps.setString(6, provincia);
ps.executeUpdate();
conn.commit();
conn.setAutoCommit(true);
}
catch(SQLException e){
try{
conn.rollback();
resultado = e.getMessage();
}
catch(SQLException ex){
ex.printStackTrace();
e.getMessage();
}
}
finally{
if (ps != null){
try{
ps.close();
resultado = "Inserción
correcta";
}
catch(SQLException e){
e.printStackTrace();
resultado = e.getMessage();
}
}
}
return resultado;
} // Fin
nuevoContacto
public Collection
buscarAgenda(String nombre, String apellidos, String direccion, String localidad, String provincia, String telefono){
ArrayList<Agenda>
contactos = new
ArrayList<Agenda>();
try{
ps = conn.prepareStatement("SELECT
Apellidos, Nombre, Telefono_oficina, direccion, localidad, provincia FROM
agenda WHERE Apellidos LIKE (?) AND Nombre LIKE (?) AND Telefono_oficina LIKE
(?) AND direccion LIKE (?) AND localidad LIKE (?) AND provincia LIKE (?);");
ps.setString(1, apellidos);
ps.setString(2, nombre);
ps.setString(3, telefono);
ps.setString(4, direccion);
ps.setString(5, localidad);
ps.setString(6, provincia);
rs = ps.executeQuery();
while (rs.next()){
Agenda
agenda = new Agenda(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6));
contactos.add(agenda);
}
}
catch(SQLException e){
return null;
}
finally{
if (rs != null){
try{
rs.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
if (ps != null){
try{
ps.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
}
return contactos;
}// Fin buscarAgenda
}
Archivo 17a.jsp
<%@
page language="java"
contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE
html>
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-1">
<link type="text/css"
rel="stylesheet" href="css/screen.css">
<script type="text/javascript"
src="js/jquery-1.11.3.js"></script>
<script type="text/javascript"
src="js/scritps.js"></script>
<title>Usuarios</title>
</head>
<body>
<header>
<h1>Usuarios</h1>
<div>
<input type="submit"
class="boton" id="nuevo"
value="Nuevo"/>
<input type="submit"
class="boton" id="buscar"
value="Buscar"/>
<input type="submit"
class="boton" id="mostrar"
value="Mostrar todos"/>
</div>
</header>
<div id="contenido"
class="contenido">
</div>
</body>
</html>
Archivo 17b.jsp
<!DOCTYPE
html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible"
content="IE=edge,chrome=1">
<title>Usuarios</title>
<link rel="stylesheet"
href="css/screen.css">
</head>
<body>
<form class="sign-up"
action="17bResultados.jsp" method="post">
<h1 class="sign-up-title">Nuevo contacto</h1>
<input type="text"
class="sign-up-input" maxlength="60" name="nombre"
placeholder="Nombre" required
autofocus>
<input type="text"
class="sign-up-input" maxlength="150" name="apellidos"
placeholder="Apellidos" required>
<input type="text"
class="sign-up-input" maxlength="150" name="direccion"
placeholder="Dirección">
<input type="text"
class="sign-up-input" maxlength="100" name="localidad"
placeholder="Localidad">
<input type="text"
class="sign-up-input" maxlength="60" name="provincia"
placeholder="Provincia">
<input type="text"
class="sign-up-input" maxlength="20" name="telefono"
placeholder="Teléfono">
<input type="submit"
value="Agregar" class="sign-up-button">
</form>
</body>
</html>
Archivo 17bResultados.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>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-1">
<title>Agenda</title>
</head>
<body>
<jsp:useBean id="accionesAgenda"
scope="session" class="baseDatos.AccionesAgenda"/>
<%
String
nombre;
String
apellidos;
String
direccion;
String
localidad;
String
provincia;
String
telefono;
accionesAgenda.conectarBD();
if
(request.getParameter("nombre") != "")
nombre
= request.getParameter("nombre");
else
nombre
= null;
if
(request.getParameter("apellidos") != "")
apellidos
= request.getParameter("apellidos");
else
apellidos
= null;
if
(request.getParameter("direccion") != "")
direccion
= request.getParameter("direccion");
else
direccion
= null;
if
(request.getParameter("localidad") != "")
localidad
= request.getParameter("localidad");
else
localidad
= null;
if
(request.getParameter("provincia") != "")
provincia
= request.getParameter("provincia");
else
provincia
= null;
if
(request.getParameter("telefono") != "")
telefono
= request.getParameter("telefono");
else
telefono
= null;
String r
= accionesAgenda.nuevoContacto(nombre, apellidos, direccion, localidad,
provincia, telefono);
response.sendRedirect("17a.jsp");
%>
</body>
</html>
Archivo 17c.jsp
<!DOCTYPE
html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible"
content="IE=edge,chrome=1">
<title>Usuarios</title>
<link rel="stylesheet"
href="css/screen.css">
</head>
<body>
<form class="sign-up"
action="17ResultSet.jsp" method="post">
<h1 class="sign-up-title">Buscar</h1>
<input type="text"
class="sign-up-input" maxlength="60" name="nombre"
placeholder="Nombre" autofocus>
<input type="text"
class="sign-up-input" maxlength="150" name="apellidos"
placeholder="Apellidos">
<input type="text"
class="sign-up-input" maxlength="150" name="direccion"
placeholder="Dirección">
<input type="text"
class="sign-up-input" maxlength="100" name="localidad"
placeholder="Localidad">
<input type="text"
class="sign-up-input" maxlength="60" name="provincia"
placeholder="Provincia">
<input type="text"
class="sign-up-input" maxlength="20" name="telefono"
placeholder="Teléfono">
<input type="submit"
value="Buscar" class="sign-up-button">
</form>
</body>
</html>
Archivo 17d.jsp
<%@
page language="java"
contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"
import="java.util.*, baseDatos.*"%>
<!DOCTYPE
html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-1">
<title>Contactos</title>
</head>
<body>
<jsp:useBean id="accionesAgenda"
scope="session" class="baseDatos.AccionesAgenda"/>
<jsp:useBean id="agenda"
scope="session" class="baseDatos.Agenda"/>
<%
String
nombre = "%";
String
apellidos = "%";
String
direccion = "%";
String
localidad = "%";
String
provincia = "%";
String
telefono = "%";
accionesAgenda.conectarBD();
Collection
contactos = accionesAgenda.buscarAgenda(nombre, apellidos, direccion,
localidad, provincia, telefono);
if (contactos != null &&
contactos.size() > 0){
out.println("<table>");
out.println("<tr>");
out.println("<th>Apellidos</th>");
out.println("<th>Nombre</th>");
out.println("<th>Telefono</th>");
out.println("<th>Direccion</th>");
out.println("<th>Localidad</th>");
out.println("<th>Provincia</th>");
out.println("</tr>");
for (Iterator iter =
contactos.iterator(); iter.hasNext();){
Agenda
a = (Agenda)iter.next();
out.println("<tr>");
out.println("<td>" + a.getApellidos() +
"</td>");
out.println("<td>" + a.getNombre() + "</td>");
out.println("<td>" + a.getTelefono() + "</td>");
out.println("<td>" + a.getDireccion() +
"</td>");
out.println("<td>" + a.getLocalidad() +
"</td>");
out.println("<td>" + a.getProvincia() +
"</td>");
out.println("</tr>");
}
out.println("</table");
}
accionesAgenda.desconectarBD();
%>
<a href="17a.jsp"><input type="submit" value="Volver a
menú" class="volver"></a>
</body>
</html>
Archivo 17ResultSet.jsp
<%@
page language="java"
contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"
import="java.util.*, baseDatos.*"%>
<!DOCTYPE
html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-1">
<title>Agenda</title>
<link type="text/css"
rel="stylesheet" href="css/screen.css">
</head>
<body>
<jsp:useBean id="accionesAgenda"
scope="session" class="baseDatos.AccionesAgenda"/>
<%
String
nombre;
String
apellidos;
String
direccion;
String
localidad;
String
provincia;
String
telefono;
if
(request.getParameter("nombre") != "")
nombre
= request.getParameter("nombre");
else
nombre = "%";
if
(request.getParameter("apellidos") != "")
apellidos
= request.getParameter("apellidos");
else
apellidos
= "%";
if
(request.getParameter("direccion") != "")
direccion
= request.getParameter("direccion");
else
direccion
= "%";
if
(request.getParameter("localidad") != "")
localidad
= request.getParameter("localidad");
else
localidad
= "%";
if
(request.getParameter("provincia") != "")
provincia
= request.getParameter("provincia");
else
provincia
= "%";
if
(request.getParameter("telefono") != "")
telefono
= request.getParameter("telefono");
else
telefono
= "%";
accionesAgenda.conectarBD();
Collection
contactos = accionesAgenda.buscarAgenda(nombre, apellidos, direccion,
localidad, provincia, telefono);
if (contactos != null &&
contactos.size() > 0){
out.println("<table>");
out.println("<tr>");
out.println("<th>Apellidos</th>");
out.println("<th>Nombre</th>");
out.println("<th>Telefono</th>");
out.println("<th>Direccion</th>");
out.println("<th>Localidad</th>");
out.println("<th>Provincia</th>");
out.println("</tr>");
int contador = 0;
for (Iterator iter =
contactos.iterator(); iter.hasNext();){
Agenda
a = (Agenda)iter.next();
if (contador % 2 == 0){
out.println("<tr
class='par'>");
contador++;
}
else{
out.println("<tr
class='impar'>");
contador++;
}
out.println("<td>" + a.getApellidos() +
"</td>");
out.println("<td>" + a.getNombre() + "</td>");
out.println("<td>" + a.getTelefono() + "</td>");
out.println("<td>" + a.getDireccion() +
"</td>");
out.println("<td>" + a.getLocalidad() +
"</td>");
out.println("<td>" + a.getProvincia() +
"</td>");
out.println("</tr>");
}
out.println("</table>");
}
accionesAgenda.desconectarBD();
%>
<div class="contenedorButton">
<a href="17a.jsp"><input type="submit" value="Volver a
menú" class="sign-up-button"></a>
</div>
</body>
</html>
0 comments:
Publicar un comentario