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

miércoles, 9 de diciembre de 2015

Acceso a datos. Aplicaciones web servidor. JSP. Ejemplos (II)

16:42 Posted by Inazio , No comments

Includes

Archivo ejemplo18.html

<!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>Insert title here</title>
       </head>
       <body>
             <table border="0" width="400" cellspacing="0" cellpadding="0">
                    <tr>
                           <td height="150" width="150"> &nbsp; </td> <td width="250"> &nbsp; </td>
                    </tr>
                    <tr>
                           <td width="250"> &nbsp; </td>
                           <td align="right" width="350">
                                  <img src="merlin.gif">
                           </td>
                    </tr>
             </table> <br>
       </body>
</html>


Archivo ejemplo18a.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ include file="ejemplo18.html" %>
<!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>Página principal</title>
</head>
<body bgcolor="#ffffff" background="background.gif">
<table border="0" width="700">
<tr>
<td width="150"> &nbsp; </td>
<td width="550">
<h1>Mi nombre es Merlin ¿el tuyo?</h1> </td>
</tr>
<tr>
<td width="150"> &nbsp; </td>
<td width="550">
<form method="get">
<input type="text" name="usu" size="25"> <br>
<input type="submit" value="Enviar">
</form>

</td>
</tr>
</table>
<%if ( request.getParameter("usu") != null ) { %>
<%@ include file="ejemplo18c.jsp" %>
<%}%>
</body>
</html>

Archivo ejemplo18c.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>Insert title here</title>
</head>
<body>
<table border="0" width="700"> <tr>
<td width="150"> &nbsp; </td>
<td width="550">
<jsp:useBean id="miclase" scope="page" class="Beans.NombreUser" />
<jsp:setProperty name="miclase" property="*"/>
<h1>Hola, <jsp:getProperty name="miclase" property="usu" />! </h1>
</td> </tr> </table>
</body>
</html>

Sesiones

Ejemplo 1

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"  import="java.util.*"%>
<!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>trabajando con sesiones</title>
</head>
<body>
<%
//obtener la sesión
HttpSession sesion1 =request.getSession();
//muestra la identificación
out.println("Identificación: " + sesion1.getId() + "<br> <br>");
//obtener y mostrar la fecha de creación
Date fecha = new Date(sesion1.getCreationTime());
out.println("Creacion: " + fecha + "<br> <br>");
//obtener y mostrar el tiempo de conexión
Long duracion = sesion1.getLastAccessedTime() - sesion1.getCreationTime();
Date verDuracion = new Date(duracion);
out.println("Duración: " + verDuracion.getMinutes() + " minutos y " + verDuracion.getSeconds() + " segundos");
%>
</body>
</html>

Ejemplo 2

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"  import="java.util.*"%>
<%
out.println("Identificación: " + session.getId() + "<br> <br>");
//obtener y mostrar la fecha de creación
Date fecha = new Date(session.getCreationTime());
out.println("Creación: " + fecha + "<br> <br>");
//obtener y mostrar el tiempo de conexión
Long duracion = session.getLastAccessedTime() - session.getCreationTime();
Date verDuracion = new Date(duracion);
out.println("Duración: " + verDuracion.getMinutes() + " minutos y " + verDuracion.getSeconds() + " segundos");
%>

Sesiones (Validación)

Archivo ejemplo23a.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" session="true"%>
<!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>Página de identificación</title>
</head>
<body>
<%
if (request.getParameter("error") != null) {
out.println(request.getParameter("error"));
}
%>
<form action="ejemplo23b.jsp" method="post">
usuario.....: <input type ="text" name="usuario" size="25"><br>
contraseña: <input type="password" name="clave" size="10"><br>
<input type ="submit" value ="enviar">
</form>
</body>
</html>

Archivo ejemplo23b.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" session="true"%>
<!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>proceso de validación</title>
</head>
<body>
<%
String usuario=null;
String clave=null; if (request.getParameter("usuario") !=null)
usuario=request.getParameter("usuario");
if (request.getParameter("clave") !=null)
clave=request.getParameter("clave");
if (usuario.equals("MERLIN")&&clave.equals("XXXX")) {
HttpSession sesion1=request.getSession();
sesion1.setAttribute("usuario",usuario);
%>
<jsp:forward page="ejemplo23c.jsp"></jsp:forward>
<%
}else {
%>
<jsp:forward page="ejemplo23a.jsp">
<jsp:param name="error" value="Usuario y/o clave incorrectos<br>Vuelve a teclearlos"/>
</jsp:forward>
<%
}
%>
</body>
</html>

