Proyecto JSP Servlet MY SQL SERVER 2 2024
Proyecto JSP Servlet MY SQL SERVER 2 2024
DUAD
PROGRAMA INGENIERIA EN INFORMATICA
ELECTIVA DE ENFASIS I: LENGUAJE CLIENTE SERVIDOR
Ejecutar
Inicio de Asistente de Instalación
En este, puesto que MySQL Server sólo lo se utiliza para pruebas y desarrollo
de aplicaciones, se marca la opción " Server Machine " y se pulsa la tecla
"Next" para continuar
En este caso, puesto que sólo tomaran servicios de la base de datos MySQL
Server unos 15 usuarios se marca la opción "Manual Setting" e introduciremos
en "Concurrent connections": 15, pulsaremos "Next" para continuar.
A continuación, se indica al asistente si se quiere permitir conexiones externas
(de otros equipos de la red) al servidor MySQL Server, para ello se marca
"Enable TCP/IP Networking", también, se debe indicar el puerto que utilizará
MySQL Server, en "Port Number", por defecto es el 3306 por donde escucha el
Servidor MySQL. Cambiar a Puerto 3307. Se Pulsa el botón "Next" para
continuar.
En el root password digite root y confirme con root. Pulse tecla Next
SQL
Caracteristicas
Consultar información
Adicionar Registro
Borrar Registro
Modificar Registro
las tablas
Class.forName(DRIVER);
Caso Statemente:
Caso PreparedStatement:
Caso PreparedStatement:
import java.sql.*;
public class Ejemplo1
{
public static void main(String Args[ ])
{
----------
Connection conexion
PreparedStatement select = conexion.prepareStatement("SELECT * FROM productos
where stock<=? ORDER BY Nom_producto");
select.setString(1,"20");
ResultSet resultado = select.executeQuery();
while (resultado.next()) {
System.out.println(resultado.getString("nom_producto")+"
"+resultado.getString("costo")+" "+resultado.getString("stock"));
}
resultado.close(); select.close(); conexion.close();
} catch (Exception e) {
System.out.println("Error: " + e);
}
}
}
4. Se utiliza el método executeUpdate para ejecutar Sentencias INSERT, UPDATE,
DELETE
Caso Statement:
import java.sql.*;
public class Ejemplo2
{
public static void main(String Args[ ])
{
------
Connection conexion =
Statement select = conexion.createStatement();
//int k=select.executeUpdate("INSERT INTO CLIENTE VALUES(1212,'ana
mesa',4586236,'bogota')");
int k=select.executeUpdate("update cliente set domcliente='medellin' where
idcliente=1212");
//int k=select.executeUpdate("delete from cliente where idcliente=1212");
select.close(); conexion.close();
} catch (Exception e) {
System.out.println("Error: " + e);
}
}
}
Caso PreparedStatement:
import java.sql.*;
import javax.swing.*;
public class Ejemplo3
{
public static void main(String Args[ ])
{
------
Connection conexion =
String IdSuper=JOptionPane.showInputDialog(null,"Digite Id de Supermercador");
String NomSuper=JOptionPane.showInputDialog(null,"Digite Nombre de
Supermercador");
String DirSuper=JOptionPane.showInputDialog(null,"Digite Dirección de
Supermercador");
String TelSuper=JOptionPane.showInputDialog(null,"Digite Telefono de
Supermercador");
String idProd=JOptionPane.showInputDialog(null,"Digite Codigo de Producto");
PreparedStatement insert = conexion.prepareStatement("INSERT INTO supermercado
VALUES (?,?,?,?,?)");
insert.setString(1,IdSuper);
insert.setString(2,NomSuper);
insert.setString(3,DirSuper);
insert.setString(4,TelSuper);
insert.setString(5,idProd);
int resultado = insert.executeUpdate();
insert.close(); conexion.close();
} catch (Exception e) {
System.out.println("Error: " + e);
}
System.exit(1);
}
}
PARTE 3. La Importancia de la Interfaz ResultSet
En un objeto ResultSet se encuentran los resultados de la ejecución de una sentencia
consulta de SQL, por lo tanto, un objeto ResultSet contiene las filas como columnas
que satisfacen las condiciones de una sentencia de consulta SQL(Select from where).
El aspecto que suele tener un ResultSet es una tabla con cabeceras de columnas y los
valores correspondientes devueltos por una consulta SQL.
Un ResultSet mantiene un cursor que apunta a la fila actual de datos. El cursor se
mueve hacia abajo cada vez que el método next() es lanzado. Inicialmente está
posicionado antes de la primera fila, de esta forma, la primera llamada a next() situará
el cursor en la primera fila, pasando a ser la fila actual. Las filas del ResultSet son
devueltas de arriba a abajo según se va desplazando el cursor con las sucesivas
llamadas al método next(). Un cursor es válido hasta que el objeto ResultSet o su
objeto padre Statement es cerrado.
Métodos de Desplazamiento y Posicionamento
• boolean absolute(int registro): desplaza el cursor al número de registro
indicado.
• void afterLast(): se desplaza al final del objeto ResultSet, después del último
registro.
• void beforeFirst(): mueve el cursor al comienzo del objeto ResultSet, antes del
primer registro.
• boolean first(): desplaza el cursos al primer registro.
• boolean isAfterLast(): indica si nos encontramos después del último registro del
objeto ResultSet.
• boolean isBeforeFirst(): indica si nos encontramos antes del primer registro del
objeto ResultSet.
• boolean isFirst(): indica si el cursor se encuentra en el primer registro.
• boolean isLast(): indica si nos encontramos en el último registro del ResultSet.
• void last(): desplaza el cursor al último registro del objeto ResultSet.
• void moveToCurrentRow(): mueve el cursor a la posición recordada,
normalmente el registro actual.
• boolean isBeforeFirst(): indica si nos encontramos antes del primer registro del
objeto ResultSet.
• boolean isFirst(): indica si el cursor se encuentra en el primer registro.
• boolean isLast(): indica si nos encontramos en el último registro del ResultSet.
• void last(): desplaza el cursor al último registro del objeto ResultSet.
• void moveToCurrentRow(): mueve el cursor a la posición recordada,
normalmente el registro actual.
• boolean next(): desplaza el cursor al siguiente registro.
• boolean previous(): desplaza el cursor al registro anterior.
• boolean relative(int registros): mueve el cursor un número relativo de registros,
este número
• puede ser positivo o negativo.
• int getRow(): devuelve el número de registro actual
Statement select = conexion.createStatement();
ResultSet rs = select.executeQuery("SELECT * FROM productos ORDER BY
Nom_producto");
Ejemplo 1. Utilizando next():
while (rs.next()) {
System.out.println(rs.getString("nom_producto")+" "+rs.getString("costo"));
}
Es una interfaz de línea de comandos para los usuarios finales gestionar los
objetos de datos de usuario. “Mysql” tiene las siguientes características
principales:
Pasaporte root
Se inicia sesión.
Pulse
Seleccionar el Disco c:
Pulse el Botón Aceptar
Queda instalado
• Existen dos archivos sumamente importantes los cuales nos permitirán iniciar y
parar apache-tomcat se encuentra en el directorio bin.
$CATALINA_HOME/conf/tomcat-server.xml
<Resource name="jdbc/servicios"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3307/Servicios?autoReconnect=true"
username="root"
password="root"
/>
</Context>
Se está agregando al contexto un servicio de una Base de Datos mysql cuyo nombre
es Servicios. Entonces, el recurso del contexto se denomina jdbc/servicios para ser
usada por la aplicación Servicios
Guardar Documento
Actualización Usuarios Apache-Tomcat
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager-gui"/>
</tomcat-users>
Guardar Documento
Ejecutar el siguiente archivo de la carpeta
Usuario:root
Contraseña: tomcat
CLASSPATH C:\apache-tomcat-version\lib\servlet-api.jar
Los primeros programas de Java que se crearon fueron las aplicaciones de Escritorio
que podían funcionar en la consola de DOS o con ventanas de Windows, luego vienen
los applets que son fragmentos de código en Java que se incrustan en páginas web y
que envían un archivo *.class desde el servidor para que se ejecute en el servidor.
El tercer gran grupo de programas que pueden realizarse en Java son los servlets.
Estos son programas que se parecen más a las aplicaciones básicas de escritorio que
a los applets que antes estudiabamos. Sin embargo, que contienen una complejidad
mucho mayor y por eso se dió un paso más allá llamado JSP que mantiene el poder
de los servlet pero recortando su complejidad.
Servlets de Java
Los servlets son programas que se ejecutan en el servidor pero que se conectan con
el cliente desde allí. El servlet no tiene pantallas locales en el servidor, sino que
reciben y responden datos a través del servidor web. Siempre escriben sobre la
máquina de cliente en HTML/CSS.
Es decir, los servlets son programas de Java que generan HTML/CSS al vuelo y lo
envían desde el servidor al cliente. Para entender qué pasa con el JSP debemos
estudiar un poco qué es lo que pasa con el protocolo HTTP.
HTTP es un protocolo simple y sin estados. Un cliente, por ejemplo un web browser,
hace una petición (Request), el servidor web responde y la transacción está hecha.
Cuando el cliente envía una petición, la primera cosa que especifica en un comando
HTTP llamado un método, que dice al servidor qué tipo de acción quiere realizar. Esta
primera Línea de la petición también especifica la dirección de un documento (una
URL) y la versión del protocolo HTTP que está usando. Por ejemplo:
El método GET a pesar de ser hecho para pedir información dentro de su petición
puede incluir información de la petición. Esta información son parámetros de la
dirección URI que se está usando. Por ejemplo:
Ejemplo 1: http://www.server.com/ordenes.htm?cliente=1983
Ejemplo 2: http://www.server.com/ordenes.htm?cliente=1983&ID=1112
Los parámetros se dividen de la dirección con un signo "?". En este caso se añade un
par atributo-valor así: cliente=1983, esta seguramente es una referencia que lleva
información de la petición que se está haciendo. Sin embargo, la cantidad de
información que se puede enviar en la URI es limitada.
Las direcciones anteriores se llaman URI (Uniform Resource Identifier) y usan los
parámetros para puntualizar la petición GET que se está haciendo.
El método POST puede enviar mucha más información y no lo hace de manera visible
como el método GET, por lo que es emás seguro.
La API de Servlets
Habiendo recordado lo anterior, podemos hablar sobre el API de los servlets que se
usa con los servlets HTTP. Los servlets usan dos paquetes, javax.servlet y
javax.servlet.http de la extensión javax de los API. Le recomendamos dar una ojeada a
la definición del API que le permite ver los objetos que tiene disponibles para trabajar
con JSP.
Los servlets generan páginas web, es por eso que se usan en las mismas tareas que
un CGI.
Java Server Pages 1.0
JSP es un lenguaje que queda embebido dentro del HTML, y en el que se crean unas
plantillas usadas con un servlet genérico que el programador nunca ve. Estas plantillas
están escritas en HTML/CSS/JavaScript y en Java. Teniendo en cuenta que el
JavaScript se ejecuta en el cliente y el Java en el servidor. En el servidor puede
comunicarse con aplicaciones de escritorio y objetos de Java, así como con applets.
La especificación JSP 1.1 extiene la API de Java Server. Como hemos visto, ambas
forman parte de la Java 2 Platform Enterprise Edition (J2EE). Información específica
de JSP se puede conseugir en el sitio web de Sun en http://java.sun.com/products/jsp.
1. Directivas
Una directiva de JSP es una estamento que proporciona la información del motor de
JSP para la página que la pide. Su sintaxis general es <%@ directiva {atributo
="valor"} %>
dónde la directiva debe tener un número de atributos. Cada directiva tiene un XML
opcional equivalente, pero esto son intentos para una futura herramienta JSP, por esto
no lo consideraremos ahora.
servlet generado. Normalmente no es necesario utilizar otras que no sean las clases
base del proveedor.
quieran utilizar.
- session="true|false". Por defecto session vale true, manteniendo los datos de las
sesión para la página.
JSP para que multiples pedidos del cliente puedan ser tomadas como una.
-info="text". Información en la página a la que puede accederse a través del método
Servlet.getServletInfo()
2. Declaraciones
Una declaración de JSP, puede definirse como una definición de variables y métodos
a nivel de clase que son usadas en la página.
<HTML>
<HEAD>
</HEAD>
<BODY>
int intContador = 0;
%>
</BODY>
</HTML>
3. Scripts de JSP
Los Scripts son bloques de código Java residentes entre los tags <% y %>.
Este bloques de código estarán dentro del servlets generado incluídos en método
_jspService().
Los Scripts pueden acceder a cualquier variable o Beans que haya sido declarado.
También hay algunos objetos implícitos disponibles para los Scripts desde entorno del
Servlet. Vamos a verlos a continuación.
request.setAttribute("formula", tipoArea);
Para solucionar este problema, el motor de JSPutilizar la clase Factory para devolver
la implementación de clase PageContext del servidor. Esta clase PageContext es
inicializada con los objetos response y request y algunos atributos de la directiva de la
página (erropage,session,buffer and autoflush) y facilita los otros objetos implícitos
para la pagina de petición.
- page. Es la forma que tiene la página para referirse a si misma. Se usa como
alternativa al objeto this
Scriptlets
1. Hacer una página en JSP que liste los 10 primeros números enteros.
<html>
<body>
<%
int i;
for (i=0; i<10; i++) {
out.println(i+"
");
}
%>
</body>
</html>
2. Hacer una página JSP que liste los 100 primeros cuadrados
<html>
<head>
<style>
td { font-family:verdana; font-size:9pt; }
</style>
</head>
<body>
<table>
<%
int i;
for (i=0; i<100; i++) {
out.println("<tr><td>" + i + "</td><td>" + (i*i) + "<br>");
}
%>
</table>
</body>
</html>
3. Hacer una página JSP que muestre el resultado del juego 7 pum hasta 100. El juego consiste en ir
contando y cada vez que el número sea divisible por 7 o terminado en 7 entonces se reemplaza por PUM
y se salta de línea.
<html>
<head>
<style>
body { font-family:verdana; font-size:9pt; }
i { color:red; font-weight:bold; }
</style>
</head>
<body>
<%
int i;
for (i=1; i<100; i++) {
if ( ( i % 7 == 0 ) || ( i % 10 == 7 ))
out.println("<i>PUM</i><br>");
else
out.println( i + " " );
}
%>
</body>
</html>
Expresiones
Cuando necesitamos mostrar una expresión debemos usar los tags <%= ... %>
Así:
Archivo (inicial.jsp)
<html>
<body>
Vamos a crear una variable en JSP<br>
</body>
</html>
<html>
<body>
</body>
</html>
Puede ser un cálculo que se va a hacer a través de Java, ya sea usando Java Local o
un bean o un servlet.
Hay otros como <jsp:UseBean ... />, <jsp:getProperty ... />, <jsp:setProperty ... />
Declaraciones
Las variables que son globales a la clase y los métodos que tienen ámbito de clase se
declaran entre los tags <%! ... %>
<html>
<body>
</body>
</html>
<%!
%>
5. Acciones
Las acciones son etiquetas HTML que se interpretan en la fase de traducción y que
realizan diferentes operaciones.
jsp:include
Sintaxis:
</jsp:include>
<jsp:include page=”pagina2?>
<jsp:include/>
jsp:forward
Sintaxis
</jsp:forward>
Por ejemplo, si queremos ir a una pagina2 y pasar como parámetro una variable
llamada “x” que tenga un valor “y”, bastaría con hacer:
<jsp:forward page=”pagina2?>
<jsp:forward/>
Delegar peticiones a otros recursos
Tomado: http://www.adrformacion.com/cursos/javaser/leccion3/tutorial5.html
En el esquema de trabajo típico de los servlets, un servlet recibe una petición http,
ejecuta código ubicado en los métodos de servicio para generar la respuesta html y la
envía al cliente.
• El método include, que permite incluir la respuesta generada por uno de estos
recursos en el servlet sobre el que se aplica
• RequestDispatcher getRequestDispatcher(String
rutaRecursoAlQueSeDelega): se emplea, sobre todo, cuando se
desea delegar en ficheros html o jsps. También sirve para servlets.
• RequestDispatcher getNamedDispatcher(String
nombreServletAlQueSeDelegaEnDescriptor): habitualmente usado
para delegar en otro servlet. Debe especificarse el nombre o alias que
se le ha asignado al servlet en el descriptor de despliegue de la
aplicación
• RequestDispatcher getRequestDispatcher(String
rutaRecursoAlQueSeDelega): se emplea, sobre todo, cuando se desea
delegar en ficheros html o jsps
Patrón de Diseño Front Controller
Tomado de:
http://www.programacion.com/articulo/catalogo_de_patrones_de_diseno_j2ee__i
__capa_de_presentacion_240/4
Contexto
Problema
• Se requiere que cada vista proporcione sus propios servicios del sistema, lo
que normalmente resulta en duplicación de código.
• La vista de navegación se deja a los visores. Esto podría resultar en una
mezcla de contenidos y navegación.
Además, el control distribuido es más difícil de mantener, ya que los cambios se tienen
que realizar en numerosos lugares.
Causas
Solución
Estructura
Participantes y Responsabilidades
Dispatcher
Una vista podría trabajar con cualquier número de helpers, que normalmente son
componentes JavaBeans (JSP 1.0+) y etiquetas personalizadas (JSP 1.1+). Además,
un helper podría representar un objeto Command o un Transformador XSL, que se
utiliza en combinación con una hoja de estilos para adaptar y convertir el modelo a la
forma apropiada.
View
Estrategias
Servlet Front
Métodos Descripción
Servlet ServletJSP
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.*;
import java.text.*;
String Cedula,Nombre,Ciudad,Direccion,Telefono,Contrato,Servicio,SQL;
boolean transmite=true;
boolean abrir=true;
try {
conn = ds.getConnection();
} catch (Exception e) {
abrir=false;
return abrir;
@Override
@Override
throws ServletException,IOException {
String retorno="";
Cedula=peticion.getParameter("Cedula");
Nombre=peticion.getParameter("Nombre");
Ciudad=peticion.getParameter("Ciudad");
Direccion=peticion.getParameter("Direccion");
Telefono=peticion.getParameter("Telefono");
Contrato=peticion.getParameter("Contrato");
Servicio=peticion.getParameter("Servicio");
SQL=peticion.getParameter("SQL");
transmite=true;
Campos=Campos+"Cedula:"+Cedula+"...."+T.esNumero(Cedula)+"<br>";
Campos=Campos+"Nombre:"+Nombre+"..."+T.esTitulada(Nombre)+"<br>";
Campos=Campos+"Ciudad:"+Ciudad+"...."+T.esTitulada(Ciudad)+"<br>";
Campos=Campos+"Telefono:"+Telefono+".."+T.esNumero(Telefono)+"<br>";
if(transmite)
if(conectar())
if (actualizarBaseDeDatos() == 0)
else
retorno="Se ha producido un error al actualizar la base de datos";
else
else
peticion.setAttribute("retorno", retorno);
peticion.setAttribute("Campos", Campos);
RequestDispatcher rd = peticion.getRequestDispatcher("respuesta.jsp");
rd.forward(peticion, respuesta);
Statement stmt=null;
String Sentencia="";
int error=0;
int numeroFilasActualizadas=0;
if(SQL.charAt(0)=='E')
Sentencia=Sentencia+",Ciudad='"+Ciudad.toString()+"'";;
Sentencia=Sentencia+",telefono='"+Telefono.toString()+"'";;
Sentencia=Sentencia+",domicilio='"+Direccion.toString()+"'";
Sentencia=Sentencia+",idcontrato='"+Contrato.toString()+"'";;
Sentencia=Sentencia+",idservicio='"+Servicio.toString()+"'";
else
Sentencia=Sentencia+Cedula+"','";
Sentencia=Sentencia+Nombre+"','";
Sentencia=Sentencia+Ciudad+"','";
Sentencia=Sentencia+Direccion+"','";
Sentencia=Sentencia+Telefono+"','";
Sentencia=Sentencia+Contrato+"','";
Sentencia=Sentencia+Servicio+"');";
try {
stmt = conn.createStatement();
System.out.println("sentencia sql:"+Sentencia);
numeroFilasActualizadas = stmt.executeUpdate(Sentencia);
System.out.println(sql.getMessage());
error=-2;
} finally {
// Se cierra el Statement
if(stmt!=null) {
try {
stmt.close();
} catch(SQLException e){
System.out.println(e.getMessage());
error=-3;
return error;
} // fin finally
}
class Token
int i;
boolean soloFecha(String P)
if (P == null)
return false;
FormatoFecha.setLenient(false);
try {
FormatoFecha.parse(P.trim());
return false;
return true;
boolean soloCorreo(String P)
Matcher m = correo.matcher(P);
if ( m.find() )
return true;
else
return false;
}
boolean soloNumero(String P)
Matcher m = numero.matcher(P);
if ( m.find() )
return true;
else
return false;
boolean soloTitulada(String P)
Matcher m;
for(i=0;i<cadena.length;i++)
m=titulada.matcher(cadena[i]);
if(!m.find())
return false;
return true;
String esFecha(String P)
{
DateFormat FormatoFecha=DateFormat.getDateInstance(DateFormat.SHORT, new Locale("es"));
if (P == null)
FormatoFecha.setLenient(false);
try {
FormatoFecha.parse(P.trim());
String esCorreo(String P)
Matcher m = correo.matcher(P);
if ( m.find() )
else
String esNumero(String P)
if ( m.find() )
else
String esTitulada(String P)
Matcher m;
for(i=0;i<cadena.length;i++)
m=titulada.matcher(cadena[i]);
if(!m.find())
}
CONTENIDO estilos.css
html
{ height: 100%;}
{ margin: 0;
padding: 0;}
body
background: #F0EFE2;
color: #777;}
{ padding: 0 0 20px 0;
line-height: 1.7em;}
img
{ border: 0;}
color: #43423F;
margin: 0 0 15px 0;
h1
color: #A4AA04;}
h2
{ margin: 0;
padding: 0 0 5px 0;
color: #A4AA04;}
h3,h4
color: #FF0000;
}
h5, h6
padding: 0 0 15px 0;
color: #000;}
h7
{ color: #362C20;}
.form_settings
.form_settings p
.form_settings span
{ float: left;
width: 200px;
text-align: left;}
{ padding: 5px;
width: 299px;
background: #FFF;
color: #47433F;}
.form_settings .submit
width: 99px;
margin: 0 0 0 212px;
height: 33px;
cursor: pointer;
background: #263C56;
color: #FFF;}
.form_settings textarea, .form_settings select
width: 299px;}
.form_settings select
{ width: 310px;}
.form_settings .checkbox
{ margin: 4px 0;
padding: 0;
width: 14px;
border: 0;
background: none;}
.separator
{ width: 100%;
height: 0;
table
{ background: #3B3B3B;
color: #FFF;
text-align: left;}
table tr td
{ background: #F0EFE2;
color: #47433F;
<html>
<HEAD>
<TITLE> CLIENTES </TITLE>
<link rel="stylesheet" type="text/css" href="estilos.css" title="style" />
<script>
function validar()
{
if(validacion())
visible()
else
alert("No se puede actualizar...hay Fracaso en Validacion")
}
function visible()
{
alert("Se puede actualizar...")
document.getElementById("valida").disabled=true
document.getElementById("envio").disabled=false
}
function validacion()
{
var ced=document.getElementById("Cedula").value;
return esnumero(ced,"Cedula");
}
function esnumero(valor,campo)
{
var numero = /^([0-9])+$/ //digitos
//comprueba campo numerico(solo enteros y digitos)
if(!numero.test(valor))
{
alert("Contenido del campo "+campo+" no válido")
return false
}
return true
}
</script>
</HEAD>
<body>
<center>
<h1> EMPRESA LOS LAURELES</h1>
<h3> BOGOTA D.C </h3>
<h5> Nit 133-1223433-3</h5>
</center>
<br>
<form action="http://localhost:8080/Servicios/captura.jsp" method="POST">
Cedula: <input name="Cedula" type="text" size=10>
<br>
<input type="submit" name="envio" id="envio" value="Adicion/Edicion Encuesta"
disabled="true">
<input type="button" name="valida" id="envio" value="Validacion" onclick="validar()">
</form>
<br>
<form action="http://localhost:8080/Servicios/borrar.jsp" method="POST">
Cedula a Borrar: <input name="Cedula" type="text" size=10>
<br>
<input type="submit" name="enviar" id="enviar" value="Borrar encuesta" >
</form>
<br>
<form action="http://localhost:8080/Servicios/consulta.jsp" method="POST">
Tabla a Consultar: <select name="Tabla">
<option value="Encuesta">Encuesta </option>
<option value="Contratos">Contratos </option>
<option value="Servicios">Servicios </option>
</select>
<br>
<input type="submit" value="Consulta Tabla" >
</form>
</body>
</html>
Contenido Captura.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<HEAD>
<TITLE> CLIENTES </TITLE>
<link rel="stylesheet" type="text/css" href="estilos.css" title="style" />
</HEAD>
<body>
<center>
<h1> EMPRESA LOS LAURELES</h1>
<h3> BOGOTA D.C </h3>
<h5> Nit 133-1223433-3</h5>
</center>
<br>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="java.util.*" %>
<%
Connection conn = null;
ResultSet rs = null;
Statement sentencia=null;
String CadenaSql;
String Cedula=request.getParameter("Cedula");
String Nombre="";
String Ciudad="";
String Direccion="";
String Telefono="";
String Contrato="1";
String Servicio="1";
Vector idservicio;
Vector nomservicio;
Vector idcontrato;
Vector nomcontrato;
String nomcont="";
String nomserv="";
String SQL="";
boolean esta=false;
boolean activa=true;
int i=0,k=0,j=0;
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/servicios");
conn = ds.getConnection();
} catch (Exception e) {
%>
<script>
alert("no abre conexion a base de datos");
</script>
< A Href="http://localhost:8080/Servicios/Captura.html">Menu Principal </A>
<%
}
try
{
sentencia=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_
UPDATABLE);
CadenaSql="SELECT * FROM encuesta where cedula="+Cedula.toString();
rs = sentencia.executeQuery(CadenaSql);
rs.last();
if(rs.getRow()==1)
{
esta=true;
Nombre=rs.getString(2);
Ciudad=rs.getString(3);
Direccion=rs.getString(4);
Telefono=rs.getString(5);
Contrato=rs.getString(6);
Servicio=rs.getString(7);
SQL="E";
}
else
{
esta=false;
SQL="A";
}
CadenaSql="SELECT * FROM contratos";
rs = sentencia.executeQuery(CadenaSql);
idcontrato=new Vector();
nomcontrato=new Vector();
while(rs.next())
{
idcontrato.addElement((String) rs.getString(1));
nomcontrato.addElement((String) rs.getString(2));
i++;
}
CadenaSql="SELECT * FROM servicios";
rs = sentencia.executeQuery(CadenaSql);
idservicio=new Vector();
nomservicio=new Vector();
while(rs.next())
{
idservicio.addElement((String) rs.getString(1));
nomservicio.addElement((String) rs.getString(2));
j++;
}
%>
<form name="edicion" action="http://localhost:8080/Servicios/ServletJSP" method="POST">
Cedula: <input name="Cedula" readonly type="text" value="<%=Cedula%>" ><br>
Nombre: <input name="Nombre" type="text"value="<%=Nombre%>" ><br>
Ciudad: <input name="Ciudad" type="text" value="<%=Ciudad%>" ><br>
Direccion: <input name="Direccion" type="text" value="<%=Direccion%>" ><br>
Telefono: <input name="Telefono" type="text" value="<%=Telefono%>" ><br>
Contrato: <select name="Contrato" id="Contrato" >
<%
for(k=0;k<idcontrato.size();k++)
{
if(Integer.parseInt((String) idcontrato.elementAt(k))==Integer.parseInt(Contrato))
out.println("<option value="+(String) idcontrato.elementAt(k)+" selected>"+(String)
nomcontrato.elementAt(k) +"</option>");
else
out.println("<option value="+(String) idcontrato.elementAt(k)+" >"+(String)
nomcontrato.elementAt(k) +"</option>");
}
%>
</select>
<br>
Servicio: <select name="Servicio" id="Servicio" >
<%
for(k=0;k<idservicio.size();k++)
{
if(Integer.parseInt((String) idservicio.elementAt(k))==Integer.parseInt(Servicio))
out.println("<option value="+(String) idservicio.elementAt(k)+" selected>"+(String)
nomservicio.elementAt(k) +"</option>");
else
out.println("<option value="+(String) idservicio.elementAt(k)+" >"+(String)
nomservicio.elementAt(k) +"</option>");
}
%>
</select>
<br>
Operacion: <input name="SQL" readonly type="text" size=7 value="<%=SQL%>">
<br>
<input type="submit" name="envio" id="envio" value="Adicion/Edicion Encuesta" >
</form>
</body>
</html>
<%
}
catch (Exception e) {
%>
<script>
alert("error en la aplicacion");
</script>
<A Href="http://localhost:8080/Encuesta/entrada.html">Menu Principal </A>
<%
}
%>
Contenido consulta.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<HEAD>
<TITLE> CLIENTES </TITLE>
<link rel="stylesheet" type="text/css" href="estilos.css" title="style" />
</HEAD>
<body>
<center>
<h1> EMPRESA LOS LAURELES</h1>
<h3> BOGOTA D.C </h3>
<h5> Nit 133-1223433-3</h5>
</center>
<br>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="java.util.*" %>
<%
Connection conn = null;
ResultSet rs = null;
Statement stmt=null;
String Tabla=(String)request.getParameter("Tabla");
ResultSetMetaData Lista=null;
String SQL="SELECT * FROM "+Tabla;
int i;
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/servicios");
conn = ds.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(SQL);
Lista = rs.getMetaData();
} catch (Exception e) {
%>
<script>
alert("no abre conexion a base de datos");
</script>
<A href="http://localhost:8080/Servicios/captura.html"> Ir a Captura </A>
<%
}
%>
<%
try
{
for(i = 1; i <= Lista.getColumnCount();i++ )
{
%>
<th>
<%-- Nombres de las columnas de la tabla MySQL --%>
<%=
Lista.getColumnLabel(i)
%>
</th>
<%
}
%>
</tr>
<%
while(rs.next())
{
%>
<tr>
<%
for(i = 1; i <= Lista.getColumnCount();i++ )
{
%>
<td>
<%=rs.getString(i)%>
</td>
<%
}
%>
</tr>
<%
}
}
catch(Exception e) {}
%>
</table>
<A href="http://localhost:8080/Servicios/captura.html"> Ir a Captura </A>
</body>
</html>
Contenido borrar.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<HEAD>
<TITLE> CLIENTES </TITLE>
<link rel="stylesheet" type="text/css" href="estilos.css" title="style" />
</HEAD>
<body>
<center>
<h1> EMPRESA LOS LAURELES</h1>
<h3> BOGOTA D.C </h3>
<h5> Nit 133-1223433-3</h5>
</center>
<br>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="java.util.*" %>
<%
Connection conn = null;
ResultSet rs = null;
Statement sentencia=null;
String CadenaSql;
String Cedula=(String) request.getParameter("Cedula");
String actual=(String) request.getParameter("actual");
String Nombre="";
String Ciudad="";
String Direccion="";
String Telefono="";
String Contrato="1";
String Servicio="1";
String linea="";
int i=0;
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/servicios");
conn = ds.getConnection();
}
catch (Exception e)
{
%>
<script>
alert("no abre conexion a base de datos");
</script>
<A Href="http://localhost:8080/Servicios/Captura.html">Menu Principal </A>
<%
}
try
{
sentencia=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATAB
LE);
CadenaSql="SELECT * FROM encuesta where cedula="+Cedula.toString();
rs = sentencia.executeQuery(CadenaSql);
rs.last();
if(rs.getRow()==1)
{
Nombre=rs.getString(2);
Ciudad=rs.getString(3);
Direccion=rs.getString(4);
Telefono=rs.getString(5);
Contrato=rs.getString(6);
Servicio=rs.getString(7);
out.println( " REGISTRO A E L I M I N A R S E");
linea ="<table border=3>";
linea =linea+"<tr>";
linea =linea+"<td><strong>CEDULA</strong></td>";
linea =linea+"<td>"+Cedula+"</td>";
linea =linea+"</tr>";
linea =linea+"<tr>";
linea =linea+"<td><strong>NOMBRE</strong></td>";
linea =linea+"<td>"+Nombre+"</td>";
linea =linea+"</tr>";
linea =linea+"<tr>";
linea =linea+"<td><strong>TELEFONO</strong></td>";
linea =linea+"<td>"+Telefono+"</td>";
linea =linea+"</tr>";
linea =linea+"<tr>";
linea =linea+"<td><strong>CIUDAD</strong></td>";
linea =linea+"<td>"+Ciudad+"</td>";
linea =linea+"</tr>";
linea =linea+"<tr>";
linea =linea+"<td><strong>DOMICILIO</strong></td>";
linea =linea+"<td>"+Direccion+"</td>";
linea =linea+"</tr>";
linea =linea+"<tr>";
linea =linea+"<td><strong>CONTRATO</strong></td>";
linea =linea+"<td>"+Contrato+"</td>";
linea =linea+"</tr>";
linea =linea+"<tr>";
linea =linea+"<td><strong>SERVICIO</strong></td>";
linea =linea+"<td>"+Servicio+"</td>";
linea =linea+"</tr>";
linea =linea+"</table>";
out.println( linea);
sentencia = conn.createStatement();
i = sentencia.executeUpdate("delete from encuesta where cedula="+Cedula);
}
else
{
out.println( " C E D U L A N O E N C O N T R A D A");
linea ="<table border=3>";
linea =linea+"<tr>";
linea =linea+"<td><strong>CEDULA</strong></td>";
linea =linea+"<td>"+Cedula+"</td>";
linea =linea+"</tr>";
linea =linea+"</table>";
out.println( linea);
}
}
catch (Exception e)
{
}
%>
<A href="http://localhost:8080/Servicios/captura.html"> Ir a Captura </A>
</body>
</html>
Contenido context.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<Context reloadable="true">
<Resource name="jdbc/servicios"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3307/Servicios?autoReconnect=true"
username="root"
password="root"
/>
</Context>
Contenido web.xml
<web-app>
<servlet>
<servlet-class>ServletJSP</servlet-class>
</servlet>
<servlet-mapping>
<url-pattern>/ServletJSP </url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>
captura.html
</welcome-file>
</welcome-file-list>
</web-app>
Contenido respuesta.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>JSP Page</title>
</head>
<body>
<%
String Cedula=request.getParameter("Cedula");
String Nombre=request.getParameter("Nombre");
String Ciudad=request.getParameter("Ciudad");
String Direccion=request.getParameter("Direccion");
String Telefono=request.getParameter("Telefono");
String Contrato=request.getParameter("Contrato");
String Servicio=request.getParameter("Servicio");
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body>");
out.println("formulario: </font></b>");
out.println("<br><P><HR><CENTER><H5>"+retorno+"</CENTER>");
out.println("<br><P><HR><CENTER><H5>"+Campos+"</CENTER>");
out.println("</body>");
out.println("</html>");
%>
</body>
</html>
PRACTICA A REALIZAR
Antecedente
Una página JSP es básicamente una página Web con HTML tradicional y trozos de
código Java. La extensión de archivo de una página JSP es. Jsp en lugar de. Html o
htm., Que indica al servidor que esta página requiere un manejo especial que se
llevará a cabo mediante una extensión del servidor o un plug-in.
Cuando una página JSP se llama, será compilada (por el motor JSP) en un servlet
Java. En este punto el servlet es manejado por el motor servlet, al igual que cualquier
otro servlet. El motor de servlets luego carga la clase servlet (usando un cargador de
clases) y lo ejecuta para crear HTML dinámico que se envía al navegador, tal como se
muestra en la figura 1. El servlet crea un objeto necesario, y escribe cualquier objeto
como una cadena en una secuencia de salida al navegador.
La próxima vez que se solicite la página, el motor JSP ejecuta el servlet ya cargado a
menos que la página JSP ha cambiado, en cuyo caso se vuelve a compilar
automáticamente en un servlet y ejecutado.
Actividades
Realizar el servlet que valide en el servidor. Sino cumple con las expresiones
regulares requeridas para cada campo no se puede adicionar registro en la tabla
encuesta de la base de datos servicios. La respuesta de validación como actualización
se despliega en el documento JSP (Vista) llamado respuesta.jsp
1. Crear una carpeta en webapps del servidor apache tomcat denominada Servicios
con la siguiente estructura
10. En la carpeta WEB-INF se debe crear la carpeta classes que antes de arrancar el
servidor debe tener los siguientes archivos: ServletJSP.java, ServletJSP.class,
Token.class
Nota. Token.class es el generado al compilar el servlet ServletJSP. Token es
instanciado en el servlet ServletJSP (Token T=new Token())
Captura de Datos
Respuesta del servlet en la vista (respuesta.jsp)
Borrado de Encuesta
Consulta tablas
Captura de Datos cumpliendo con reglas de validación
Pasaporte root