No es un bug, es una característica no documentada

miércoles, 9 de diciembre de 2015

Acceso a datos. Aplicaciones web servidor. JSP. Ejercicios

16:56 Posted by Inazio , No comments
Para realizar los siguientes ejercicios he cargado los siguientes archivos para los JSP:
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 comentarios:

Publicar un comentario