Archivo ejemplo23c.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" session="true"%>
<!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>El programa principal</title>
</head>
<body>
<%
String usuario=null;
HttpSession sesion1=request.getSession();
if (sesion1.getAttribute("usuario")==null) {
%>
<jsp:forward page="ejemplo23a.jsp">
<jsp:param name="error" value="Hay que identificarse"/>
</jsp:forward>
<%} else {
usuario=(String)sesion1.getAttribute("usuario");
}
%>
<b>Opciones de la aplicación</b><br>
<b>Usuario conectado</b>
<%=usuario%><p>
<li><a href="altas.jsp">Alta nuevo usuario<a/>
<li><a href="bajas.jsp">baja de un usuario<a/>
<li><a href="modificar.jsp">Modificar los datos del usuario<a/>
<li><a href="ejemplo23d.jsp">Cerrar sesión<a/>
</body>
</html>

Archivo ejemplo23d.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"
session="true"%>
<!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>cierra la sesión y vuelve a la identificación</title>
</head>
<body>
<%
HttpSession sesion1=request.getSession();
if (sesion1!=null)  sesion1.invalidate();
%>
<jsp:forward page="ejemplo23a.jsp"></jsp:forward>
</body>
</html>

Cookies

Archivo ejemplo24a.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" import = "java.util.*"%>
<!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>crear cookies</title>
</head>
<body>
<%
Cookie miCookie = new Cookie("usuario","merlin");
miCookie.setMaxAge(60*60*24*2);
response.addCookie(miCookie);
%>
</body>
</html>

Archivo ejemplo24b.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"
import="java.util.*"%>
<!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>recuperar cookies</title>
</head>
<body>
<%
Cookie[] lasCookies = request.getCookies();

for (int i=0; i<lasCookies.length; i++)
{

Cookie miCookie = lasCookies[i];

out.println("Nombre de mi cookie... :" +
miCookie.getName() +"<br>");
out.println("Contenido de la cookie :" +
miCookie.getValue() +"<br>");
out.println("Tiempo de vida........ :" +
miCookie.getMaxAge() +"<br>");

}
%>
</body>
</html>

Bases de datos. Inserción

Archivo AccesoBDatos.java

package paquetes;
import java.sql.*;
import java.util.ArrayList;
import java.util.Collection;
public class AccesoBdatos {
public Connection conecta;
       public void conectar() throws SQLException, ClassNotFoundException {
             Class.forName("com.mysql.jdbc.Driver");
             conecta = DriverManager.getConnection("jdbc:mysql://localhost:3306/demodb","root","");
       }
       public void insertar(Integer clave, String nombre, String localidad){
             try {
                    String sql="insert into dept values (?,?,?)";
                    PreparedStatement inserta=conecta.prepareStatement(sql);
                    inserta.setInt(1,clave);
                    inserta.setString(2,nombre);
                    inserta.setString(3,localidad);
                    inserta.executeUpdate();
             } catch(SQLException e){
                    System.out.println("error al insertar en dept"+e.getMessage());
             }
       }
      
       public void insertarConBean(Depto registro){
             try {
             String sql="insert into dept values (?,?,?)";
             PreparedStatement inserta =conecta.prepareStatement(sql);
             inserta.setInt(1,registro.getDeptno());
             inserta.setString(2,registro.getDname());
             inserta.setString(3,registro.getLoc());
             inserta.executeUpdate();
             } catch(SQLException e){
             System.out.println("error al insertar en dept"+e.getMessage());
             }
             }
       public Collection consultarConBean(){
             ArrayList deptos = new ArrayList ();
             try {
             PreparedStatement consulta = conecta.prepareStatement("SELECT * FROM dept");
             ResultSet reg = consulta.executeQuery ();
             while (reg.next ()) {
             Depto departamento = new Depto(
             reg.getInt (1), reg.getString (2), reg.getString (3));
             deptos.add(departamento);
             }
             consulta.close ();
             } catch (SQLException e) {
             return null;
             } return deptos;
             }
      
       public Depto consultarUno(int numero){
             try {
             PreparedStatement consulta = conecta.prepareStatement("SELECT * FROM dept WHERE deptno=?");
             consulta.setInt(1, numero);
             ResultSet reg = consulta.executeQuery ();
             Depto departamento = new Depto();
             if (reg.next ())
             {
             departamento.setDeptno(reg.getInt (1));
             departamento.setDname(reg.getString(2));
             departamento.setLoc(reg.getString(3));
             }
             consulta.close ();
             return departamento;
             }
             catch (SQLException e) {
             System.out.println("error en la consulta"+e.getMessage());
             return null;
             }
             }
      
       public void actualizar(Depto registro){
             try {
             String sql="update dept set dname=?, loc=? where deptno=?";
             PreparedStatement actualiza = conecta.prepareStatement(sql);
             actualiza.setString(1,registro.getDname());
             actualiza.setString(2,registro.getLoc());
             actualiza.setInt(3,registro.getDeptno());
             actualiza.executeUpdate();
             } catch(SQLException e){
             System.out.println("error al actualizar en dept"+e.getMessage());
             }
             }
       public void bajas(int numero){
             try {
             PreparedStatement consulta = conecta.prepareStatement("DELETE FROM dept WHERE deptno=?");
             consulta.setInt(1, numero);
             consulta.executeUpdate();
             consulta.close ();
             } catch (SQLException e) {
             System.out.println("error en la consulta"+e.getMessage());
             }
             }
       public int bajas2(int numero){
             int filas=0;
             try {
             PreparedStatement baja = conecta.prepareStatement("DELETE FROM dept WHERE deptno=?");
             baja.setInt(1, numero);
             filas = baja.executeUpdate ();
             baja.close ();
             return filas;
             } catch (SQLException e) {
             System.out.println("error en la consulta"+e.getMessage());
             return 0;
             }
             }
       public void llamaProc(Integer clave, String localidad){
             try {
             CallableStatement actu = conecta.prepareCall("{call actualizaDept(?,?)}");
             actu.setInt(1,clave);
             actu.setString(2,localidad);
             actu.executeUpdate();
             } catch (SQLException e) {
             System.out.println("error en la actualización"+e.getMessage());
             }
             }
       public Depto consultarUnoProc(int numero){ try {
             CallableStatement consulta = conecta.prepareCall("{Call consultaDepar(?,?,?)}");
             consulta.setInt(1, numero);
             consulta.registerOutParameter(2, Types.VARCHAR);
             consulta.registerOutParameter(3, Types.VARCHAR);
             consulta.execute();
             Depto departamento = new Depto();
             departamento.deptno=numero;
             departamento.dname=consulta.getString(2);
             departamento.loc=consulta.getString(3);
             consulta.close ();
             return departamento;
             }
             catch (SQLException e) {
             System.out.println("error en la consulta"+e.getMessage());
             return null;
             }
             }
       /* Esto solo fue para probarlo independientemente
       public static void main(String[] args) throws ClassNotFoundException, SQLException{
             AccesoBdatos abd=new AccesoBdatos();
             abd.conectar();
             abd.insertar(60, "Nombre60", "Localidad 60");        
       } */
}

Archivo ejemplo33a.html

<!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 para la introducción de los datos</title>
</head>
<body>
<form action="ejemplo33b.jsp">
Departamento:<input type="text" name="cod" />
Nombre:<input type="text" name="nom" />
Localidad:<input type="text" name="loc">
<input type="submit" value="enviar"/>
</body>
</html>

Archivo ejemplo33b.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>Insert title here</title>
</head>
<body>
<jsp:useBean id="datos" scope="session" class="paquetes.AccesoBdatos" />
<%
datos.conectar();

try {

datos.insertar(Integer.parseInt(request.getParameter("cod")),
             request.getParameter("nom"),request.getParameter("loc"));
} catch (Exception e) { out.println("error en datos " + e.getMessage());
}
response.sendRedirect("ejemplo33a.html");
%>
</body>
</html>

Bases de datos. Consulta

Archivo Depto.java

package paquetes;

public class Depto {
       public Depto(Integer deptno, String dname, String loc) {
             super();
             this.deptno = deptno;
             this.dname = dname;
             this.loc = loc;
       }
       Integer deptno; String dname;
       String loc;

public  Depto() {
}

public Integer getDeptno() {
       return deptno;
}
public void setDeptno(Integer deptno) {
       this.deptno = deptno;
}
public String getDname() {
       return dname;
}
public void setDname(String dname) {
       this.dname = dname;
}
public String getLoc() {
       return loc;
}
public void setLoc(String loc) {
       this.loc = loc;
}

}

Archivo AccesoBDatos.java

package paquetes;
import java.sql.*;
import java.util.ArrayList;
import java.util.Collection;
public class AccesoBdatos {
public Connection conecta;
       public void conectar() throws SQLException, ClassNotFoundException {
             Class.forName("com.mysql.jdbc.Driver");
             conecta = DriverManager.getConnection("jdbc:mysql://localhost:3306/demodb","root","");
       }
       public void insertar(Integer clave, String nombre, String localidad){
             try {
                    String sql="insert into dept values (?,?,?)";
                    PreparedStatement inserta=conecta.prepareStatement(sql);
                    inserta.setInt(1,clave);
                    inserta.setString(2,nombre);
                    inserta.setString(3,localidad);
                    inserta.executeUpdate();
             } catch(SQLException e){
                    System.out.println("error al insertar en dept"+e.getMessage());
             }
       }
      
       public void insertarConBean(Depto registro){
             try {
             String sql="insert into dept values (?,?,?)";
             PreparedStatement inserta =conecta.prepareStatement(sql);
             inserta.setInt(1,registro.getDeptno());
             inserta.setString(2,registro.getDname());
             inserta.setString(3,registro.getLoc());
              inserta.executeUpdate();
             } catch(SQLException e){
             System.out.println("error al insertar en dept"+e.getMessage());
             }
             }
       public Collection consultarConBean(){
             ArrayList deptos = new ArrayList ();
             try {
             PreparedStatement consulta = conecta.prepareStatement("SELECT * FROM dept");
             ResultSet reg = consulta.executeQuery ();
             while (reg.next ()) {
             Depto departamento = new Depto(
             reg.getInt (1), reg.getString (2), reg.getString (3));
             deptos.add(departamento);
             }
             consulta.close ();
             } catch (SQLException e) {
             return null;
             } return deptos;
             }
      
       public Depto consultarUno(int numero){
             try {
             PreparedStatement consulta = conecta.prepareStatement("SELECT * FROM dept WHERE deptno=?");
             consulta.setInt(1, numero);
             ResultSet reg = consulta.executeQuery ();
             Depto departamento = new Depto();
             if (reg.next ())
             {
             departamento.setDeptno(reg.getInt (1));
             departamento.setDname(reg.getString(2));
             departamento.setLoc(reg.getString(3));
             }
             consulta.close ();
             return departamento;
             }
             catch (SQLException e) {
             System.out.println("error en la consulta"+e.getMessage());
             return null;
             }
             }
      
       public void actualizar(Depto registro){
             try {
             String sql="update dept set dname=?, loc=? where deptno=?";
             PreparedStatement actualiza = conecta.prepareStatement(sql);
             actualiza.setString(1,registro.getDname());
             actualiza.setString(2,registro.getLoc());
             actualiza.setInt(3,registro.getDeptno());
             actualiza.executeUpdate();
             } catch(SQLException e){
             System.out.println("error al actualizar en dept"+e.getMessage());
             }
             }
       public void bajas(int numero){
             try {
             PreparedStatement consulta = conecta.prepareStatement("DELETE FROM dept WHERE deptno=?");
             consulta.setInt(1, numero);
             consulta.executeUpdate();
             consulta.close ();
             } catch (SQLException e) {
             System.out.println("error en la consulta"+e.getMessage());
             }
             }
       public int bajas2(int numero){
             int filas=0;
             try {
             PreparedStatement baja = conecta.prepareStatement("DELETE FROM dept WHERE deptno=?");
             baja.setInt(1, numero);
             filas = baja.executeUpdate ();
             baja.close ();
             return filas;
             } catch (SQLException e) {
             System.out.println("error en la consulta"+e.getMessage());
             return 0;
             }
             }
       public void llamaProc(Integer clave, String localidad){
             try {
             CallableStatement actu = conecta.prepareCall("{call actualizaDept(?,?)}");
             actu.setInt(1,clave);
             actu.setString(2,localidad);
             actu.executeUpdate();
             } catch (SQLException e) {
             System.out.println("error en la actualización"+e.getMessage());
             }
             }
       public Depto consultarUnoProc(int numero){ try {
             CallableStatement consulta = conecta.prepareCall("{Call consultaDepar(?,?,?)}");
             consulta.setInt(1, numero);
             consulta.registerOutParameter(2, Types.VARCHAR);
             consulta.registerOutParameter(3, Types.VARCHAR);
             consulta.execute();
             Depto departamento = new Depto();
             departamento.deptno=numero;
             departamento.dname=consulta.getString(2);
             departamento.loc=consulta.getString(3);
             consulta.close ();
             return departamento;
             }
             catch (SQLException e) {
             System.out.println("error en la consulta"+e.getMessage());
             return null;
             }
             }
       /* Esto solo fue para probarlo independientemente
       public static void main(String[] args) throws ClassNotFoundException, SQLException{
             AccesoBdatos abd=new AccesoBdatos();
             abd.conectar();
             abd.insertar(60, "Nombre60", "Localidad 60");        
       } */
}

Archivo ejemplo35.java

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" import="java.util.*,paquetes.*"%>
<!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>Insert title here</title>
</head>
<body>
<jsp:useBean id="datos" scope="session" class="paquetes.AccesoBdatos" />
<jsp:useBean id="datosTabla" scope="session" class="paquetes.Depto" />
<%
datos.conectar();
Collection departamentos = datos.consultarConBean();
if (departamentos != null)
{
if (departamentos.size () > 0)
{
for (Iterator i = departamentos.iterator(); i.hasNext(); )
{
Depto departamento = (Depto) i.next ();
%>
<li> <%= departamento.getDeptno () %></li>
<li> <%= departamento.getDname () %></li>
<li> <%= departamento.getLoc() %></li>
<br><a>--------------------------------</a>
<%
}
}
}
%>
</body>
</html>

0 comentarios:

Publicar un comentario