Está en la página 1de 131

Tutorial J (Java Server Pages)

UNIDAD 1: JAVA JSP ELEMENTOS BASICOS

1. INTRODUCCION
2. MODELO DE SOLUCION
3. VARIABLES
4. TIPOS DE DATOS
5. CLASES NUMERICAS
6. OPERADORES ARITMETICOS
7. OPERADOR CAST Y CONVERSIONES
8. JERARQUIA DE OPERACIONES
9. APLICACIONES
10. CONCEPTOS BASICOS DE OOP
11. JAVA SERVER PAGE (1)

APENDICE: OBJETOS HTML


APENDICE: PALABRAS RESERVADAS JAVA

UNIDAD 2: JAVA JSP INSTRUCCIONES DE


CONTROL DE PROGRAMA

1. INTRODUCCION
2. INSTRUCCIONES DE CONTROL DE PROGRAMA
3. INSTRUCCIONES CONDICIONALES
4. CONDICIONES SIMPLES
5. OPERADORES RELACIONALES
6. INSTRUCCION IF
7. CONDICIONES COMPUESTAS
8. INSTRUCCION SWITCH
9. CONTROL SELECT
10. CONTROL CHECKBOX Y MANEJO DE
EXEPCIONES
11. CONTROL RADIOBUTTON
12. CICLO FOR
13. CICLO WHILE
14. CICLO DO...WHILE
15. CONCLUSIONES ACERCA DE CICLOS

UNIDAD 3: JAVA JSP ARREGLOS

1. INTRODUCCION
2. ARREGLOS TRADICIONALES
3. ARREGLOS TIPO LISTA
4. ARREGLOS TIPO TABLA

UNIDAD 4: JAVA JSP FUNCIONES Y


PROCEDIMIENTOS

1. PROCEDIMIENTOS Y FUNCIONES
2. PARAMETROS
3. VARIABLES LOCALES Y GLOBALES
4. FUNCIONES
5. ARREGLOS COMO PARAMETROS

UNIDAD 5: JAVA JSP REGISTROS Y ARCHIVOS


SECUENCIALES

1. INTRODUCCION
2. ESTRUCTURAS O REGISTROS
3. ARCHIVOS (1)
4. ARCHIVOS (2)
5. CREACION ARCHIVOS
6. GRABACION Y LECTURA DISCO
7. BUSQUEDA EN ARCHIVO DIRECTO
8. FILTROS o CONDICIONES
9. BAJA o ELIMINACION
10. OPERACIONES CON CAMPOS
11. EDICION o MODIFICACION REGISTROS
12. GRAFICOS

UNIDAD 6: JAVA JSP ARCHIVOS DIRECTOS

1. INTRODUCCION ARCHIVOS DIRECTOS


2. CREACION ARCHIVOS
3. GRABACION Y LECTURA DISCO
4. BUSQUEDA EN ARCHIVO DIRECTO
5. FILTROS o CONDICIONES
6. BAJA o ELIMINACION
7. OPERACIONES CON CAMPOS
8. EDICION o MODIFICACION REGISTROS
9. GRAFICOS

UNIDAD 7: JAVA JSP INT A LAS BASES DE


DATOS (MICROSOFT ACCESS)

1. INTRODUCCION
2. MODELOS DE ALMACENAMIENTO DE DATOS
3. TABLAS
4. TABLAS (CONTINUACION)
5. MICROSOFT ACCESS
6. JDBC SQL RESULTSET CONNECTION
7. SELECCION O DESPLIEGUE
8. INSERCCION O ADICION DE REGISTROS
9. BUSQUEDAS
10. FILTROS
11. OPERACIONES CON CAMPOS
12. BAJAS
13. EDICION DE REGISTROS
14. GRAFICOS O IMAGENES
UNIDAD 8: JAVA JSP INT A LAS BASES DE
DATOS (MYSQL)

1. INTRODUCCION
2. MODELOS DE ALMACENAMIENTO DE DATOS
3. TABLAS
4. TABLAS (CONTINUACION)
5. MYSQL (1)
6. OBJETO RESULTSET MYSQL (2)
7. SELECCION O DESPLIEGUE
8. INSERCCION O ADICION DE REGISTROS
9. BUSQUEDAS
10. FILTROS
11. OPERACIONES CON CAMPOS
12. BAJAS
13. EDICION DE REGISTROS
14. GRAFICOS O IMAGENES
UNIDAD I: JAVA JSP ELEMENTOS BASICOS

TEMA 1: INTRODUCCION JAVA JSP

From Ugly Duckling to Swan

Eli Cohen, Reconceptualizing Information Systems as


a Field of the Transdiscipline Informing Science: From
Ugly Duckling to Swan, Journal of Computing and
Information Technology. 7 (3) 1999, 213-219.

Hans Christian Anderson wrote a tale in which all the


young ducks made fun of another. They made the
duckling feel inadequate because he was different.
One day a swan, the most beautiful of the fowl,
declared that the youngster was in fact a young swan
and a fine one at that.

“Information Systems is the field of inquiry that


attempts to provide the business client with
information in a form, format, and schedule that
maximizes its effectiveness.”

Información y Conocimiento son los dos elementos


claves del nuevo milenio ninguna sociedad podrá
alcanzar ni puede ignorar este nuevo esquema ya las
naciones no se miden por su riqueza industrial, ni sus
activos físicos, ni por su poder militar, sino por la
cantidad de información que produce y consume, así
como por la recombinación de información nueva en
un conocimiento de grado superior.

Nuevos sistemas de información, tienden a ser cada


vez de mayor alcance y complejidad sobre todo
cuando se toman en cuenta las nuevas necesidades
de información y conocimiento que demandan las
nuevas organizaciones.

Nuevos sistemas de información son costosos en


tiempos y recursos, la solución moderna de sistemas
de información exigen herramientas y metodologías
que resuelvan rápida, económica, eficiente y de
manera global, problemas de información y
conocimiento planteados por las organizaciones.

Además el pleno potencial del hardware tampoco es


aprovechado plenamente y existe un considerable
retraso con el software y sus aplicaciones generando
lo que se conoce como “crisis del software”.

Nuevos paradigmas de programación se ocupan para


la creación de nuevos sistemas y necesidades
creativas de información.

Java un lenguaje de programación moderno


implementado por la compañía www.java.sun.com a
finales de 1996, se ha convertido en el lenguaje
estándar para la construcción de aplicaciones basadas
en internet así como de los nuevos modelos de
programación, tales como programación móvil,
programación para dispositivos, programación para
servicios web, etc.

En programación orientada a objetos ( OOP ) un


programa es considerado como un sistema de objetos
interactuando entre sí, ambientes de desarrollo
visuales facilitan aun más la construcción de
programas y solución de problemas, porque permiten
abstraer al ingeniero de software de todo el GUI
(interfase gráfica) del problema, que constituye más
del 60% del código normal de un programa.
En OOP todo problema aun aquellos sencillos de
información, se consideran y resuelven como módulos
de código gigante (clase) que contiene todo el código
necesario (variables, procedimientos, funciones,
interfaces, etc.) para solucionar el problema.

En programación java básica, se tiene la mezcla de lo


mejor de estos tres mundos, es decir construimos
programas, aplicaciones y sistemas de información
usando técnicas estructuradas, construyendo objetos
y diseñando sistemas gráficos, y todo orientado a la
construcción de sistemas de información basados en
redes de cualquier tipo o tamaño.
UNIDAD 1: JAVA JSP ELEMENTOS BÁSICOS

TEMA 2: MODELO DE SOLUCIÓN JAVA JSP

En general un problema de información es posible


entenderlo, analizarlo y descomponerlo en todos sus
componentes o partes que de una u otra manera
intervienen tanto en su planteamiento como en su
solución.

Una herramienta rápida que nos permite


descomponer en partes un problema para su solución
es el llamado modelo de solución, esta consiste de
una pequeña caja que contiene los tres elementos
más básicos en que se puede descomponer cualquier
problema sencillo de información, estas tres partes
son:

LA PRIMERA PARTE son todos los datos que el


computador ocupa para resolver el problema, estos
datos son almacenados internamente en la memoria
del computador en las llamadas variables de entrada.

LA SEGUNDA PARTE son todas las operaciones


generalmente algebraicas necesarias para solucionar
el problema, generalmente esta parte del modelo es
una ecuacion algebraica o formula (o igualdad
matemática, ej. X= y + 5).

LA TERCERA PARTE es el resultado o solución del


problema que generalmente se obtiene de la parte de
operaciones del modelo y dichos datos están
almacenados en las llamadas variables de salida.
En resumen para todo problema sencillo de
información es necesario plantearse las siguientes
preguntas:

Que datos ocupa conocer el computador para resolver


el problema y en cuales variables de entrada se van a
almacenar?

Que procesos u operaciones debe realizar el


computador para resolver el problema planteado?

Que información o variables de salida se van a


desplegar en pantalla para responder al problema
planteado originalmente?

Como nota importante no confundir los términos


datos, variables e información:

Datos se refiere a información en bruto no procesada


ni catalogada, por ejemplo “Tijuana”, “calle primera #
213”,”15 años”, ” $2,520.00”, etc.

Variables es el nombre de una localidad o dirección


interna en la memoria del computador donde se
almacenan los datos, ejemplo de variables para los
casos del inciso anterior, CIUDAD, DIRECCIÓN, EDAD,
SUELDO, ETC.

Información son datos ya procesados que resuelven


un problema planteado.

EJEMPLO DE MODELO DE SOLUCIÓN

Construir un modelo de solución que resuelva el


problema de calcular el área de un triángulo con la
formula área igual a base por altura sobre dos.
Variable(s) de Variable(s) de
Proceso u Operación
Entrada Salida
AREA = BASE *
BASE ALTURA AREA
ALTURA / 2

PROBLEMA 2.- CONVERTIR LA EDAD EN AÑOS DE UNA


PERSONA A MESES.

PROBLEMA 3.- CONVERTIR PESOS A DÓLARES.


PROBLEMA 4.- CALCULAR EL ÁREA DE UN CIRCULO
CON LA FORMULA

AREA = PI * RADIO2

PROBLEMA 5.- EVALUAR LA FUNCIÓN y = 5x²-3x +2 PARA


CUALQUIER VALOR DE X.

 Observar para el caso de constantes fijas o


conocidas (PI) no se debe dar como dato de
entrada su valor en cambio colocar
directamente su valor dentro de la formula en la
parte de operaciones del problema.
 Pero recordar también que existirán problemas
sencillos donde:
 No se ocupan entradas o no se ocupan
operaciones, pero todos ocupan salida.
 Una formula grande o muy compleja puede ser
más segura y fácil de resolver, si es
descompuesta y resuelta en partes, juntando al
final los parciales para obtener el resultado
final.
 Un problema puede tener más de una solución
correcta.
 El problema no esta suficientemente explicado o
enunciado, entonces, estudiarlo, analizarlo y
construirlo de manera genérica.
TAREAS PROGRAMACION JAVA JSP

Construir los modelos de solución de los siguientes


problemas:

PROBLEMA 6.- Convertir millas a kilómetros (caso


normal)

PROBLEMA 7.- Convertir 125 metros a centímetros (no


ocupa entradas)

PROBLEMA 8.- Se calcula que en promedio hay 4.7


nidos en cada árbol en la UABC, también se calcula
que en cada nido existen un promedio de 5.8 pájaros,
se pide calcular la cantidad total de nidos y de pájaros
en los 227 arboles que existen en la UABC. (no ocupa
entradas)

PROBLEMA 9.- La gorda Sra. López y sus 8 hijos solo


compran una vez al mes su mandado en conocido
supermercado, en dicha tienda el kilogramo de frijol
cuesta $8.75, el paquete de tortillas cuesta $3.55 y el
frasco de café vale $14.25, si solo compran de estos
tres productos para su mandado, calcular su gasto
total.( problema no claro)

PROBLEMA 10.- Capturar y desplegar los cinco datos


mas importantes de un automóvil (no ocupa
operaciones)

PROBLEMA 11.- La distancia Tijuana - Ensenada es de


110 Kms, si un automóvil la recorre a una velocidad
constante de 30 millas por hora, cuanto tiempo tarda
en llegar. (1 milla =1.609 Km.) (dos maneras
correctas de resolverlo).

PROBLEMA 12.-Evaluar la función y = 3x2 + 2x – 5 para


cualquier valor de x. (caso normal).
PROBLEMA 13.-Evaluar la función y = -5x3 - 3x2 + 8 para
cuando x vale 4. (no ocupa entradas).
UNIDAD I: JAVA JSP ELEMENTOS BÁSICOS

TEMA 3: JAVA JSP VARIABLES

Identificadores son conjuntos de letras y/o números


que se utilizan para simbolizar todos los elementos
que en un programa son definibles por el usuario
(programador o ingeniero de software) del mismo
como son las variables donde se almacenan datos,
funciones( pequeños módulos con código), etiquetas,
clases, objetos, etc.

En Java JSP una variable se define como un


identificador que se utiliza para almacenar todos los
datos generados durante la ejecución de un
programa.

Existen ciertas reglas en cuanto a variables:

 Claras y con referencia directa al problema.


 No espacios en blanco, ni símbolos extraños en
ellas.
 Se pueden usar abreviaturas, pero solo de
carácter general.
 No deben ser palabras reservadas del lenguaje.

Ejemplos de buenas variables:

Nombre, Edad, SdoDiario, IngMensual, Perímetro,


Calif1, etc.
UNIDAD I: JAVA JSP ELEMENTOS BASICOS

TEMA 4: JAVA JSP TIPOS DE DATOS

En Java Jsp a toda variable que se use en un


programa, se le debe asociar (generalmente al
principio del programa) un tipo de dato específico.

Un tipo de dato define todo el posible rango de


valores que una variable puede tomar al momento de
ejecución del programa y a lo largo de toda la vida útil
del propio programa.

Los tipos de datos más comunes en java jsp son:

Primitive Data Types


Keywor
Description Size/Format
d
(integers)
8-bit two's
“byte” Byte-length integer
complement
16-bit two's
“short” Short integer
complement
32-bit two's
“int” Integer
complement
64-bit two's
“long” Long integer
complement
(real numbers)
Single-precision floating
“float” 32-bit IEEE 754
point
“double Double-precision floating
64-bit IEEE 754
” point
(other types)
16-bit Unicode
“char” A single character
character
“boolea A boolean value (“true” or true or false
n” “false”)

* tabla tomada de java.sun.com documentation

Como se observa es muy similar a las de c o c++.


Para el caso de strings se debera usar la Clase String que tiene dos
constructores, de momento entenderemos esto ultimo como dos
maneras de crearse, ejemplo;

1. String nombre = new String();


2. String ciudad = new String(“Tijuana”);

En este ultimo caso se crea la string y se inicializa con un dato o


valor.
UNIDAD I: JAVA JSP ELEMENTOS BASICOS

TEMA 5: JAVA JSP CLASES ESPECIALES

En java Jsp como lenguaje de programacion orientado a objetos


existen aparte de la clase String vista en el tema anterior cuatro
clases especiales, descendientes de la clase NUMBERS, que
contienen una serie de metodos que facilitan la interaccion con los
usuarios de nuestras aplicaciones en captura y despliegue de datos
numericos.

Sin embargo su caracteristica mas importante a tomar en cuenta, es


que objetos numericos derivados de estaS clase, no pueden entrar a
operaciones DIRECTAMENTE, ni recibir el resultado de
operaciones.

Class Integer
public final class java.lang.Integer extends java.lang.Number
{
// Fields
public final static int **MAX_VALUE**;
public final static int **MIN_VALUE**;
// Constructors
public **Integer**(int value);
public **Integer**(String s);
// Methods
public double **doubleValue**();
public boolean **equals**(Object obj);
public float **floatValue**();
public static Integer **getInteger**(String nm);
public static Integer **getInteger**(String nm, int val);
public static Integer **getInteger**(String nm, Integer val);
public int **hashCode**();
public int **intValue**();
public long **longValue**();
public static int **parseInt**(String s);
public static int **parseInt**(String s, int radix);
public static String **toBinaryString**(int i);
public static String **toHexString**(int i);
public static String **toOctalString**(int i);
public String **toString**();
public static String **toString**(int i);
public static String **toString**(int i, int radix);
public static Integer **valueOf**(String s);
public static Integer **valueOf**(String s, int radix);
}
Esta clase convierte un dato de tipo int a un objeto.
Este objeto contiene un solo campo de tipo int.
Pero tambien el objeto contiene una serie de metodos para convertir
un valor int a una String y tambien para convertir una String a int.
Ademas de otros metodos de igual utilidad.

* Clase y notas tomadas directamente de java.sun

Class Double
public final class java.lang.Double extends
java.lang.Number
{
// Fields
public final static double **MAX_VALUE**;
public final static double **MIN_VALUE**;
public final static double **NaN**;
public final static double **NEGATIVE_INFINITY**;
public final static double **POSITIVE_INFINITY**;
// Constructors
public **Double**(double value);
public **Double**(String s);
// Methods
public static long **doubleToLongBits**(double value);
public double **doubleValue**();
public boolean **equals**(Object obj);
public float **floatValue**();
public int **hashCode**();
public int **intValue**();
public boolean **isInfinite**();
public static boolean **isInfinite**(double v);
public boolean **isNaN**();
public static boolean **isNaN**(double v);
public static double **longBitsToDouble**(long bits);
public long **longValue**();
public String **toString**();
public static String **toString**(double d);
public static Double **valueOf**(String s);
}

* La misma fuente y las mismas notas de la clase anterior

Class Float
public final class java.lang.Float extends java.lang.Number
{
// Fields
public final static float **MAX_VALUE**;
public final static float **MIN_VALUE**;
public final static float **NaN**;
public final static float **NEGATIVE_INFINITY**;
public final static float **POSITIVE_INFINITY**;
// Constructors
public **Float**(double value);
public **Float**(float value);
public **Float**(String s);
// Methods
public double **doubleValue**();
public boolean **equals**(Object obj);
public static int **floatToIntBits**(float value);
public float **floatValue**();
public int **hashCode**();
public static float **intBitsToFloat**(int bits);
public int **intValue**();
public boolean **isInfinite**();
public static boolean **isInfinite**(float v);
public boolean **isNaN**();
public static boolean **isNaN**(float v);
public long **longValue**();
public String **toString**();
public static String **toString**(float f);
public static Float **valueOf**(String s);
}

* La misma fuente y notas anteriores

Class Long
public final class java.lang.Long extends java.lang.Number
{
// Fields
public final static long MAX_VALUE;
public final static long MIN_VALUE;
// Constructors
public Long(long value);
public Long(String s);
// Methods
public double doubleValue();
public boolean equals(Object obj);
public float floatValue();
public static Long getLong(String nm);
public static Long getLong(String nm, long val);
public static Long getLong(String nm, Long val);
public int hashCode(); public int intValue();
public long longValue();
public static long parseLong(String s);
public static long parseLong(String s, int radix);
public static String toBinaryString(long i);
public static String toHexString(long i);
public static String toOctalString(long i);
public String toString();
public static String toString(long i);
public static String toString(long i, int radix);
public static Long valueOf(String s);
public static Long valueOf(String s, int radix);
}

* La misma fuente y notas anteriores


UNIDAD 1: JAVA JSP ELEMENTOS BASICOS

TEMA 6: JAVA JSP OPERADORES


ARITMETICOS

Un operador es un símbolo especial que indica al


compilador que debe efectuar una operación
matemática o lógica.

Java jSP reconoce los siguientes operadores


aritméticos:

Operad
Operación
or
+ Suma
- Resta
* Multiplicacion
/ Division
Residuo o
%
Modulo

Como notas importantes a recordar siempre;

En problemas de division entre enteros, java trunca la


parte residual, ejemplo;

Desplegar—> 13/5 —> el resultado es 2

Mas adelante se dira como resolver este problema.

Para resolver los problemas de potencias y raíces, se


usan ciertas instrucciones especiales que proporciona
el lenguaje, llamadas funciones matemáticas, en java
existe toda una librería de instrucciones o funciones
matemáticas.
Recordar que todas las funciones reciben uno o más
datos o valores y regresan siempre un resultado, una
de estas funciones matemáticas es:

import java.lang.math ;
public static double pow(double a, double b);

Esta función ocupa dos valores o datos ( base y exp)


ambos de tipo double, y regresa un resultado también
de tipo double, ejemplo;

* resolver el problema de calcular 53


import java.io.*;
import java.lang.Math;

public class ejemplo1


{
public static void main(String args[])
{
double base =5;
double exponente=3;
double potencia =0;
potencia = Math.pow(base, exponente);
System.out.println("potencia =" +potencia);
} // cerrar main
} //cerrar clase

Para resolver el problema de raíces, se aprovecha una


de las mas elementales y conocida de las leyes de
exponentes que dice:

Es decir una raíz cualquiera se puede transformar a una potencia con


un exponente fraccionario.

Ejemplo:

Problema y = 3Ö x esto es equivalente a y = 3 * x 1/2 entonces

Usando la función pow

Y = 3*Math.pow(x, 0.5);
* En este ejemplo no funcional se esta dando por supuesto que no
interesa el tipo de dato que requiere la función pow() para trabajar
correctamente.

Para realizar operaciones con objetos numericos, recordar que no se


pueden hacer directamente operaciones con ellos ni tampoco pueden
recibir resultados en ellos, lo que se debe hacer es usar una variable
temporal de tipo apropiado, hacer la operacion con dicha variable y
al final si se quiere convertir esta variable al objeto numerico
apropiado (esto ultimo se vera en el siguiente tema), como lo
muestra el siguiente ejemplo;

Integer alfa = new Integer(20);


Double zeta = new Double(5);
double alfa1=0, zeta1=0;
alfa1=alfa.doubleValue();
zeta1=zeta.doubleValue();
alfa1=alfa1 + zeta1;
desplegar alfa1;

Como se observa se crearon dos objetos numericos, luego dos


variables numericas normales, luego estas dos ultimas variables se
cargan con los objetos numericos que emplean metodos propios para
convertirlos a datos normales.

La libreria matematica de java jsp completa incluye:

Class Math
public final class java.lang.Math
extends java.lang.Object
{ Fields
public final static double E;
public final static double PI;
Methods
public static double abs(double a);
public static float abs(float a);
public static int abs(int a);
public static long abs(long a);
public static double acos(double a);
public static double asin(double a);
public static double atan(double a);
public static double atan2(double a, double b);
public static double ceil(double a);
public static double cos(double a);
public static double exp(double a);
public static double floor(double a);
public static double IEEEremainder(double f1, double f2);
public static double log(double a);
public static double max(double a, double b);
public static float max(float a, float b);
public static int max(int a, int b);
public static long max(long a, long b);
public static double min(double a, double b);
public static float min(float a, float b);
public static int min(int a, int b);
public static long min(long a, long b);
public static double pow(double a, double b);
public static double random();
public static double rint(double a);
public static long round(double a);
public static int round(float a);
public static double sin(double a);
public static double sqrt(double a);
public static double tan(double a);
}

* fuente tomada de java.sun.com


UNIDAD 7: JAVA JSP ELEMENTOS BASICOS

TEMA 7: JAVA JSP OPERADOR CAST y


CONVERSIONES

Se puede forzar un dato, variable o una expresión a convertirse o


cambiarse a un nuevo tipo de dato.

El operador cast realiza este proceso, es decir convierte datos,


variables o expresiones a un nuevo tipo de dato, su formato es:

(nvotipo) dato , var, exp;

Ejemplo:

// declaración
int alfa;
// Asignación
alfa = 20;
// Cambio de tipo
(float) alfa;

Ejemplo:

(int) 3.1416;

• en este ejemplo se está convirtiendo un float a int, recordar


que en este caso ya no se tendrán los decimales.
• Como nota importante se puede hacer cast solo con tipos de
datos, no entre tipos de datos y objetos de una clase
numerica.

Como nota importante este operador resuelve los dos problemas


pendientes:

1. El de la división entre enteros.


2. El tipo de dato especifico que requieren las funciones.
Ejemplos:

a) // Declaración
float alfa;
// Operación
alfa = (float)23/5;
// Pero en estos casos es preferible
alfa=23/5.0;

En toda división recordar agregar a uno de los dos valores el (.0),


solo que los dos elementos sean variables entonces usar el operador
cast con una de ellas.

b)// Declaración
double potencia;
// Operación
potencia = Math.pow ( (double)5, (double)3);

Como se observa en el ejemplo, se puede usar pow(), directamente


con los datos, argumentos o parámetros requeridos , si estos son
numéricos, pero transformándolos con el operador cast.

Esto también va a permitir evaluar expresiones matemáticas de


manera mas directa y sencilla, solo recordando usar un pow() por
cada potencia y cada raíz de la ecuación, ejemplo:

Sea dentro de un programa esto se resuelve con;

// área de declaración de variables


double y, x;
// área de captura de datos
capturar el valor de x;
// área de operaciones
y = 3 * Math.pow(x, (double)3) - Math.pow(x, (1/3.0)) + 4 *
Math.pow(x, (double)2));
// área de despliegue de resultados
desplegar x, y

En Java Jsp para convertir tipos de datos numericos a


objetos numericos y viseversa se deberan usar los
metodos que traen las clase numericas de manera
apropiada, en general existen tres casos generales
difrentes, considerando datos o variables numericas,
objetos numericos y strings que es un caso especial y
comun:

a.1) Variable numerica a variable numerica


Usar el operador cast ejemplo:
var to var
int alfa1=10; double alfa2=3.1416;
alfa1= (int)alfa2;
observar que valores decimales deben declararse
como doubles

a.2) variable numerica a string


ejemplo;
var to string
int zeta=50;
String alfa= String.valueOf(zeta);

a.3) variable numerica a objeto numerico


caso 1: usando constructor
int zeta=80;
Float alfa4 = new Float(zeta);
caso 2: ya existe el objeto numerico
Double alfa5 = new Double(0);
Int zeta=30;
alfa5=Double.valueOf(String.valueOf(zeta));

b.1) Objeto Numerico a Variable numerica


todos los objetos numericos deben crearse
inicializados aunque sea a (0)
Integer alfa = new Integer(300);
Int zeta = alfa.intValue();

b.2) Objeto numerico a String


Float alfa = new Float(“3.45”);
String beta = new String(” ”);
Beta = alfa.toString();

B.3) Objeto Numerico a Objeto Numerico


Integer alfa=new Integer(50);
Double beta=new Double(0);
beta = beta.valueOf(alfa.toString());

c.1) String to variable numerica


String alfa= new String(“3.5”);
double beta= 0;
beta= Double.parseDouble(alfa);

c.2) String to Objeto Numerico


String alfa8=new String(“50”);
Double alfa9=new Double(0);
alfa9 = alfa9.valueOf(alfa8);

TAREAS JAVA JSP POW():

1.
2.
3.
UNIDAD 1: JAVA JSP ELEMENTOS BASICOS

TEMA 8: JAVA JSP JERARQUIA DE


OPERACIONES

En Java Jsp como en todos los demas lenguajes de


programacion el problema de no tomar en cuenta la
jerarquía de los operadores al plantear y resolver una
operación casi siempre conduce a resultados muchas
veces equivocados como estos:
Ejemplos:

- 2+ 3* 4 = 20(incorrecto) = 14 (correcto)
b) si calif1=60 y calif2=80
entonces en programa se usa
promedio=calif1 + calif2/2
da como resultado promedio = 100

Recordar siempre, que antes de plantear una formula


en un programa se deberá evaluar contra el siguiente:

Orden de operaciones:

1. Paréntesis
2. Potencias y raíces
3. Multiplicaciones y divisiones
4. Sumas y restas
5. Dos o más de la misma jerarquía u orden,
entonces resolver de izquierda a derecha

Nota: Si se quiere alterar el orden normal de


operaciones, entonces usar paréntesis.
Nota: Tampoco es bueno usar paréntesis de mas en
una operación, esto solo indica que no se evalúo bien
la formula, como en el siguiente ejemplo;
aquí los paréntesis están de mas, porque por orden
de operaciones, multiplicación y división tienen la
misma jerarquía y entonces se resuelven de
izquierda a derecha, en sus programas de java jsp
ni que falten paréntesis ni que sobren paréntesis.
UNIDAD 1: JAVA JSP ELEMENTOS BASICOS

TEMA 9: APLICACIONES JAVA JSP

Recordar que JAVA es un lenguaje de programación


moderno, que esta enfocado a la construcción de
sistemas de informacion que se ejecutarán en una
plataforma muy diversa de procesadores y sistemas
operativos.

Esto indica la necesidad de construir diversos tipos de


aplicaciones, programas o sistemas en general
existen los sguientes tipos de aplicaciones basicas:

1. Aplicaciones o programas que se ejecuten en


“consolas”, es decir ambientes del tipo msdos,
linux, terminales tontas, etc.
2. Aplicaciones o sistemas que se ejecuten en
ambientes graficos o de tipo “ventanas:,
ejemplo windows, kde o gnome de linux, sistem
8 de apple, etc.
3. Aplicaciones de tipo APPLETS, que tambien son
programas en java que se mandan a una pc
remota o lejana, donde esa pc se encarga de
correrla o ejecutarla o compilarla y correrla.

Este applet lo manda un servidor de paginas(web


server) junto con la pagina correspondiente, cada vez
que un usuario se conecta al web server y requiere la
pagina que contiene el applet.

Para el caso de applets estos se ejecutan no en


consola tampoco en una ventana sino dentro de el
browser de la maquina remota que puede ser el
internet explorer de microsoft o el netscape.
Por supuesto que el browser del cliente debe estar
preparado para ejecutar applets, esto se hace
teniendo constantemente actualizado el browser
(internet explorer o netscape) y estando sobre todo
seguro que en la actualización del browser se incluya
la maquina virtual de java.

4. Aplicacion de tipo SERVLETS, que son


programas en java que se ejecutan
direcatemente en el servidor de paginas o web
server, que al ser invocado o llamado por una pc
remota, el web server compila y ejecuta el
servlet, ya ejecutado se mandan generalmente
los resultados a la maquina remota, estos
resultados se mandan en forma de una pagina
html, para que la maquina remota los vea en su
propio browser. Una vez que el web server o
servidor de paginas ejecuta un servlet, lo
mantiene vivo o despierto, para responder de
manera mas rapida a las peticiones siguientes
que se hagan del servlet.
5. Aplicaciones JSP (Java Server Pages),
tecnologia que combina codigo html y
codigo java en un solo programa o
aplicación, cuando al web server le piden
un jsp, lo compila, lo convierte a servlet
con todas las implicaciones que se
mencionarón en el inciso anterior y manda
los resultados a la pc remota que lo
solicitó.
6. Beans y Java Beans, tecnologias de tipo servlet
pero que estan especializadas principalmente
en mantener enlaces constantes a bases de
datos de cualquier marca (access, oracle, mysql,
etc), esto permite que una serie de varios
programas o aplicaciones a la vez esten
interactuando con el mismo java bean y por
consiguiente con la base de datos.
7. Existen otra serie de aplicaciones diferentes que
se pueden construir con java, tales como
aplicaciones rmi, aplicaciones en tiempo real,
ejb , pero de momento estan fuera del alcance
de estas notas.(estarse pendiente de la
siguiente actualizacion de este texto) .

En general todas las aplicaciones que se pueden


desarrollar (consola, graficas, applets y servlets, jsp,
beans ) todas tienen en comun el lenguaje e
instrucciones de programacion de java.
Sin embargo para propositos de este curso nos
especializaremos en JSP (JAVA SERVER PAGES), en
virtud de que actualmente es una de las tecnologias
mas utiles para la construcción de programas,
apliacciones y sistemas de información modernos.
UNIDAD 1: JAVA JSP ELEMENTOS BÁSICOS

TEMA 10: JAVA JSP CONCEPTOS BÁSICOS DE


PROGRAMACION ORIENTADA OBJETOS

Para nuestro propósito en general un objeto puede


definirse como cualquier cosa, ente o entidad física o
lógica de información.
En este sentido todos los elementos materiales o
inmateriales pueden clasificarse como objetos.

En particular cualquier objeto considerado presenta


los siguientes tres elementos:

a) Propiedades: Son las características propias de


un objeto estas propiedades o atributos son los
que permiten diferenciar o individualizar un
objeto de otro objeto ya sea de la misma o
diferente clase o categoría. Las propiedades
mas generales son forma, color, tamaño, peso,
pero ya en particular:
Chamarra → Marca, material, precio, color,
tamaño, etc
Alumno → Matricula, nombre, edad, domicilio,
etc.
Gato → Raza, nombre, color, edad, etc.
VentanaWindows–>Tamaño, Color, font, etc.
b) Métodos: Son las conductas propias de la
naturaleza del objeto.
Así como las propiedades son el ser (que es) del
objeto, los métodos son el hacer (que hacer) del
objeto.
ejemplo de métodos:
Gato —> Maullar(), comer(), correr(), saltar(),
etc.
Alumno—> Estudiar(), comer(), asistir clase(),
pintear()
Cuaderno–>Esescrito(), esrayado(), esborrado(),
etc.
VentanaWindows–> Abrir(), cerrar(),
maximizar(), etc….
c) Eventos: Es la relación (de varias maneras) que
se puede dar entre dos objetos ya sean de la
misma o diferente clase.
Un evento se manifiesta como un interacción
entre dos objetos, en general al momento de la
relación al mismo tiempo se dará una reacción o
respuesta por parte de los dos objetos que se
manifiestan como una serie, cadena o conjuntos
de métodos propios que se activan o disparan,
ejemplo:

Relaci Métodos que se


Evento
ón activan
detect maullar(), correr(),
gato detecta gata
ar oler()
detect bufar(), saltar(),
gato detecta perro
ar correr()
maestro enseña Enseñ pasar lista(),
alumno ar preguntar(), etc
Raton click
click maximizar(), cerrar()
Windows
Raton dblclk
dblclk minimizar(), etc
Windows

Un Programa en java jsp se puede considerar como un


conjunto de una o mas paginas o formas, donde cada
una de ellas contiene un conjunto de objetos,
componentes o controles.

Un componente o propiamente dicho un control es un


objeto que se especializa en una tarea especifica por
ejemplo hay controles especializados en desplegar
textos o mensajes, otros controles se especializan en
desplegar imágenes o vídeos, otros en manipular
directorios o archivos en disco, etc.

Pero en general tanto las formas como los controles


no dejan de ser objetos en programación y por tanto
tienen sus propiedades, métodos y están sujetos a
eventos.
UNIDAD 1: JAVA JSP ELEMENTOS BASICOS

TEMA 11: JAVA JSP ( JAVA SERVER PAGE )

Java Server Page, es otra de las nuevas tecnologias


para tratar de hacer mas eficiente el modelo cliente-
servidor y sobre todo la construcción de sistemas de
comercio electronico.

En este modelo una pagina html tambien incluye


codigo en java, es el servidor de paginas quien al
estar mandando la pagina a la pc remota la compila y
la convierte en un servlet.

Esta tecnologia combina en una sola aplicación, tanto


codigo html como codigo java.
El proceso de crear un jsp, es sencillo se crea un
achivo normal con notepad combinando codigo html y
codigo java, se graba con extension .jsp, se hace un
ftp al servidor y listo.

Cuando el usuario requiere un jsp el servidor lo carga,


lo compila, lo convierte a servlet y manda la pagina
resultante al usuario remoto.

Empezamos con un pequeño ejemplo: prog1.jsp


<%
// declarando
int base=0,altura=0; double area=0;
if(request.getParameter("OK") != null)
{
base = Integer.parseInt(request.getParameter("BASE"));
altura = Integer.parseInt(request.getParameter("ALTURA"));
area= base * altura / 2.0 ; };
// construyendo forma dinamica
out.println("<FORM ACTION=prog1.jsp METHOD=post>");
out.println("DAME LA BASE:<INPUT TYPE=TEXT NAME=BASE
value="+base+"><BR>");
out.println("DAME LA ALTURA:<INPUT TYPE=TEXT NAME=ALTURA
value="+altura+"><BR>");
out.println("AREA:<INPUT TYPE=TEXT NAME=AREA value="+area+"><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=OK VALUE=evento1 ><BR>");
out.println("</FORM>");
%>

corrida:

Solo grabarlo como prog1.jsp (ojo con notepad y su


.txt), al folder web-inf luego ftp a tu sitio en
LUNARPAGES y llamarlo con
www.LUNARPAGES/tusitio/prog1.jsp

Notas:
1. Para insertar codigo java dentro de una pagina
html se deberan usar una serie de tags o
delimitadores ( en el ejemplo se esta usando <
% una serie de instrucciónes de java %> )
donde cada uno de ellos tiene un proposito
definido.
Otros delimitadores son:
Comentarios <%– comentario –%> Ignorados
cuando jsp es convertida a servlet y muy utiles
para documentar nuestros programas jsp.
Declaracion <%! Variables, metodos, etc %>
Recordar que todo buen programa, empieza
declarando variables.
2. Instruccion <%= instruccion %> Para poner una
y solo una instrucción de java, ademas recordar
que ya existen aparte ciertas instrucciones o
variables predefinidas tales como request,
response, out, session, application, config, and
pageContext( tambien disponibles en scriptlets).
Recordar ademas que cuando se use <%= una
sola instrucción %>, la instrucción no debe
terminar con punto y coma.
Scriptlet <% todo un programa completo %> Un
scriptlet es un grupo de instruciones de java,
como se deduce de esta definición, se usara
muchos scriptltes en nuestros jsp.
Aqui si, las instucciones deben terminar con
punto y coma
Un bloque de instruciones <% bloque java %>,
puede empezar (<%) en un scriptlet y terminar
en otro scriptlet, pero asegurarse de que todos
los scriptlets se abran y se cierren.
Include Directive <%@ include file=“url” %> Se
usa para incluir achivos en la pc que compila la
jsp, esto se realiza al tiempo que la jsp es
convertida en servlet, el url debe ser relativo.
Para este caso tambien es valido:
jsp:include action para incluir el archivo al
tiempo de request por parte de un usuario
remoto
jsp:forward Action <jsp:forward page=“URL
relativo”/> Manda llamar o enlazar otra pagina.
NOTA: HASTA AQUI SON LAS DIRECTIVAS O
DELIMITADORES MAS COMUNES EN PROGRAMAS
O APLICACIONES SENCILLAS
2.- En la parte de abajo se esta construyendo
una pagina html dinamica, usando la
instrucción( mejor dicho objeto OUT) out.println
de java, les recuerdo conseguir un buen tutorial
de HTML y estudiarlo a fondo.
3. Se esta usando tres objetos TEXT de html (ver
apendice html), de estos objetos se cargan su
propiedad NAME y VALUE en este ultimo caso
usando una variable normal de java jsp
4. Poner atención dentro del programa que cuando
creamos objetos HTML se declaran en
mayusculas y cuando creamos variables java se
declaran en minusculas, no es una regla pero si
es una buena practica de programación.
5. Se esta usando un objeto HTML submit del cual
se usan las propiedades NAME y VALUE, este
objeto tiene como proposito principal activar la
acción de la forma (llamarse a si mismo el
prog1.jsp) y ademas mandar los datos que
proporciono el usuario hacia el servidor.
6. La ultima parte de la pagina es FORM, todos los
objetos html deberan estar encerrados entre
esta forma o ventana, form tiene dos
propiedades la primera de ellas es una acción y
en este caso la acción es pedirle al servidor que
vuelva a ejecutarse el propio programa1 jsp, la
segunda parte es un metodo, es este caso es el
metodo POST tambien se puede poner el
metodo GET, en ambos casos este metodo
regresa los datos desde la pc del usuario hacia
el servidor, pero POST lo hace en forma invisible
y GET lo hace en forma publica (probar el
mismo programa con post y get y observar que
pasa cuando activan el boton de submit).
7. Al principio del programa se deberan declarar e
inicializar a 0 o ”” todas las variables del
programa.
8. Se esta usando una instrucción IF para revisar el
VALUE de SUBMIT, recordar que cuando el
usuario pide por primera vez el programa al
servidor , el VALUE del objeto SUBMIT es “null”,
ya que el usuario carga datos en los objetos
TEXT y realiza un click en SUBMIT, el value de
SUBMIT pasa a valer “evento1”.
9. Se esta usando el objeto
REQUEST.GETPARAMETER( VALUE OBJETO
HTML) para leer la propiedad VALUE de los
objetos HTML y de paso cargarlos en las
variables java apropiadas.
10. Recordar que todos los datos que entran o
salen de un objeto html seran de tipo string.
11. Por la razón del inciso 10 se esta usando
el metodo parseInt(string) para convertir la
string a int.
12. Ya cargadas las variables se debera
realizar la operación apropiada, recordar incluir
estas variables en la forma dinamica.

TAREAS PROGRAMACION JAVA JSP

15 DE LOS PROBLEMAS PROPUESTOS EN EL TEMA DE


MODELO DE SOLUCION.
Apéndice: OBJETOS HTML

“Button, Submit, Reset, CheckBox, Radio, Password,


Text, TextArea, Select, Hidden”

“Controles Button”, “Submit” y “Reset”.

Propiedad Metod
Eventos
es os
“OnClick
“form” “click”

“OnFocu
“name” “focus”
s”
“value”
“enabled”

Control “CheckBox”.

Metod
Propiedades Eventos
os
“OnClick
“form” “click”

“OnFocu
“name” “focus”
s”
“value”
“enabled”
“checked”
“defaultcheck
ed”

Control “Radio”.

Propiedad Metod
Eventos
es os
“form” “OnClick “click”

“OnFocu
“name” “focus”
s”
“value”
“enabled”
“checked

Control “Password”.

Propiedad Metod
Eventos
es os
“form” “OnBlur” “blur”
“OnFocu
“name” “focus”
s”
“value”
“enabled”

Controles “Text” y “Textarea”s.

Propiedad Metod
Eventos
es os
“form” “OnBlur” “blur”
“OnFocu
“name” “focus”
s”
“value”
“enabled”

Control “Select”.

Metod
Propiedades Eventos
os
“length” “OnBlur” “blur”
“OnFocus
“options” “focus”

“selectedInd “OnChang
ex” e”

Control “Hidden”.

Propiedad Event Metod


es os os
“name”
“value”
Apéndice: Java Language Keywords

Here's a list of Java's keywords. These words are


reserved–you cannot use any of these words as
names in your Java programs. “true”, “false”, and
“null” are not keywords but they are reserved words,
so you cannot use them as names in your programs
either.

“abstrac “strictfp”
“double” “int”
t” &&
“boolean “interface
“else” “super”
” ”
“break” “extends” “long” “switch”
“synchroniz
“byte” “final” “native”
ed”
“case” “finally” “new” “this”
“package
“catch” “float” “throw”

“char” “for” “private” “throws”
“protecte
“class” “goto” & “transient”
d”
“const”
“if” “public” “try”
%
“continu “implemen
“return” “void”
e” ts”
“default” “import” “short” “volatile”
“instanceof
“do” “static” “while”

% indicates a keyword that is not currently used


%% indicates a keyword that was added for Java 2

JAVA.SUN.COM
UNIDAD 2: JAVA JSP INSTRUCCIONES DE
CONTROL DE PROGRAMA

TEMA 1: JAVA JSP INTRODUCCIÓN

En este capitulo se continua siguiendo el esquema de


trabajo ya planteado en el capitulo anterior, es decir:

Construcción de programas mezclando una pagina


con forma html y un programa de tipo jsp.
UNIDAD 2: CONTROL DE PROGRAMA

TEMA 2: JAVA JSP INSTRUCCIONES DE


CONTROL DE PROGRAMA

Instrucciones de control de programa permiten alterar


la secuencia normal de ejecución de un programa.

Estas instrucciones se dividen en tres grandes


categorías:

1. Instrucciones Condicionales que en java jsp se


implemen
tan con las instrucciones if y switch.

a. Instrucciones de ciclos con


 for
 while
 do while

En java jsp muchas de ellas tienen sus


correspondientes componentes visuales, derivados de
html.
UNIDAD 2: JAVA JSP INSTRUCCIONES DE
CONTROL DE PROGRAMA

TEMA 3: JAVA JSP INSTRUCCIONES


CONDICIONALES

Una de las mas poderosas características de cualquier


computador es la capacidad que tiene de tomar
decisiones.
Es decir al comparar dos alternativas diferentes el
computador puede tomar una decisión basándose en
la evaluación que hace de alguna condición.

En java jsp algunos ejemplos de instrucciones


condicionales:

si sueldo > 3000


desplegar rico
si no
desplegar pobre
Fin-si
si sexo = 'm'
imprime mujer
si no
imprime hombre
Fin-si

De los ejemplos observar que los caminos a seguir por


el computador dependerán de la evaluación que el
computador hace con y de la condición.

Todo lenguaje de programación como java jsp debe


tener instrucciones que permitan formar condiciones
e instrucciones que pueden evaluar esas condiciones.
Pero recordar que lenguajes modernos y orientados a
clientes-servidores de igual forma tienen
componentes que permiten del mismo modo al
usuario tomar decisiones incluso directamente en
pantalla, es decir tambien existen los objetos,
controles o componentes de selección y decisión en
html.
El formato general de una instrucción condicional es:

Como se observa, son cuatro partes bien


diferenciadas entre si;

• La propia instrucción condicional en si


• La condición
• El grupo cierto de instrucciones
• El grupo falso de instrucciones

Cuando el computador evalúa una condición el


resultado de esa evaluación solo es evaluado de dos
maneras o la condición es CIERTA o la condición es
FALSA.

Esto dependerá del valor que tenga asignado o que se


haya capturado para la variable que esta en la
condición, por ejemplo si se capturo 6000 en sueldo
en el ejemplo a) entonces el computador indicaría que
la condición es CIERTA pero en otro caso si a la
variable sueldo primero se le asigno un valor de 250
entonces el computador indicaría que la condición es
FALSA.

Ya dependiendo del resultado de la evaluación, el


computador ejecuta las instrucciones contenidas en el
grupo de cierto o falso respectivamente.

En este curso de java jsp empezaremos el análisis por


la CONDICIÓN.
UNIDAD 2: JAVA JSP INSTRUCCIONES DE
CONTROL DE PROGRAMA

TEMA 4: JAVA JSP CONDICIONES SIMPLES

En general todas las condiciones se forman con:

Variabl Operadores Constante o


es Relaciónales Variables
sexo = m
sueldo > 300,000

En java jsp una condición simple se define como el


conjunto de variables y/o constantes unidas por los
llamados operadores relaciónales.
UNIDAD 2: JAVA JSP INSTRUCCIONES DE
CONTROL DE PROGRAMA

TEMA 5: JAVA JSP OPERADORES


RELACIONALES

Los operadores relaciónales que reconoce java jsp


son:

Operad
Significado
or
== Igual que
> Mayor que
< Menor que
>= Mayor o igual que
⇐ Menor o igual que
No es igual que o es
!=
diferente que

Tambien observar y tener cuidado sobre todo con el


operador de igualdad (y el operador relacional de
comparación por igualdad es decir; sueldo = 500, Se
esta pidiendo cargar o asignar la variable sueldo con
el valor 500 sueldo == 500, Se esta pidiendo que se
compare el valor o dato que se encuentra en la
variable sueldo, contra el numero 500.

En java jsp solo este ultimo formato es valido dentro


de una condición en una instrucción condicional.

Para objetos derivados de la clase STRING se usara el


metodo str1.compareTo(str2) que regresa cero (0) si str1
es igual str2, regresa un positivo si str1 es mayor que
str2 y regresa un negativo si str1 es menor que str2.
UNIDAD 2: JAVA JSP INSTRUCCIONES DE
CONTROL DE PROGRAMA

TEMA 6: JAVA JSP INSTRUCCIÓN IF

Es la instrucción condicional mas usada en los


diversos lenguajes de programación, su formato
completo y de trabajo en java jsp es:

cargar o asignar la variable de condición;


if (condición)
{ grupo cierto de instrucciones;}
else
{ grupo falso de instrucciones; };

Primus.- Observar donde van y donde no van los


puntos y comas;
Secundus.- La condición va entre paréntesis ;
Tertius.- Si un if no ocupa un grupo falso de
instrucciones entonces no se pone el else, y la llave
antes del else si terminaría con punto y coma.

Ejemplo:
Prog2 jsp
<%
// declarando
int sueldo=0;String res="";
if(request.getParameter("OK") != null)
{
sueldo = Integer.parseInt(request.getParameter("SUELDO"));
if (sueldo >= 3000)
{ res="RICO"; }
else {res="POBRE"; };
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog2.jsp METHOD=post>");
out.println("DAME SUELDO:<INPUT TYPE=TEXT NAME=SUELDO
value="+sueldo+"><BR>");
out.println("EVALUACION:<INPUT TYPE=TEXT NAME=RES
value="+res+"><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=OK VALUE=evento1 ><BR>");
out.println("</FORM>");
%>
Recordar que es valido usar mas de una instrucción
dentro del grupo cierto o falso del if.

Recorar ademas que para el caso de strings usar:

if ( carrera.compareTo(“informatica”) == 0 )

TAREAS PROGRAMACION JAVA JSP

1. Capturar un numero cualesquiera e informar si


es o no es mayor de 100.
2. Capturar un numero entero cualesquiera e
informar si es o no es múltiplo de 4 ( recordar el
operador mod(%), analizado en el tema de
operadores aritméticos).
3. Capturar los cinco datos mas importantes de un
Empleado, incluyendo el sueldo diario y los días
trabajados desplegarle su cheque semanal solo
si ganó mas de $500.00 en la semana, en caso
contrario desplegarle un bono de despensa
semanal de $150.00.
4. Capturar los datos mas importantes de un
estudiante incluyendo tres calificaciones
construir una boleta de calificaciones en una
pagina de respuesta bien bonita si el estudiante
es de la carrera de medicina, en caso contrario
construir una pagina mas bonita todavia que
despliega un oficio citando a los padres del
estudiante a una platica amistosa con los
maestros de la escuela.
5. Capturar los datos mas importantes de una
mercancia cualesquiera, incluyendo cantidad,
precio, etc. desplegar una orden de compra,
solo si el producto es de origen nacional, en
caso contrario no hacer nada.
UNIDAD 2: JAVA JSP INSTRUCCIONES DE
CONTROL DE PROGRAMA

TEMA 7: JAVA JSP CONDICIONES


COMPUESTAS

En muchas ocasiones es necesario presentar mas de


una condición para su evaluación al computador.

Por ejemplo que el computador muestre la boleta de


un alumno si este estudia la carrera de medicina y su
promedio de calificaciones es mayor de 70.

Una condición compuesta se define como dos o


mas condiciones simples unidas por los
llamados operadores lógicos.

Los operadores lógicos que java jsp reconoce son:

OPERAD
SIGNIFICADO
OR
&& “Y” LOGICO
“O”
LOGICO
“NO”
!
NEGACION

Ejemplo:

if ( (sueldo >100) && ( sexo=='m') ) etc, etc, etc.


Y recordar que para comparar strings usar;
if ( carrera.compareTo(“informatica”) == 0 )

Notas:
Observar que cada condición simple lleva sus propios
parentesis.
Si la variable es de tipo string el dato va entre
comillas(”), pero si la variable es de tipo char el dato
va entre apostrofes(').
Para que el computador evalúe como CIERTA una
condición compuesta que contiene el operador lógico
”&&”, las dos condiciones simples deben ser ciertas.

Para que el computador evalúe como CIERTA una


condición compuesta que contiene el operador lógico
“||”, basta con que una de las condiciones simples sea
cierta.

La cantidad total de casos posibles cuando se unen


dos o mas condiciones simples esta dada por la
relación donde n = cantidad de condiciones, la
primera mitad de ellos empieza en cierto y la segunda
mitad en falso.

Ejemplo, si formamos una condición compuesta con


dos condiciones simples y el operador lógico “y”, la
cantidad total de casos posibles serian , y se
puede construir la siguiente tabla de verdad.

Tabla de verdad con “y”

IRA COND 2DA COND EVALUACI


SIMPLE SIMPLE ON
C C C
C F F
F C F
F F F
La evaluación final, se obtiene usando la regla
anteriormente descrita para una condición
compuesta, que contiene el operador “Y”.

Esta tabla significa lo siguiente;

1. Cualquiera que sean la cantidad de datos


procesados, siempre caerá en uno de estos
cuatro casos generales.
La tabla de verdad para una condición compuesta con
“Or” es la siguiente;

IRA COND 2DA COND EVALUACI


SIMPLE SIMPLE ON
C C C
C F C
F C C
F F F

Construir una tabla de verdad para una condición


compuesta de tres o mas condiciones simples, es
también tarea sencilla, solo recordar que;
1. La cantidad posible de casos es casos
posibles, la mitad empiezan con Cierto y la otra
mitad empiezan con Falso.
2. Para evaluar esta condición triple primero se
evalúan las dos primeras incluyendo su
operador bajo las reglas ya descritas y luego se
evalúa el resultado parcial contra la ultima
condición y ultimo operador para obtener la
evaluación final.
Ejemplo una condición compuesta de tres
condiciones simples, donde el primer operador
lógico es el “y” y el segundo operador lógico es
el “O”, daría la siguiente tabla de verdad.

Ira 2da Eval 1a Y 3ra Eval eval O


cond cond 2a cond 3ra
C C C C C
C C C F C
C F F C C
C F F F F
F C F C C
F C F F F
F F F C C
F F F F F
TAREAS PROGRAMACION JAVA JSP

1. Construir un programa que capture un numero


cualesquiera e informe si es o no es mayor de
50 y múltiplo de tres. ( solo escribir el mensaje
de respuesta de manera muy clara y esto
resuelve el problema )
2. Construir un programa que indique si un numero
es un par positivo.
3. Capturar los datos de una mercancia incluyendo
su cantidad en existencia, desplegar una orden
de compra si la cantidad en existencia del
producto es menor que el punto de reorden, o si
el origen del producto es nacional.
4. Construir un programa que capture los datos de
un empleado, desplegar en una pagina su
cheque semanal si gana mas de $500.00 y si
esta en el departamento de producción, en caso
contrario desplegarle en otra pagina un bono de
despensa del 25% de su sueldo semanal.
UNIDAD 2: JAVA JSP INSTRUCCIONES DE
CONTROL DE PROGRAMA

TEMA 8: JAVA JSP INSTRUCCIÓN SWITCH

También existen ocasiones o programas donde se


exige evaluar muchas condiciones a la vez, en estos
casos o se usa una condición compuesta muy grande
o se debe intentar convertir el problema a uno que se
pueda resolver usando la instrucción SWITCH.

Esta instrucción es una instrucción de decisión


múltiple donde el compilador prueba o busca el valor
contenido en una variable ENTERA o CHARACTER
contra una lista de constantes apropiadas, es decir
enteras, character, cuando el computador encuentra
el valor de igualdad entre variable y constante
entonces ejecuta el grupo de instrucciones asociados
a dicha constante, si no encuentra el valor de
igualdad entre variable y constante, entonces ejecuta
un grupo de instrucciones asociados a un default,
aunque este ultimo es opcional.

El formato de esta instrucción es el siguiente:


capturar o asignar variable de condición;

switch(var OPCION)
{
case const1: instrucción(es);
break;
case const2: instrucción(es);
break;
case const3: instrucción(es);
break; ………………
default: instrucción(es);
};

prog3 jsp

<%
// declarando
char letra=' ';
if(request.getParameter("OK") != null)
{
//recordar que TEXTBOX contiene una string
letra=request.getParameter("LETRA").charAt(0);
switch(letra)
{case 'a':
out.println("aguila ");
break;
case 'b': case 'B':
out.println("baca ");
break;
case 'c':
out.println("caballo ");
break;
default:
out.println("no hay ");
};
// observar que se puede escribir direcatmente a la pagina dinamica
// esto es para los flojos
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog3.jsp METHOD=post>");
out.println("DAME UNA LETRA:<INPUT TYPE=TEXT NAME=LETRA
value="+letra+"><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=OK VALUE=evento1 ><BR>");
out.println("</FORM>");
%>

TAREAS PROGRAMACION JAVA JSP

1. Construir un programa que capture un deporte


cualesquiera y despliegue dos implementos
deportivos apropiados.
2. Evaluar cualquier función vista para cuando x
=3,-4, 5
UNIDAD 2: JAVA JSP CONTROL DE
PROGRAMA

TEMA 9: CONTROL SELECT JAVA JSP

Existen muchas ocasiones en donde el usuario del


programa tiene que proporcionar datos que provienen
de un conjunto finito y muy pequeño de posibles
respuestas esto significa que cada vez que se ejecute
el programa el usuario estará proporcionando las
mismas respuestas.

Ejemplo de esta clase de datos, son por ejemplos


Municipio en BC las posibles respuestas solo son
(Tecate, Tijuana, Mexicali, Ensenada, Rosarito), otro
ejemplo es Sexo (Hombre, Mujer), etc.
Para situaciones como esta existen componentes html
que permiten programar por adelantado las posibles
respuestas y el usuario solo debe seleccionar la
respuesta apropiada en lugar de tener que escribirla.

Este control SELECT nos permite definir en primera


instancia un conjunto de datos o valores respuestas
asociados a una caja de edición cualesquiera así
ahora el usuario tendrá la oportunidad de seleccionar
un dato del conjunto de datos o respuestas ya
predefinido.

Este componente SELECT DEBERA CONSTRUIRSE EN


dos partes una parte de encabezado para poner el
nombre del grupo de respuestas( por ejemplo
municipios, sexo, etc.)
La segunda parte es la lista de opciones o respuestas
que se debe cargar al tiempo de ejecución de la forma
html como lo muestra el siguiente programa:

Prog4.jsp
<%
// declarando
String municipio="";
if(request.getParameter("OK") != null)
{
municipio =request.getParameter("MUNICIPIO");
out.println(municipio+" =");
if (municipio.compareTo("ENSENADA")==0) out.println("TIBIO");
if (municipio.compareTo("TIJUANA")==0) out.println("HELADO");
if (municipio.compareTo("MEXICALI")==0) out.println("CALIENTE");
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog4.jsp METHOD=post>");
out.println("<B>MUNICIPIOS</B>");
out.println("<SELECT NAME=MUNICIPIO>");
out.println("<OPTION>ENSENADA<OPTION>TECATE<OPTION>TIJUANA<OPTION>ME
XICALI");
out.println("</SELECT>");
out.println("<INPUT TYPE=SUBMIT NAME=OK VALUE=evento1 ><BR>");
out.println("</FORM>");
%>

TAREAS PROGRAMACION JAVA JSP

1. Arreglar un par de los programas anteriores


agregandole este control a los que se puedan.
2. Evaluar la función para x = 2,-5, 8.
3. Construir una forma.html con los datos de un
automóvil(usar puros select) y construir dos
paginas de salida o respuesta una con un plan
de financiamiento a dos años u otra con un plan
de financiamiento a tres años.
UNIDAD 2: JAVA JSP CONTROL DE
PROGRAMA

TEMA 10: JAVA JSP CHECKBOX Y


EXCEPCIONES

El componente CheckBox , permite seleccionar una


opción al usuario del programa o tomar una decisión
directamente en pantalla.

Ejemplos de uso:

Observar que dos o mas checkboxs pueden estar


seleccionados a la vez.
Codigo prog5 jsp
<%! String m,n,f; %>

<%
// observar declaracion y usando las otras directivas
if(request.getParameter("OK") != null)
{
m=request.getParameter("M");
n=request.getParameter("N");
f=request.getParameter("F");
try{
if (m.compareTo("on")==0) out.println("masculino checado<br>");
}catch(java.lang.NullPointerException e){};
try{
if (n.compareTo("on")==0) out.println("neutro checado<br>");
}catch(java.lang.NullPointerException e){};
try{
if (f.compareTo("on")==0) out.println("femenino checado<br>");
}catch(java.lang.NullPointerException e){};
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog5.jsp METHOD=post>");
out.println("<b>sexo:</b><br>");
out.println("<input type=checkbox name=M checked>masculino<br>");
out.println("<input type=checkbox name=F >femenino<br>");
out.println("<input type=checkbox name=N checked>neutro<br>");
out.println("<INPUT TYPE=SUBMIT NAME=OK VALUE=evento1 ><BR>");
out.println("</FORM>");
%>

Notas:

1. grabarlo y subirlo como prog5. jsp a tu sitio en


programacionfacil.com
2. La propiedad name debera ser diferente en
cada checkbox usado, la propiedad checked se
usa para que aparezca ya palomeado o
seleccionado el control.
3. Cuando se activa prog5 jsp, esta forma manda
el par NAME = on solo de los checkbox que
fuerón seleccionados.

Para programar este componente:


Como ya se indico, esta forma va a mandar el par
NAME=on asi que esto es sencillo en java jsp, solo
recordar usar un if por cada checkbox.

Muy sencillo el codigo de validación y no olvidar


subirlo a tu sitio.
ERRORES Y EXCEPCIONES

Estos problemas de errores y excepciones que en


java, se producen al tiempo de execución del
programa son los problemas normales de mal codigo
y que tambien se producen al tiempo de compilación
no al tiempo de ejecucion del programa, este tema se
refiere a eehhrorres y excepciones al tiempo de
ejecución del programa.

Java tiene un mecanismo muy completo para el


manejo de errores y excepciones, un ERROR ocurre
generalmente al tiempo de estarse ejecutandose un
programa, por ejemplo una division entre cero.

Una EXCEPCION es creada tambien al tiempo de


ejecución del programa cuando en alguna parte del
programa se produce alguna condición no
contemplada en el programa para el programa
ejemplo del checkbox, se crearon tres variables o
mejor dicho tres objetos strings y cuando de la forma
se manda solo una o dos de ellas cargadas con “on”
algunas de las variables u objetos strings queda
cargada con null(caso especial de strings) y al intentar
hacer la comparación java avisa de una excepcion
como se muestra en la siguiente pantalla ejemplo:
Esta excepción ocurrio al tiempo de ejecución del
programa y por el problema ya descrito y explicado.

La diferencia entre una EXCEPCION y un ERROR es


que una excepcion si es atrapada(catch) por el
programa y el programador permite recuperar el
programa y continuar con su ejecución, mientras que
un error aunque sea atrapado(catch) por el programa
y el programador el programa suspendera y terminara
su ejecución.

Si errores o excepciones no son atrapadas(catch) el


programa terminara su ejecución y mandara el aviso
al usuario, como se demuestra en la pantallita de
arriba.

Es por esta razón que es conveniente y necesario


atrapar (catch) errores o excepciones, asi el
programador podra incluir algun mecanismo de
corrección de errores o al menos de avisarle al
usuario en lugar de que sea el servidor quien le avise.

Este mecanismo de correccion de errores es la


clausula o instruccion
Try{
Instrucciones normales de java;
} catch(tipo de error o excepcion var de error){ inst de aviso o
correc de error puede incluir la var de error ;
};

Un try-catch puede encerrar una instruccion de java,


un grupo de instrucciones de java o todo el programa
completo.

En el prog5 jsp se uso un try-catch en cada if, se pudo


usar un try catch con todos los if's pero no se conoce
de antemano cuales variables strings se quedan en
null asi que fue mas conveniente revisar if por if.

En resumen cuando en algun programa al tiempo de


ejecución les aparezca un error o excepcion van a
ocupar usar try-catch para atraparlo o corregirlo, el
tipo de error o excepcion a cubrir se los va a estar
indicando el propio servidor de paginas como lo
muestra la pantallita ejemplo de excepción y
observar que la misma excepcion que aparecio
en dicha pantallita, se puso en la clausula catch.

Si aparecen mas errores o excepciones en un


programa es valido que un try lleve mas de un catch.

TAREAS PROGRAMACION JAVA JSP

1. Evaluar la función para x = 2,-5, 8


(usar un CheckBox por cada valor de x, y
programar cada el if de cada CheckBox con la
operación correspondiente y el despliegue del
resultado).
2. Construir un pagina html con los datos de un
automóvil y una segunda pagina muestra un
plan de financiamiento a dos años y una tercera
pagina muestra un plan de financiamiento a tres
años.
3. Construir un programa de seleccion de menús,
las opciones seran algunos de los programas ya
hechos.(se recomienda que en cada if
construyan la forma o pagina de manera
dinamica de la forma html que tienen en el
programa correspondiente)
UNIDAD 2: JAVA JSP INSTRUCCIONES DE
CONTROL DE PROGRAMA

TEMA 11: COMPONENTE RADIOBUTTON JAVA


JSP

Se utiliza para presentar al usuario un conjunto de


opciones mutuamente excluyentes entre si es
decir si el usuario selecciona un componente radio
todos los demás componentes radioButton en la
forma, se deseleccionan solos es por esta razón que
decimos que radiobotones son mutuamente
excluyentes.

Codigo prog6 jsp


<%! String sexo, carrera; %>

<%
// es mejor esta declaracion no hay que inicializar
if(request.getParameter("OK") != null)
{
sexo=request.getParameter("SEXO");
carrera=request.getParameter("CARRERA");
out.println("carrera="+carrera+"<br>");
out.println("sexo="+sexo+"<br>");
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog6.jsp METHOD=post>");
out.println("sexo:<br>");
out.println("<input type=radio name=SEXO value=masculino
checked>masculino<br>");
out.println("<input type=radio name=SEXO
value=femenino>femenino<br>");
out.println("<input type=radio name=SEXO value=neutro>neutro<br>");
out.println("carrera:<br>");
out.println("<input type=radio name=CARRERA value=sistemas
checked>sistemas<br>");
out.println("<input type=radio name=CARRERA
value=informatica>informatica<br>");
out.println("<input type=radio name=CARRERA
value=medicina>medicina<br>");
out.println("<INPUT TYPE=SUBMIT NAME=OK VALUE=evento1 ><BR>");
out.println("</FORM>");
%>
1. Observar que tenemos dos grupos de
radiobotones uno con NAME=SEXO y otro con
NAME=CARRERA sin embargo existen varios
radiobotones y cada radiobuton tiene su propio
valor o VALUE.
2. Recordar que en checkbox(tema anterior) la
propiedad NAME debe ser distinta para cada
uno de ellos, mientras que en radiobutton es la
misma para todo un grupo similar de ellos.
3. La razón principal para esta situación es que los
radiobotones son mutuamente excluyentes
entre si Y QUE SOLO UNO PUEDE ESTAR
ENCENDIDO A LA VEZ por eso los agrupamos
con la propiedad NAME para que html los pueda
considerar como dos o mas grupos diferentes.
4. Tambien tienen la propiedad checked para que
aparezcan seleccionados al cargar el programa
prog6 jsp
5. A diferencia del checkbox, html va a regresar
solamente el par NAME=VALUE de el
radiobuton que este seleccionado, esto lo
hace por cada grupo de radiobotones que
tengamos en la forma html

Recordar que html regresa un y solo un par


NAME=VALUE por cada grupo de radiobutton's que
existan en la forma.html, asi que es bastante sencillo
tomar el valor del radiobuton seleccionado y ya
cargado este valor realizar o programar el proceso
correspondiente.

TAREAS PROGRAMACION JAVA JSP

1. CONSTRUIR UN CUESTIONARIO DE 6
PREGUNTAS SOBRE LOS HÁBITOS DE ESTUDIO
DE UN ESTUDIANTE Y PASAR SUS RESPUESTAS
A UNA PAGINA NUEVA.
2. EVALUAR UNA FUNCION CUALESQUIERA, LA
PAGINA HTML TIENE NAME = X Y VALUE = 3,
-5, 10 .
UNIDAD 2: JAVA JSP INSTRUCCIONES DE
CONTROL DE PROGRAMA

TEMA 12: JAVA JSP CICLO FOR

Instrucciones para ciclos resuelven el problema de


repetir todo el programa o cierta parte del programa
mas de una vez.

Este ciclo es uno de los mas usados para repetir una


secuencia de instrucciones sobre todo cuando se
conoce la cantidad exacta de veces que se quiere que
se ejecute una instrucción simple o compuesta.

Su formato general es:

for (inicialización; condición; incremento)


{ instrucción(es); };

En su forma simple la inicialización es una instrucción


de asignación que carga una variable de control de
ciclo con un valor inicial.
La condición es una expresión relacional que evalúa la
variable de control de ciclo contra un valor final o de
parada que determina cuando debe acabar el ciclo.
El incremento define la manera en que la variable de
control de ciclo debe cambiar cada vez que el
computador repite un ciclo.
Se deben separar esos 3 argumentos con punto y
coma (;).

EJEMPLO
<%

// mira ma'a sin usar forma

for (int x=1; x<=10; x++)


{ out.println("x= "+x+"<br>"); };

%>
Casos Particulares del ciclo for:
1. 1.- El ciclo comienza en uno y se incrementa de
uno en uno este es el caso mas general.
2. Pero el valor inicial puede se diferente de uno,
ejemplo;
for(x=5;x⇐15;x=x+1){ etc.};
3. Incluso el valor inicial puede ser negativo,
ejemplo;
for (x = -3 ;x⇐ 8; x=x+1) { etc.};
4. Los incrementos también pueden ser diferentes
al de uno en uno, ej.;
for (x=1; x⇐ 20; x=x+3){ etc. };
5. Incluso pueden ser decrementos, solo que en
este caso, recordar;
a. el valor inicial de la variable debe ser
mayor que el valor final.
b. cambiar el sentido de la condición.
ejemplo;

for (x= 50 ; x >= 10; x= x-4 )


{ etcétera };

6. Solo para los casos de incrementos y


decrementos de una en una unidad substituir en
el for;
el x = x + 1 por x++
el x = x - 1 por x–

TAREAS PROGRAMACION JAVA JSP

1. CONSTRUIR UN PROGRAMA QUE DESPLIEGUE


LOS NÚMEROS DEL 20 AL 30.
2. DESPLEGAR LOS ENTEROS ENTRE 50 Y 30
ACOMPAÑADOS DE SU POTENCIA CUADRADA Y
RAÍZ CUBICA RESPECTIVA(revisar el tema de
operadores aritmeticos).
3. DESPLEGAR LOS MÚLTIPLOS DE 5, ENTRE 10 Y
50, ACOMPAÑADOS DE SU FACTORIAL Y
LOGARITMO RESPECTIVO(revisar el tema de
operadores aritmeticos tambien).
4. DESPLEGAR LA TABLA DE MULTIPLICAR QUE EL
USUARIO INDIQUE.
5. EVALUAR LA FUNCION <m> Y=5X^2 + 3X +
8</m> CUANDO X–> -3…10 (RANGO DE -3
HASTA 10)
UNIDAD 2: JAVA JSP CONTROL DE PROGRAMA

TEMA 13: JAVA JSP CICLO WHILE

En este ciclo el cuerpo de instrucciones se ejecuta


mientras una condición permanezca como verdadera
en el momento en que la condición se convierte en
falsa el ciclo termina.

Su formato general es :

cargar o inicializar variable de condición;


while(condición)
{
grupo cierto de instrucciones;
instrucción(es) para salir del ciclo;
};

Un error muy comun con el while, es poner un punto y


coma(;) despues de la (condición) ejemplo
while(condicion); ←-esto es y causa un error.

Prog8 jsp ejecutarlo directamente como se indico en


el tema anterior, excepto que si quieren pueden
construir una forma.html y activarlo desde ahí.

<%! int x; %>


<%
x=1;
while (x<=10)
{
out.println("x= "+x+"<br>");
x++;
};
%>

While puede llevar dos condiciones en este caso


inicializar 2 variables de condición y cuidar que
existan 2 de rompimiento o terminación de ciclo.
El grupo cierto de instrucciones puede ser una sola
instrucción o todo un grupo de instrucciones.
La condición puede ser simple o compuesta.
Los casos generales de for tambien se aplican a while.

A este ciclo también se le conoce también como ciclo


de condición de entrada o prueba por arriba porque
este ciclo evalúa primero la condición y
posteriormente ejecuta las instrucciones.

TAREAS PROGRAMACION JAVA JSP

1. DESPLEGAR ENTEROS ENTRE 50 Y 80


2. DESPLEGAR MULTIPLOS DE 4 ENTRE 60 Y 20
ACOMPAÑADOS DE SU LOGARITMOS DE BASE
10 Y BASE e RESPECTIVOS.
3. CONSTRUIR LA TABLA DE DIVIDIR QUE EL
USUARIO INDIQUE.
4. Evaluar una funcion cualesquiera para el rango
de valores de x de -3 a +5.
UNIDAD 2: JAVA JSP INSTRUCCIONES DE
CONTROL DE PROGRAMA

TEMA 14: CICLO DO WHILE JAVA JSP

Su diferencia básica con el ciclo while es que la


prueba de condición es hecha al finalizar el ciclo, es
decir las instrucciones se ejecutan cuando menos una
vez porque primero ejecuta las instrucciones y al final
evalúa la condición;

También se le conoce por esta razón como ciclo de


condición de salida.

Su formato general es :

cargar o inicializar variable de condición;


do {
grupo cierto de instrucción(es);
instrucción(es) de rompimiento de ciclo;
} while (condición);

prog9.jsp y ejecutarlo directamente( si quieren).

<%! int x; %>


<%
x=1;
do {
out.println("x= "+x+"<br>");
x++;
}while (x<=10);
%>

Otra diferencia básica con el ciclo while es que,


aunque la condición sea falsa desde un principio el
cuerpo de instrucciones se ejecutara por lo menos una
vez.

Tareas Java Jsp


1.- tres del for
2.- tres del while
UNIDAD 2: JAVA JSP INSTRUCCIONES DE
CONTROL DE PROGRAMA

TEMA 15: JAVA JSP CONCLUSIONES ACERCA DE


CICLOS

En java Jsp el problema de dado un problema


cualesquiera cual ciclo se debe usar se resuelve con:

1. Si se conoce la cantidad exacta de veces que se


quiere que se ejecute el ciclo o si el programa
de alguna manera puede calcularla usar for.
2. Si se desconoce la cantidad de veces a repetir el
ciclo o se quiere mayor control sobre la salida o
terminación del mismo entonces usar while.
3. Si se quiere que al menos una vez se ejecute el
ciclo entonces usar do while.
UNIDAD 3: JAVA JSP ARREGLOS

TEMA 1: JAVA JSP INTRODUCCION

Uno de los problemas mas comunes en los diversos


sistemas de información es el tratamiento o
procesamiento de una gran volumen de datos o de
información.

Las variables usadas hasta ahora reciben propiamente


el nombre de variables escalares, porque solo
permiten almacenar o procesar un dato a la vez.

Por ejemplo si se quiere almacenar nombre y edad de


15 personas con el método tradicional se ocuparan 30
variables y solo es nombre y edad de 15 personas,
agreguen mas datos y mas personas y ya es tiempo
de empezar a analizar otro tipo de variables.

Es decir, en problemas que exigen manejar mucha


información o datos a la vez, variables escalares no
son suficientes ya que su principal problema es que
solo permiten almacenar y procesar un dato a la vez.

En java Jsp se ocupan entonces variables que sean


capaces de almacenar y manipular conjuntos de datos
a la vez.

Variables de tipo arreglo si permiten almacenar y


procesar conjuntos de datos del mismo tipo a la vez.

Cada dato dentro del arreglo se le conoce como


elemento del arreglo y se simboliza y procesa
(captura, operación, despliegue ) usando el nombre
del arreglo respectivo y un subíndice indicando la
posición relativa del elemento con respecto a los
demás elementos del arreglo, solo recordar que en
JAVA JSP la primera posición, elemento o
renglón es el 0 (cero), ej.

NOMBRES

Juan –
>nombres(0)
Pedro →
nombres(1)
Rosa –>
nombres(2)
Jose –>
nombres(3)

Sin embargo sus problemas son similares a los de


variables normales es decir hay que declararlos,
capturarlos, hacer operaciones con ellos,
desplegarlos, compararlos, etc.
UNIDAD 3:JAVA JSP ARREGLOS

TEMA 2: JAVA ARREGLOS JSP

En programación tradicional siempre se manejan dos


tipos de arreglos los arreglos tipo listas, vectores o
unidimensionales y los arreglos tipo tablas, cuadros,
concentrados, matrices o bidimensionales en ambos
casos son variables que permiten almacenar un
conjunto de datos del mismo tipo a la vez, su
diferencia es en la cantidad de columnas que cada
uno de estos tipos contiene, como en los siguientes
ejemplos;

a) LISTAS

EDAD
1
8
3
4
2
2
1
5

B) TABLAS
CIA ACME
ING MENS VTAS
(MILES DE $)

…….ENE FEB MAR ABR MAY

SUC 1
20 30 40
A 0
SUC 5
60 70 80
B 0
SUC 9 10 11 12
D 0 0 0 0
En java Jsp se observa la diferencia principal entre un
arreglo tipo lista y un arreglo tipo tabla son las
cantidades de columnas que contienen.

NOTA IMPORTANTE.- LOS CONCEPTOS MANEJADOS


AQUI ESTAN ENFOCADOS A LOS SISTEMAS DE
INFORMACION CONTABLES FINANCIEROS
ADMINISTRATIVOS.

EN ALGEBRA MATRICIAL, SI SON IMPORTANTES LOS


CONCEPTOS DE VECTORES Y MATRICES, PERO LAS
OPERACIONES Y METODOS SON PRECISAMENTE LOS
DEL ALGEBRA MATRICIAL.
UNIDAD 3: JAVA JSP ARREGLOS

TEMA 3: JAVA JSP ARREGLOS TIPO LISTA

Un arreglo tipo lista se define como una variable que


permite almacenar un conjunto de datos del mismo
tipo organizados en una sola columna y uno o mas
renglones.

También reciben el nombre de vectores en álgebra o


arreglos unidimensionales en programación.

Los procesos normales con una lista o con sus


elementos, incluyen declarar toda la lista, capturar
sus elementos, desplegarlos, realizar operaciones con
ellos, desplegarlos, etc.

Para declarar una lista se usa el siguiente formato;

tipodato nomlista[]= new tipodato[cant elementos];


SORPRESA, no existen en java jsp arreglos o listas
tradicionales lo que existe es un objeto, por tanto se
debera usar el operador new antes de empezar a
procesar el arreglo, la ventajas son:

a) estas listas pueden usar el metodo length,(ejemplo


nomlista.length;) para conocer el tamaño de la
misma.
int edades[]= new int[12];
float sueldos[]=new float[5];
String municipios[]={“tijuana”,”tecate”,”ensenada”};

en este ulimo caso, observar que tambien pueden


crearse listas ya con tamaño fijo e inicializadas o
cargadas.
notas:
Recordar también que la primera posición o renglón
en una lista es la posición o renglón 0 (cero).
Prog10 jsp
<%! int edad[]=new int[5], ren=0; %>
<%
String temp1=request.getParameter("INSERTAR");
if(temp1==null)temp1=" ";
if(temp1.compareTo("insertar")==0){
if(ren < 5){
edad[ren]=Integer.parseInt(request.getParameter("EDAD"));
ren=ren+1;};
if(ren==5){out.print("ARREGLO LLENO");};
};
if(request.getParameter("SUMAR") != null )
{
// operaciones
for(ren=0; ren<=4; ren++) edad[ren]=edad[ren]* 12;
// DESPLEGANDO EN OBJETO LISTA DE HMTL CON BULLETS FOR NORMAL
out.println("EDADES EN MESES");
out.println("<UL>");
for(ren=0;ren<=4;ren++)
{out.println("<LI>"+edad[ren]); };
out.println("</UL>");
// DESPLEGANDO EN OBJETO LISTA DE HMTL FOR NORMAL
out.println("<OL>");
for(ren=0; ren<=4; ren++)
{ out.println("<LI>"+edad[ren]); };
out.println("</OL>");
// DESPLEGANDO USANDO OBJETO TABLE DE HMTL FOR NORMAL
out.println("<table border=2><tr><th>EDADES EN MESES</th></tr>");
for(ren=0; ren<=4; ren++)
{ out.println("<tr><td>"+edad[ren]+"</td></tr>"); };
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog10.jsp METHOD=post>");
out.println("DAME EDAD:"+ren+"<INPUT TYPE=TEXT NAME=EDAD>");
out.println("<INPUT TYPE=SUBMIT NAME=INSERTAR VALUE=insertar
><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=SUMAR VALUE=sumar><BR>");
out.println("</FORM>");
%>

Notas:

Se están usando dos SUBMIT en el programa, el


primero de ellos para insertar los elementos en la lista
y el segundo para convertirlos a meses.
Es por esta razon que primero se lee el TEXTBOX
“INSERTAR” y si trae “null” se cambia por un especio
en blanco, la razon es porque java no permite
comparar strings contra “null”. Se esta usando una
variable contador llamada “reng” para controlar
tantos los indices de la lista o vector asi como para
controlar la cantidad de elementos que se van a
insertar en el arreglo.

Para el caso de operaciones y comparaciones con


todos los elementos de la lista a la vez, se deberá
usar un ciclo for con una variable entera llamada
renglón misma que también se usa como índice de la
lista.
Recordar que todos los datos internos de la lista
estarán almacenados en la memoria ram del
computador, para despliegues se pueden usar varios
tipos de objetos y controles de html(LIST y TABLE
revisar tutorial de html).

Para este programa ejemplo se usaron los dos casos


mas comunes de listas en html (UL y OL) ver tutorial y
tambien se uso Table de html, por supuesto que en
sus programas normales deberan usar un solo caso de
estos tres de preferencia el TABlE.

Para inicializar una lista se debe usar el siguiente


formato:

tipodato nomlista[]={lista de valores};

ej:

int edad[4]={15,16,17,18};
float sueldo[3]={40.85, 65.30, 33.33};
String *ciudad[]={“tecate”, “tijuana”, “mexicali”,
“rosarito”, “ensenada”};

TAREAS PROGRAMACION JAVA JSP


1. Capturar y desplegar 5 precios de mercancias
cualesquiera.
2. Capturar 4 sueldos, desplegarlos aumentados
en un 25%.
3. Capturar los datos de 5 mercancias comprados
en una tienda, incluyendo nombre, precio y
cantidad en sus 3 listas respectivas( se vale
inicializar los arreglos de nombre y precio),
después calcular una cuarta lista con el gasto
total por cada producto desplegarlo todo e
incluir también el gran total.
UNIDAD 3: JAVA JSP ARREGLOS

TEMA 4: ARREGLOS BIDIMENSIONALES TIPO TABLA

Un arreglo tipo tabla se define como un conjunto


de datos del mismo tipo organizados en dos o mas
columnas y uno o mas renglones.

Para procesar ( recordar solo operaciones y


comparaciones) internamente todos los elementos
de la tabla se ocupan dos ciclos for(), uno externo
para controlar renglón y uno interno para controlar
columna.

Los elementos de la tabla se deberan simbolizar


con el nombre de la tabla y 2 subindices, el primer
subindice referencia al renglon y el siguiente
subindice referencia la columna los dos dentro del
mismo corchete.

La declaración de una tabla sera de acuerdo a los


siguientes formatos:

1) tipodato nomtabla[][]= new tipodato[reng][col];


ejemplo:

int calif[][]=new int[3][4];


double ingresos[][]= new double[3][4];

2) Clasenumerica objetotabla[][]= new


constructor[ren][col];
ejemplo;

Integer calif[][]= new Integer[2][3];


Double ingresos[][]=new Double[3][4];

Para capturar sus elementos, usaremos el


procedimiento desarrollado con listas.
Para efectuar otros procesos tales como
operaciones despliegue con todos los elementos de
la tabla se deberan usar 2 ciclos un for externo
para controlar renglon y un for interno para
controlar columna.

Prog11 jsp
<%! int edad[][]=new int[2][3], ren=0, col=0; %>
<%
String temp1=request.getParameter("INSERTAR");
if(temp1==null)temp1=" ";
if(temp1.compareTo("insertar")==0){
if(col < 3){
edad[ren][col]=Integer.parseInt(request.getParameter("EDAD"));
col=col+1;};
if(col == 3){col=0;ren=ren+1;};
if(ren==2) {out.print("TABLA LLENA");};
};
if(request.getParameter("MESES") != null )
{
// operaciones
for(ren=0; ren<=1; ren++)
for(col=0;col<=2;col++)
edad[ren][col]=edad[ren][col]*12;
// DESPLEGANDO USANDO OBJETO TABLE DE HMTL FOR NORMAL
out.println("<table border=2><tr><th>EDAD EN MESES</th></tr>");
for(ren=0; ren<=1; ren++)
{ out.println("<tr>");
for(col=0;col<=2;col++)
{ out.println("<td>"+edad[ren][col]+"</td>"); };
out.println("</tr>"); };
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog11.jsp METHOD=post>");
out.println("DAME EDAD:"+ren+","+col+"<INPUT TYPE=TEXT
NAME=EDAD>");
out.println("<INPUT TYPE=SUBMIT NAME=INSERTAR VALUE=insertar
><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=MESES VALUE=meses><BR>");
out.println("</FORM>");
%>

Notas:
Observar el formato de declaración y como se
controlan los indices de captura reng, col.

Notas:
El for reng tiene su propio grupo de instrucciones
encerrados entre {}. Mientras que el for col solo
tiene una instrucción que ejecutar el print(celda ),
el ultimo print(</termina renglon) es del ciclo for
reng).

El renglon de encabezado solo tiene una celda, por


eso los otros dos renglones con mas celdas se
ajustarón por su cuenta, para corregir esta
situación revisar su tutorial de html(TABLE).

Para inicializar tablas, se debera usar el siguiente


formato:
tipodato nomtabla[2][3]={1,2,3,4,5,6 };

TAREAS PROGRAMACION JAVA JSP

1. CONSTRUIR UN CUADRO QUE CONTENGA


LOS COSTOS FIJOS DE CUATRO PRODUCTOS
CUALESQUIERA, QUE SE PRODUCEN EN TRES
PLANTAS DIFERENTES DE UNA EMPRESA
MAQUILADORA.
2. CONSTRUIR UN CUADRO QUE CONTENGA
LOS INGRESOS MENSUALES POR VENTAS
DURANTE LOS TRES PRIMEROS MESES DEL
AÑO DE CUATRO SUCURSALES DE UNA
CADENA DE AUTO REFACCIONES, AGREGAR
AL FINAL UNA LISTA QUE MUESTRE LOS
INGRESOS MENSUALES TOTALES POR MESES
Y UNA SEGUNDA LISTA QUE MUESTRE LOS
INGRESOS MENSUALES TOTALES POR
SUCURSAL(2 programas uno capturado y otro
inicializado).
3. CONSTRUIR UN CUADRO QUE CONTENGA LAS
COMISIONES GANADAS POR TRES
VENDEDORES, DE LOS 5 TIPOS DE LINEA
BLANCA DE CONOCIDA MUEBLERIA, ADEMAS
LISTAS DE COMISIONES TOTALES Y
PROMEDIOS GANADAS POR LOS
VENDEDORES, ASI COMO LISTAS DE
COMISIONES TOTALES Y PROMEDIOS POR
TIPO DE LINEA BLANCA(inicializado).

ANALIZAR ESTE CODIGO:

' PARA TOTALES Y PROMEDIOS POR RENGLON

FOR R = 0 TO 3

FOR C = 0 TO 2

TOTRENG(R) = TOTRENG(R) + TABLA(R,C)

NEXT C

PROMRENG(R) = TOTRENG(R)/3

NEXT R

'PARA TOTALES Y PROMEDIOS POR COLUMNA

FOR C = 0 TO 2

FOR R = 0 TO 3

TOTCOL(C)=TOTCOL(C) + TABLA(R,C)

NEXT R

PROMCOL(C) = TOTCOL(C) / 4

NEXT C

SUGERENCIA: CONSTRUIR PRIMERO LOS CUADROS


EN PAPEL.
UNIDAD 4: JAVA PROGRAMACION
ORIENTADA OBJETOS

TEMA 1: DECLARACIONES o
PROCEDIMIENTOS JAVA JSP

Un camino para dividir un gran programa en partes


mas pequeñas es el uso de declaraciones.

Una declaración es un grupo de instrucciones,


variables, constantes, etc, que estan diseñados con
un próposito particular y tiene su nombre propio.

Es decir una declaracion es un modulo de un


programa que realiza una tarea especifica y que no
puede regresar valores al programa principal u a otro
procedimiento que lo este invocando.

Despue de escribir una declaración se usara ese


nombre propio como una sola instrucción o llamada.

Las declaraciones se construyen antes del cuerpo


principal del programa, es decir en la parte
declarativa.

Su formato es:

<%! void Nom_decl(){instrucciones;} %>

Un programa puede tener tantos procedimientos


como se deseen, para hacer una llamada o invocación
a el procedimiento durante la ejecución de un
programa se debera escribir el nombre dela misma y
los parentesis en blanco.
Prog12.jsp
<%!
int base=0,altura=0; double area=0;
void proc1(){
area= base * altura / 2.0 ;};
%>
<%
// no usar objetos request y out fuera de scriptlet
// porque no estan creados por java todavia
if(request.getParameter("OK") != null)
{
base = Integer.parseInt(request.getParameter("BASE"));
altura = Integer.parseInt(request.getParameter("ALTURA"));
// llamando o invocando procedimiento uno
proc1();
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog12.jsp METHOD=post>");
out.println("DAME LA BASE:<INPUT TYPE=TEXT NAME=BASE
value="+base+"><BR>");
out.println("DAME LA ALTURA:<INPUT TYPE=TEXT NAME=ALTURA
value="+altura+"><BR>");
out.println("AREA:<INPUT TYPE=TEXT NAME=AREA value="+area+"><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=OK VALUE=evento1 ><BR>");
out.println("</FORM>");
%>

Recordar que no se deben usar los objetos REQUEST y


OUT antes de la parte principal del programa (esto
porque java convierte el jsp a un servlet y la creación
de REQUEST y OUT lo hace despues, generando
errores de objetos request y out desconocidos).

TAREAS PROGRAMACION JAVA JSP


Construir un programa java jsp que contenga puras
llamadas a procedimientos dentro de un menu.

Menu.

a) Pesos a dolares.
b) Area de un triangulo.
c) Emitir Boleta.
d) Fin de menu.
UNIDAD 4: JAVA JSP PROGRAMACION
ORIENTADA OBJETOS

TEMA 2: PARAMETROS JAVA JSP

Un parametro es una variable que puede pasar su


valor a un procedimiento desde el principal o desde
otro procedimiento.
Existen ocasiones en que es necesario mandar al
procedimiento ciertos valores para que los use en
algún proceso.
Estos valores que se pasan del cuerpo principal del
programa al procedimiento se llaman parametros.

Entonces una declaracion completa es:

<%!
void NomProc(lista de parametros)
{ cuerpo de instrucciones; };
%>

prog13.jsp

<%!
int base=0; double altura=0; double area=0;
void proc1(int a, double b){
area= a * b / 2.0 ;};
%>
<%
// no usar objetos request y out fuera de scriptlet
// porque no estan creados por java todavia
if(request.getParameter("OK") != null)
{
base = 10;
altura = 3.1416;
// llamando o invocando procedimiento uno y pasando parametros
// recordar que se pueden mandar datos o variables
proc1(base,3.1416);
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog13.jsp METHOD=post>");
out.println("DAME LA BASE:<INPUT TYPE=TEXT NAME=BASE
value="+base+"><BR>");
out.println("DAME LA ALTURA:<INPUT TYPE=TEXT NAME=ALTURA
value="+altura+"><BR>");
out.println("AREA:<INPUT TYPE=TEXT NAME=AREA value="+area+"><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=OK VALUE=evento1 ><BR>");
out.println("</FORM>");
%>
REGLAS PARA EL USO DE PARAMETROS

1. Cuando se usan variables como parametros, la


variable que se manda debe ser declarada
dentro del principal o del procedimiento de
donde se esta enviando.
2. La variable que se manda tiene un nombre, la
que se recibe puede tener otro nombre.
3. La cantidad de variables que se envian deben
ser igual en cantidad, orden y tipo a las
variables que reciben.
4. La variable que se recibe tiene un ambito local
dentro del procedimiento, es decir solo la puede
usar ese procedimiento.

TAREAS PROGRAMACION JAVA JSP

1. Capturar el nombre y las 3 calificaciones en un


procedimiento, calcular promedio en un
segundo, imprimir nombre y promedio en
principal
2. Construir una tabla de multiplicar que el usuario
indique captura y control de ciclo en el principal,
calculo en un procedimiento.
3. Construir un procedimiento que reciba un
numero entero y que mande llamar a un
segundo procedimiento pasando el letrero “PAR
O IMPAR”.
UNIDAD 4: JAVA JSP PROGRAMACION
ORIENTADA OBJETOS POO

TEMA 3: JAVA JSP VARIABLES LOCALES Y


GLOBALES

En java Jsp el lugar donde sea declarada una variable


afectara el uso que el programa quiera hacer de esa
variable.

Las reglas basicas que determinan como una variable


puede ser usada depende de 3 lugares donde se
puede declarar una variable.
En primer lugar es dentro de cualquier función o
procedimiento incluyendo main, a estas se les llama
variables locales y solo pueden ser usadas por
instrucciones que esten dentro de esa función o
procedimiento.

En segundo lugar es como parametro de una función


o procedimiento, donde despues de haber recibido el
valor, podra actuar como variable local en esa función
o procedimieto.

En escencia una variable local solo es conocida por el


código de esa función o procedimieto y es
desconocida por otras funciones o procedimientos.

En tercer lugar es fuera de todas las funciones pero


dento de la parte declarativa <%! … %>, a este tipo
de variables se les llama variables globales y podran
ser usadas por cualquier función o procedimiento del
programa.
UNIDAD 4: JAVA JSP PROGRAMACION
ORIENTADA OBJETOS POO

TEMA 4: JAVA JSP FUNCIONES

En jaba jsp una funcion es un modulo de un programa


separado del cuerpo principal, que realiza una tarea
especifica y que puede regresar un valor a la parte
principal del programa u otra funcion o procedimiento
que la invoque.

La forma general de una funcion es:

<%! tipodatoregresa Nom_fun(parametros)


{ cuerpo de instrucciones;
intruccion return;
}; %>

El tipo especifica el tipo de valor que la funcion


regresara utlizando la instrucción return.
Si no se especifica un tipo se asume de default que el
tipo regresado es int.
La lista de parametros formales es una lista de
variables separadas por comas (,) que almacenaran
los valores que reciba la funcion, estas variables
actuan como locales dentro del cuerpo de la funcion.

Aunque no se ocupen parametros los paréntesis son


requeridos.
La declaracion de parametros es la especificacion de
cada tipo de parametro recibido.

INSTRUCCION RETURN

Dentro del cuerpo de la función deber haber una


instrucción return cuando menos, para regresar el
valor, esta instrucción permite regresar datos.
Prog14 jsp

<%!
double res=0;
double funcion1(int a, double b){
return a * b; };
%>
<%
// no usar objetos request y out fuera de scriptlet
// porque no estan creados por java todavia
if(request.getParameter("OK") != null)
{
// llamando o invocando funcion uno y pasando parametros
// recordar que se pueden mandar datos o variables
double alfa=funcion1(2,2.5) + 3 + funcion1(2, 3.3);
res= alfa;
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog14.jsp METHOD=post>");
out.println("RESULTADO:<INPUT TYPE=TEXT NAME=RESULTADO
value="+res+"><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=OK VALUE=evento1 ><BR>");
out.println("</FORM>");
%>

Es permitido poner mas de un return en el cuerpo de


instrucciones sobre todo en condiciones, pero solo un
return se ejecutara.

Ejemplo;

if (suma >= 10)


{ return 10; }
else
{ return 20; }

EXISTEN 3 CLASES USUALES DE FUNCIONES.

Las primeras son de tipo computacional que son


diseñadas para realizar operaciones con los
argumentos y regresan un valor basado en el
resultado de esa operación.

Las segundas funciones son aquellas que manipulan


información y regresan un valor que indican la
terminacion o la falla de esa manipulacion.
Las terceras son aquellas que no regresan ningun
valor, es decir son estrictamenta procedurales.

TAREAS PROGRAMACION JAVA JSP

1. Imprimir nombre y promedio de un alumno,


capturar 3 calificaciones y nombre en un
procedimiento, calcular promedio en una
funcion y desplegar
2. Crear una tabla de multiplicar, captura y control
de ciclo en el principal, operaciones en una
funcion, despliegue en el principal.
3. Construir una funcion que nos regrese el triple
de cualquier numero.
4. Construir un programa que emita una factura si
el articulo es importado, una funcion lo graba
con el 20% de iva si es nacional, la misma
funcion lo graba con el 15% de iva si no lo es.
5. Construir una funcion que nos regrese la letra
“I” o “P” si el numero que recibio fue impar o
par respectivamente.
UNIDAD 4: JAVA JSP PROCEDIMIENTOS Y
FUNCIONES

TEMA 5: JAVA JSP ARREGLOS COMO


PARAMETROS

Para pasar un arreglo completo como parametro a un


procedimiento a una función solo se manda el nombre
del arreglo sin corchetes e indices, en el
procedimiento o función que recibe solo se declara un
arreglo del mismo tipo y se puede usar el mismo o
diferente nombre del arreglo sin corchetes e indices.

Sin embargo es conveniente aclarar, que a diferencia


de variables escalares normales, java no genera una
nueva variable en memoria ni tampoco copia los
datos al arreglo que recibe, en su lugar java sigue
usando los datos que estan en el arreglo original, es
por esta razón que cambios que se le hagan a los
datos del arreglo que recibe realmente se esta
haciendo al arreglo original como lo muestra el
siguiente ejemplo:

Prog15 jsp

<%!

//recordar que r es global

int r;

void decl1(int alfa[])

for(r=0;r<=2;r++)

alfa[r]=alfa[r]+10;

};
%>

<%

// no usar objetos request y out fuera de scriptlet

// porque no estan creados por java todavia

if(request.getParameter("OK") != null)

int eta[]={3,4,5};

decl1(eta);

for(r=0;r<=2;r++)

out.println("eta="+eta[r]+"<br>");

};

// construyendo forma dinamica

out.println("<FORM ACTION=prog15.jsp METHOD=post>");

out.println("<INPUT TYPE=SUBMIT NAME=OK VALUE=evento1 ><BR>");

out.println("</FORM>");

%>

Es de recordar que los cambios que le hagan al


arreglo dentro de la función se reflejaran en el arreglo
original, es por esto que si se quiere modificar un
arreglo en una función no hay necesidad de regresar
ningun valor.

TAREAS PROGRAMACION JAVA JSP

1. Inicializar 10 edades en el principal mandar la


lista a un procedimiento que la convierte a
meses, desplegar en principal.
2. Capturar un arreglo de 7 ciudades en principal,
sortear u ordenar o alfabetizar (sorteo burbuja)
en un procedimiento y desplegar en principal
tanto la lista original como la lista ordenada.
UNIDAD 5: JAVA JSP REGISTROS Y
ARCHIVOS SECUENCIALES

TEMA 1: INTRODUCCION JAVA JSP

Antes de empezar a programar en serio se estudian


en esta unidad dos problemas.

Problema A:
Variables que puedan almacenar un conjunto de
valores y no necesariamente del mismo tipo.

Problema B:
Resolver el problema de almacenar en forma
permanente los datos que se generan dentro de un
programa ya sea por captura, proceso, etc;

El problema (A) se resuelve usando el concepto de


estructuras o registros el problema (B) se resuelve
usando el concepto de archivos.
UNIDAD 5: JAVA JSP REGISTROS Y
ARCHIVOS SECUENCIALES

TEMA 2: REGISTROS JAVA JSP

Ya se ha visto como variables simples pueden


almacenar una sola pieza de información y como
arreglos pueden almacenar un conjunto de ellas del
mismo tipo y al mismo tiempo, estos dos mecanismos
pueden manejar una gran variedad de situaciones,
pero a menudo se necesita trabajar sobre datos de
diversos tipos, en este caso ni variables escalares ni
arreglos son adecuados.

Para resolver estos problemas los lenguajes de


programación proveen de un tipo de dato especial
llamado registros.

Un registro es una variable especial que tiene la


capacidad de almacenar datos de diferentes tipos.

Sin embargo JAVA usa en su lugar una CLASE.

Este metodo tiene la ventaja de que ademas de incluir


los campos tradicionales de un registro (en forma de
atributos) tambien puede incorporar una serie de
metodos que permiten procesar de manera mas facil
los campos o atributos de la clase.

Ejemplo;
class alumno{
void alumno(){};
static String nombre= new String();
static int edad;
void inicializar(){
alumno.nombre="pepe el toro";
alumno.edad=18; };
void desplegar(){
System.out.println(alumno.nombre);
System.out.println(alumno.edad);
};
} // termina la clase
Programa 16.jsp;
<%!
static class alumno{
static String nombre=" ";
static int edad=0;
void alumno(){};
static void inicializar(){
alumno.nombre="pepe el toro";
alumno.edad=18; };
};
%>
<%
if(request.getParameter("OK") != null)
{
alumno.inicializar();
out.println(alumno.nombre);
out.println(alumno.edad);
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog16.jsp METHOD=post>");
out.println("<INPUT TYPE=SUBMIT NAME=OK VALUE=evento1 ><BR>");
out.println("</FORM>");
%>

Recordar no usar objetos OUT, Request en la parte


declarativa de el programa, la razón ya se explico
anteriormente.

Para indicar a “java” durante cualquier proceso que la


variable a utilizar es un campo de una clase se debera
utilizar el siguiente formato.

nomclase.nombredelcampo

TAREAS PROGRAMACION JAVA JSP


1. Crear una clase de alumno que incluya un
metodo que capture 3 califaciones.
2. Declarar una clase o registro de empleado,
capturarlo y desplegarlo un numero
indeterminado de veces.
3. Capturar una clase o registro de empleados,
aumentar sueldo en 25% y desplegar.
4. Capturar una clase o registro de cuentas por
cobrar, mandar imprimir un aviso si el saldo
esta atrazado.

UNIDAD 5: JAVA JSP REGISTROS Y


ARCHIVOS SECUENCIALES

TEMA 3: JAVA JSP ARCHIVOS


(INTRODUCCION)

Si bien es cierto que ya se pueden manejar gran


cantidad de datos del mismo y diferente tipo al mismo
tiempo, el problema es que al terminar de ejecutarse
el programa los datos se pierden.

De esta situación nace el concepto de archivos que


son medios que facilita el lenguaje para almacenar los
datos en forma permanente normalmente en los
dispositivos de almacenamiento standar.

En general es necesario entender algunos conceptos


elementales de sistemas de archivos tradicionales.

Como nota a tomar en cuenta los datos que se van


almacenando en un archivo de disco se almacenan en
renglones consecutivos y cada renglon en disco se
conoce como registro del archivo favor de no
confundir el concepto de registro de archivo y registro
o estructura como variable ya analizada son dos cosas
totalmente diferentes aunque se llamen igual.

Operaciones basicas con archivos:


1. ESCRIBIR O GRABAR: Es la operacion mas
elemental con un archivo consiste en tomar un
o unos datos en variables de cualquier tipo
(escalar, mezcla de datos, arreglo, structuras) y
almacenarlas en un archivo de datos en disco.
2. LEER: Operación consistente en sacar los datos
del archivo en disco y mandarlo o cargar la
variable respectiva

Organización de archivos:

En general existen dos tipos de archivos:


1. Archivos Secuenciales.- En este caso los datos
se almacenan en forma consecutiva y no es
posible leer (recuerdan que significa esta
operación) ningun registro (recuerdan la nota de
arriba) directmente es decir para leer el registro
n, se debera recorrer o accesar los n-1 registros
anteriores.
2. Archivos Directos o Random.- Para este caso si
se puede acceder o leer un renglon n
cualquiera.

Tipo de archivos:

A) En general, existen tantos tipos de archivos


como tipos de datos existen es decir existen
archivos de bytes, de chars, de ints, de floats,
etc.

ATENCION: Ya que se decide utilizar algun archivo


especifico de datos (caracteres, strings, formateados,
registros o arreglos) solo utilizar las funciones de
escritura y lectura de ese tipo de archivo por ningun
motivo mezcle funciones de lectura y escritura de otro
tipo de archivos.

Almacenamiento en arhivos:
1. Modo Texto: en este caso los datos son
almacenados usando codigp ascii y por tanto
son plenamente visibles usando cualquier
editor.
2. Modo Binario: en este caso los datos son
almacenados en notación hexadecimal y por
tanto se ocupa un editor binario para
reconocerlos sin embargo un archivo binario es
mas compacto que un archivo texto.
UNIDAD 5: JAVA JSP REGISTROS Y
ARCHIVOS SECUENCIALES

TEMA 4: JAVA JSP ARCHIVOS SECUENCIALES


PLANOS

Existen ademas muchas otras operaciones asociadas


a archivos las mas elementales son:

1. Creación de Archivo.- En este proceso se


pretende solamente crear un archivo nuevo
en disco, con su nombre, tipo y especialidad
de almacenamiento de datos apropiado.
2. Apertura de Archivos.- En este caso se
pretende abrir un archivo ya existente en
disco para procesarlo, ya sea cargar o grabar
datos en sus registros, o leer algun registro
en especial para mandarlo a una variable de
cualquier tipo.
No confundir creación con apertura creación
es un proceso que solo se ejecuta una sola
vez en la vida de un archivo, mientras que
apertura siempre se esta realizando por los
programas especializados en algun proceso.
3. Cierre de archivos: Es la operación mas
importante en cualquier programa que
maneje archivos o se cierra el archivo como
ultima instrucción del pograma o se vera el
anuncio ABORT,RETRY,FAIL.
98, /s, scandisk
4. Altas en archivo.- En este proceso se carga
una clase en memoria con sus datos
pertinentes y se graba la clase en el archivo
en disco.
5. Lectura de archivo.- En este proceso, se abre
el archivo y se manda el registro de disco, a
una clase en memoria para su
procesamiento.
6. Consulta de archivos: En este proceso se
pretende desplegar todos los registros del
archivo en disco a la pantalla ya sea consola
o mejor aún, a una pagina html
7. Busqueda en archivos: Una de las
operaciones mas comunes, consiste en que
el usuario pide toda la información de algun
renglon en disco, porporcionando la
información de algun campo, generalmente
el campo clave de la clase.
8. Filtros.- En este proceso el usuario esta
interesado en algun conjunto de renglones
con caracteristicas comunes (condición), por
ejemplo todos los alumnos de “sistemas”, o
todos los empleados que ganen mas de
$500.00 pesos, o todos los clientes que sean
de “tijuana”, etc
9. Modificaciones de registros o archivos:
Problema muy comun, donde los datos
originales ya grabados se tienen que cambiar
o actualizar, por ejemplo el nombre no era
“juan” es “juana”, o la calificación no es 100
es 20, etc.
10. Bajas de registros: tambien muy comun
este proceso por ejemplo el alumno ya
egreso, el cliente huyo, etc.
UNIDAD 5: JAVA JSP REGISTROS Y
ARCHIVOS SECUENCIALES

TEMA 5: GRABACION ARCHIVO


SECUENCIAL JAVA JSP

Grabación y lectura son los dos procesos mas


comunes con archivos disco en cualquier lenguaje de
programación.

Codigo de grabación:

Prog17.jsp
<%@ page import="java.io.*" %>
<%
// declarando
int clave=0;String nombre=""; float estatura=0;
// creando un objeto de tipo archivo
DataOutputStream archivo = null;
if(request.getParameter("INSERTAR") != null)
{
// capturando datos
clave=Integer.parseInt(request.getParameter("CLAVE"));
nombre=request.getParameter("NOMBRE");
estatura=Float.parseFloat(request.getParameter("ESTATURA"));
try {
// creando archivo en append
archivo = new DataOutputStream(new
FileOutputStream("c:\\archivo1.dat",true));
// grabando al archivo
archivo.writeInt(clave);
archivo.writeUTF(nombre);
archivo.writeFloat(estatura);
out.println(clave+": registro grabado");
}
catch(FileNotFoundException fnfe) {}
catch (IOException ioe) {};
// cerrando el archivo
archivo.close();
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog17.jsp METHOD=post>");
out.println("CLAVE :<INPUT TYPE=TEXT NAME=CLAVE><BR>");
out.println("NOMBRE :<INPUT TYPE=TEXT NAME=NOMBRE><BR>");
out.println("ESTATURA :<INPUT TYPE=TEXT NAME=ESTATURA><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=INSERTAR VALUE=GRABAR ><BR>");
out.println("</FORM>");
%>
Se usa una clase llamada FileOutputStream,
especializada en archivos con muchos metodos y
constructores para crear, manipular y procesar
archivos el constructor usado solo lleva dos
parametros, el primero todo la ruta o path a donde
quedara el archivo(cuidado con no poner la doble
diagonal \\) y el segundo parametro es la palabra
“true”, esto es para que el archivo se abra en modo
llamado “APPEND”, es decir que cada nuevo registro
se vaya escribiendo al final del archivo, si no se pone
este parametro(true), un nuevo registro se
sobreescribiria sobre el registro anterior.

Sin embargo en el programa no se uso solo


FILEOUTPUSTREAM ( solo para crear el archivo),
tambien se usa DATAOUTPUTSTREAM, esta segunda
clase es derivada de la anterior y comparte muchos
de sus metodos, la diferencia es que fileoutputstream
esta especializada en grabar y leer bytes, mientras
que dataoutputstream esta especializada en grabar y
leer datos formateados, observar que los metodos que
uso el objeto archivo para grabar o almacenar datos
se especializan en algun tipo de dato en especial, sus
otros metodos son:

Method Summary
“void
flush”()” Flushes this data output stream.

size”()” Returns the current value of the counter “written”,
“int” the number of bytes written to this data output stream so
far.
write”(byte[] b, int off, int len)“
“void
Writes “len” bytes from the specified byte array starting at

offset “off” to the underlying output stream.
“void write”(int b)” Writes the specified byte (the low eight bits of
” the argument “b”) to the underlying output stream.
“void writeBoolean”(boolean v)” Writes a “boolean” to the
” underlying output stream as a 1-byte value.
“void writeByte”(int v)“
Writes out a “byte” to the underlying output stream as a 1-

byte value.
“void WriteBytes (String s) Writes out the string to the underlying
” output stream as a sequence of bytes.
“void writeChar”(int v)” Writes a “char” to the underlying output
” stream as a 2-byte value, high byte first.
“void WriteChars (String s) writes a string to the underlying
” output stream as a sequence of characters.
writeDouble”(double v)“
Converts the double argument to a “long” using the
“void
“doubleToLongBits” method in class “Double”, and then

writes that “long” value to the underlying output stream as
an 8-byte quantity, high byte first.
writeFloat”(float v)” Converts the float argument to an “int”
“void using the “floatToIntBits” method in class “Float”, and then
” writes that “int” value to the underlying output stream as a
4-byte quantity, high byte first.
writeInt”(int v)“
“void
Writes an “int” to the underlying output stream as four

bytes, high byte first.
writeLong”(long v)“
“void
Writes a “long” to the underlying output stream as eight

bytes, high byte first.
writeShort”(int v)“
“void
Writes a “short” to the underlying output stream as two

bytes, high byte first.
writeUTF (String str) writes a string to the underlying output
“void
stream using UTF-8 encoding in a machine-independent

manner.

Observar que la grabación lleva un try-catch


filenotfound y ioexception, que son obligatorios o no
compila el programa.

No olvidar cerrar el archivo, con la instruccion


archivo.close

TAREAS PROGRAMACION JAVA JSP

1.- crear y cargar un archivo2.dat que contenga


registros de empleados.
2.- crear y cargar un archivo3.dat que contenga
registros de productos
UNIDAD 5: JAVA JSP REGISTROS Y
ARCHIVOS SECUENCIALES

TEMA 6: LECTURA ARCHIVO SECUENCIAL


JAVA JSP

El proceso de lectura de los registros de un archivo


secuencial es realmente sencillo, como lo muestra el
siguiente codigo ejemplo;

Prog18.jsp:

<%@ page import="java.io.*" %>


<%
// declarando
int clave=0;String nombre=""; float estatura=0;
// creando un objeto de tipo archivo
DataInputStream archivo = null;
if(request.getParameter("LECTURA") != null)
{
// construyendo una tabla html
out.println("<HTML><TABLE Border=10 CellPadding=5><TR>");
out.println("<th bgcolor=Green>CLAVE</th><th
bgcolor=White>NOMBRE</th><th bgcolor=Red>ESTATURA</th></TR>");
try {
// abriendo archivo
archivo = new DataInputStream(new
FileInputStream("c:\\archivo1.dat"));
// ciclo de lectura del archivo
while(true){
out.println("<TR>");
clave=archivo.readInt();
out.println("<TD>"+clave+"</TD>");
nombre=archivo.readUTF();
out.println("<TD>"+nombre+"</TD>");
estatura=archivo.readFloat();
out.println("<TD>"+estatura+"</TD>");
out.println("</TR>");
} }
catch(FileNotFoundException fnfe) {}
catch (IOException ioe) {};
archivo.close();
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog18.jsp METHOD=post>");
out.println("<INPUT TYPE=SUBMIT NAME=LECTURA VALUE=leer ><BR>");
out.println("</FORM>");
%>
Notas:
Observar en codigo que ahora se usan
FILEINPUTSTREAM Y DATAINPUTSTREAM como
clases.

En fileinputstream solo se uso el parametro de abrir


archivo(no el true de append) como ya se menciono
estas clases se especializan en archivos secuenciales.

El ciclo de lectura se realiza con un while(true) los


metodos de DATAINPUTSTREAM SON:

Method Summary
read”(byte[] b)“
“int” See the general contract of the “read” method of
“DataInput”.
read”(byte[] b, int off, int len)“
“int” See the general contract of the “read” method of
“DataInput”.
readBoolean”()“
“boolea
See the general contract of the “readBoolean” method of
n”
“DataInput”.
readByte”()“
“byte” See the general contract of the “readByte” method of
“DataInput”.
readChar”()“
“char” See the general contract of the “readChar” method of
“DataInput”.
readDouble”()“
“double
See the general contract of the “readDouble” method of

“DataInput”.
readFloat”()“
“float” See the general contract of the “readFloat” method of
“DataInput”.
readFully”(byte[] b)“
“void” See the general contract of the “readFully” method of
“DataInput”.
readFully”(byte[] b, int off, int len)“
“void” See the general contract of the “readFully” method of
“DataInput”.
“int” readInt”()“
See the general contract of the “readInt” method of
“DataInput”.
String

with: BufferedReader d
= new BufferedReader(new InputStreamReader(in)); |
| “long” | readLong”()“
See the general contract of the “readLong” method of
“DataInput”. |
readShort”()“
“short” See the general contract of the “readShort”
method of “DataInput”.
readUnsignedByte”()“
“int” See the general contract of the
“readUnsignedByte” method of “DataInput”.
readUnsignedShort”()“
“int” See the general contract of the
“readUnsignedShort” method of “DataInput”.
readUTF”()“
String See the general contract of the “readUTF”
method of “DataInput”.
readUTF”(“DataInput “in)“
Reads from the stream “in” a representation of
“static”
a Unicode character string encoded in Java
String
modified UTF-8 format; this string of
characters is then returned as a “String”.
skipBytes”(int n)“
“int” See the general contract of the “skipBytes”
method of “DataInput”.

TAREAS PROGRAMACION JAVA JSP

1.- Leer y desplegar los archivos creados en el tema


anterior.
UNIDAD 5: JAVA JSP REGISTROS Y
ARCHIVOS SECUENCIALES

TEMA 7: BUSQUEDA ARCHIVOS


SECUENCIALES JAVA JSP

Recordar que existen una serie de procesos basicos


con archivos el famoso y antiguo ABC (altas, bajas,
consultas y modificaciones) con ellos.
Actualmente estos procesos o similares a ellos se
llaman insertar, eliminar, editar, etc, en las modernas
bases de datos pero esto lo analizaremos mas
adelante.

El primer proceso para un archivo secuencial es


agregar una cantidad indefinida de registros al
archivo este proceso se resuelve o ejecutando una
cantidad indeterminada de veces el programa de
grabación ya hecho o incluir un ciclo while en el
mismo programa.

Un segundo proceso tambien comun, llamado


consulta es desplegar todos los registros del archivo
a la vez problema tambien resuelto en el programa de
lectura.

El tercer Proceso que “resolvemos” en este tema es la


busqueda de un registro determinado, en este
proceso el usuario del programa quiere que se
despliegue un y solo un registro de información,
proporcionando un dato de busqueda, generalmente
la clave del registro.

La solucion es sencilla, solo tenemos que abrir el


archivo para lectura, hacer un ciclo while(true)
condicionar y solo desplegar el registro cuando se
cumpla la condición.

Codigo prog19.Java:
<%@ page import="java.io.*" %>
<%
// declarando
int clave=0;int claveb=0;String nombre=""; float estatura=0;
// creando un objeto de tipo archivo
DataInputStream archivo = null;
if(request.getParameter("BUSCAR") != null)
{
// construyendo tabla html
out.println("<HTML><TABLE Border=10 CellPadding=5><TR>");
out.println("<th bgcolor=Green>CLAVE</th><th
bgcolor=White>NOMBRE</th><th bgcolor=Red>ESTATURA</th></TR>");
// capturando clave a buscar
claveb=Integer.parseInt(request.getParameter("CLAVEB"));
try {
// abriendo archivo
archivo = new DataInputStream(new
FileInputStream("c:\\archivo1.dat"));
while(true){
clave=archivo.readInt();
nombre=archivo.readUTF();
estatura=archivo.readFloat();
if (claveb==clave){
out.println("<TR>");
out.println("<TD>"+clave+"</TD>");
out.println("<TD>"+nombre+"</TD>");
out.println("<TD>"+estatura+"</TD>");
out.println("</TR>");
} } }
catch(FileNotFoundException fnfe) {}
catch (IOException ioe) {};
archivo.close();
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog19.jsp METHOD=post>");
out.println("CLAVE BUSCAR:<INPUT TYPE=TEXT NAME=CLAVEB><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=BUSCAR VALUE=buscar><BR>");
out.println("</FORM>");
%>

TAREAS PROGRAMACION JAVA JSP

1.- Hacer programas de busquedas para los archivos


hechos.
UNIDAD 5: JAVA JSP REGISTROS Y
ARCHIVOS SECUENCIALES

TEMA 8: JAVA JSP FILTROS o CONDICIONES

Como su nombre lo indica en este proceso se


pretende desplegar todo un conjunto de renglones
que cumplan con la condición por ejemplo se pide
desplegar todos los alumnos de “sistemas” o todos los
empleados que sean de “sinaloa”, etc.

Filtros se usan para obtener información acerca de un


subconjunto de renglones de el archivo.

Codigo prog20 jsp


<%@ page import="java.io.*" %>
<%
// declarando
int clave=0;float est=0;String nombre=""; float estatura=0;
// creando un objeto de tipo archivo
DataInputStream archivo = null;
if(request.getParameter("FILTRAR") != null)
{
// construyendo tabla html
out.println("<HTML><TABLE Border=10 CellPadding=5><TR>");
out.println("<th bgcolor=Green>CLAVE</th><th
bgcolor=White>NOMBRE</th><th bgcolor=Red>ESTATURA</th></TR>");
// capturando filtro
est=Float.parseFloat(request.getParameter("ESTATURA"));
try {
// abriendo archivo
archivo = new DataInputStream(new
FileInputStream("c:\\archivo1.dat"));
while(true){
clave=archivo.readInt();
nombre=archivo.readUTF();
estatura=archivo.readFloat();
if (estatura>=est){
out.println("<TR>");
out.println("<TD>"+clave+"</TD>");
out.println("<TD>"+nombre+"</TD>");
out.println("<TD>"+estatura+"</TD>");
out.println("</TR>");
} } }
catch(FileNotFoundException fnfe) {}
catch (IOException ioe) {};
archivo.close();
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog20.jsp METHOD=post>");
out.println("ESTATURA >=:<INPUT TYPE=TEXT NAME=ESTATURA><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=FILTRAR VALUE=Filtrar><BR>");
out.println("</FORM>");
%>

Seria mas interesante construir un programa donde el


filtro se construya con dos comboboxs y un textbox
para el dato(recordar definición de condición simple) y
de esta manera se podra construir un programa que
filtre por cualuier campo y por cualquier operador
relacional, pero este programa es la

1.- TAREA Java Jsp Filtrar el archivo de alumnos por


cualquier campo.
UNIDAD 5: JAVA JSP REGISTROS Y
ARCHIVOS SECUENCIALES

TEMA 9: JAVA JSP BAJA O ELIMINACION


ARCHIVO SECUENCIAL

Eliminar o dar de baja en un archivo secuencial,


implica tener que estar procesando dos archivos a la
vez, el segundo de ellos es un archivo temporal, un
algoritmo de eliminacion fisica quedaria como:

Procedimiento :

1. Abrir el archivo original en modo letcura.


2. Abrir un archivo llamado temporal en modo
escritura.
3. Iniciar un ciclo de lectura del archivo original.
3a.- Dentro del ciclo leer el primer registro.
3b.- Validar el registro si no es eliminable, se
escribe al
archivo temporal.
3c.- Fin de ciclo (cerrar el ciclo).
4. Cerrar ambos archivos.
5. eliminar el archivo original.
6. renombrar el archivo temporal con el nombre de
archivo original.

Una segunda tecnica, consiste en agregar un campo


de estado (status) al registro, tal como se vio en el
curso anterior:

Sin embargo el proceso de baja se tiene que realizar


en un sistema de información, para resolver este
problema la respuesta es agregar un campo especial
llamado status que puede ser de tipo char, con
algunos caracteres de control que se puedan cargar
en el por ejemplo una 'a' siginifica que esta en alta,
una 'b' significa que esta en baja, etc.
Lo unico que se tiene que hacer, es que cuando se
agrega o manda el registro por primera vez a disco,
mandarlo cargado el campo de status con 'a' y estar
validando con if siempre este campo en cualquier
proceso de busqueda o condicion o despliegue, si se
encuentra cargado con 'b' entonces solo avisar al
usuario que esta de baja dicho registro.”

A continuación damos un ejemplo de eliminación


fisica:

Prog21 jsp
<%@ page import="java.io.*" %>
<%
// declarando
int clave=0;int claveb=0;String nombre=""; float estatura=0;
// creando un objeto de tipo archivo
DataInputStream archivo = null;
DataOutputStream archivot = null;
if(request.getParameter("ELIMINAR") != null)
{
// capturando clave a eliminar
claveb=Integer.parseInt(request.getParameter("CLAVEB"));
try {
// abriendo archivos
archivo = new DataInputStream(new
FileInputStream("c:\\archivo1.dat"));
archivot = new DataOutputStream(new
FileOutputStream("c:\\temp.dat",true));
while(true){
clave=archivo.readInt();
nombre=archivo.readUTF();
estatura=archivo.readFloat();
if (claveb!=clave){
archivot.writeInt(clave);
archivot.writeUTF(nombre);
archivot.writeFloat(estatura);
}}}
catch(FileNotFoundException fnfe) {}
catch (IOException ioe) {};
// cerrando archivos
archivo.close();
archivot.close();
// eliminando original renombrando temporal
File file1 = new File("c:\\archivo1.dat");
File file2 = new File("c:\\temp.dat");
if (file1.exists()) {file1.delete();};
file2.renameTo(file1);
// avisando
out.println("REGISTRO ELIMINADO");
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog21.jsp METHOD=post>");
out.println("CLAVE ELIMINAR:<INPUT TYPE=TEXT NAME=CLAVEB><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=ELIMINAR VALUE=Eliminar><BR>");
out.println("</FORM>");
%>

TAREAS PROGRAMACION JAVA JSP

1.- Agregar un modulo de eliminacion o baja, a los


archivos ya construidos.
UNIDAD 5: JAVA JSP REGISTROS Y
ARCHIVOS SECUENCIALES

TEMA 10: OPERACIONES CON CAMPOS JAVA


JSP

Este es tambien un caso comun con los elementos de


un archivo, sin embargo es tambien facil de resolver.

Solo usar los dos archivos el original y el temporal y


antes de grabarse al temporal hacer la operacion
correspondiente, como lo muestra el siguiente
ejemplo.

Prog22.jsp
<%@ page import="java.io.*" %>
<%
// declarando
int clave=0;String nombre=""; float estatura=0;
// creando dos objetos de tipo archivo uno para escritura y otro
para lectura
DataInputStream archivo = null;
DataOutputStream archivot = null;
if(request.getParameter("SUMAR") != null)
{
try {
// abriendo archivos
archivo = new DataInputStream(new
FileInputStream("c:\\archivo1.dat"));
archivot = new DataOutputStream(new
FileOutputStream("c:\\temp.dat",true));
while(true){
clave=archivo.readInt();
nombre=archivo.readUTF();
estatura=archivo.readFloat();
// sumando
estatura = estatura + 5;
// grabando a temporal
archivot.writeInt(clave);
archivot.writeUTF(nombre);
archivot.writeFloat(estatura);
}}
catch(FileNotFoundException fnfe) {}
catch (IOException ioe) {};
// cerrando archivos
archivo.close();
archivot.close();
// eliminando original renombrando temporal
File file1 = new File("c:\\archivo1.dat");
File file2 = new File("c:\\temp.dat");
if (file1.exists()) {file1.delete();};
file2.renameTo(file1);
// avisando
out.println("ESTATURAS SUMADAS ");
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog22.jsp METHOD=post>");
out.println("<INPUT TYPE=SUBMIT NAME=SUMAR VALUE=EST+5><BR>");
out.println("</FORM>");
%>

TAREAS PROGRAMACION JAVA JSP

1.- construir un archivo que traiga matricula, nombre,


calif1, calif2, calif3 y promedio, cargar unos 5
renglones de alumnos, no cargar promedio, el
promedio lo deberan calcular con un programa.
UNIDAD 5: JAVA JSP REGISTROS Y
ARCHIVOS SECUENCIALES

TEMA 11: EDICION DE REGISTROS JAVA JSP

Editar registros significa cambiar el contenido de


algunos de los campos o columnas por nueva
informacíón o para corregir algun error de captura
original o para agregar alguna columna que no existia
por modificación de la tabla o la base de datos.

La solucion es similar a los temas anterior, es decir se


ocupan los dos archivos el original y el temporal y ya
sea que se modifique una sola clave o se modifiquen
todos los registros, el ejemplo que se construye va
mostrando los registros del archivo y pregunta y
modifica o edita el registro pedido.

Prog23.jsp

<%@ page import="java.io.*" %>


<%
// declarando
int clave=0;int claveb=0;String nombre=""; float estatura=0;
// creando un objeto de tipo archivo
DataInputStream archivo = null;
DataOutputStream archivot = null;
// codigo de busqueda
String temp1=request.getParameter("BUSCAR");
if(temp1==null)temp1=" ";
if(temp1.compareTo("buscar")==0)
{
// capturando clave a buscar
claveb=Integer.parseInt(request.getParameter("CLAVEB"));
try {
// abriendo archivo
archivo = new DataInputStream(new
FileInputStream("c:\\archivo1.dat"));
while(true){
clave=archivo.readInt();
nombre=archivo.readUTF();
estatura=archivo.readFloat();
if (claveb==clave){
out.println("<FORM ACTION=prog23.jsp METHOD=post>");
out.println("CLAVE :<INPUT TYPE=TEXT NAME=CLAVE
value="+clave+"><BR>");
out.println("<INPUT TYPE=HIDDEN NAME=CLAVEB value="+claveb+"><BR>");
out.println("NOMBRE :<INPUT TYPE=TEXT NAME=NOMBRE
value=\""+nombre+"\"><BR>");
out.println("ESTATURA :<INPUT TYPE=TEXT NAME=ESTATURA
value="+estatura+"><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=EDITAR VALUE=editar><BR>");
out.println("</FORM>");
}
} }
catch(FileNotFoundException fnfe) {}
catch (IOException ioe) {};
archivo.close();
};
// codigo de edicion
String temp2=request.getParameter("EDITAR");
if(temp2==null)temp2=" ";
if(temp2.compareTo("editar")==0){
try {
// abriendo archivos
archivo = new DataInputStream(new
FileInputStream("c:\\archivo1.dat"));
archivot = new DataOutputStream(new
FileOutputStream("c:\\temp.dat",true));
// cargando clave de edicion
claveb=Integer.parseInt(request.getParameter("CLAVEB"));
while(true){
clave=archivo.readInt();
nombre=archivo.readUTF();
estatura=archivo.readFloat();
if (claveb != clave){
archivot.writeInt(clave);
archivot.writeUTF(nombre);
archivot.writeFloat(estatura);
}
else{
// capturando y grabando nuevos datos
clave=Integer.parseInt(request.getParameter("CLAVE"));
nombre=request.getParameter("NOMBRE");
estatura=Float.parseFloat(request.getParameter("ESTATURA"));
archivot.writeInt(clave);
archivot.writeUTF(nombre);
archivot.writeFloat(estatura);
};
}}
catch(FileNotFoundException fnfe) {}
catch (IOException ioe) {};
// cerrando archivos
archivo.close();
archivot.close();
// eliminando original renombrando temporal
File file1 = new File("c:\\archivo1.dat");
File file2 = new File("c:\\temp.dat");
if (file1.exists()) {file1.delete();};
file2.renameTo(file1);
// avisando
out.println("REGISTRO EDITADO");
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog23.jsp METHOD=post>");
out.println("CLAVE ELIMINAR:<INPUT TYPE=TEXT NAME=CLAVEB><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=BUSCAR VALUE=buscar><BR>");
out.println("</FORM>");
%>

TAREAS PROGRAMACION JAVA JSP

1.- construir programas de edición para sus archivos


UNIDAD 5: JAVA JSP REGISTROS Y
ARCHIVOS SECUENCIALES

TEMA 12: GRAFICOS JAVA JSP

Campos de graficos o de imagenes se han convertido


en elementos importantes de cualquier base de datos.

Para manejar este elemento:

1.- Es un metodo sencillo, primero subir las imagenes


( de preferencia jpg) con un ftp normal a tusitio y al
folder principal de el servidor, en este caso ROOT
( para el lws).
2.- Usar el tag <img src> de html EN EL PROGRAMA
jsp.
3.- agregar un campo de string llamado fotourl o foto
o url a el registro en el archivo secuencial y cargarlo
con el nombre de la imagen por ejemplo pato.jpg,
MUCHO OJO este paso exije que se tengan que
reconstruir todos los programas anteriores para incluir
este nuevo campo y volver a crear los archivos de
ejemplos.

prog24.jsp
<%@ page import="java.io.*" %>
<%
// declarando
int clave=0;int claveb=0;String nombre=""; float estatura=0;String
foto="";
// creando un objeto de tipo archivo
DataInputStream archivo = null;
if(request.getParameter("BUSCAR") != null)
{
// construyendo tabla html
out.println("<HTML><TABLE Border=10 CellPadding=5><TR>");
out.println("<th bgcolor=Green>CLAVE</th><th
bgcolor=White>NOMBRE</th><th
bgcolor=Red>ESTATURA</th><th>FOTOGRAFIA</TH></TR>");
// capturando clave a buscar
claveb=Integer.parseInt(request.getParameter("CLAVEB"));
try {
// abriendo archivo
archivo = new DataInputStream(new
FileInputStream("c:\\archivo1.dat"));
while(true){
clave=archivo.readInt();
nombre=archivo.readUTF();
estatura=archivo.readFloat();
foto=archivo.readUTF();
if (claveb==clave){
out.println("<TR>");
out.println("<TD>"+clave+"</TD>");
out.println("<TD>"+nombre+"</TD>");
out.println("<TD>"+estatura+"</TD>");
out.println("<TD><img
src=http:\\\\localhost\\progs\\"+foto+"></TD>");
out.println("</TR>");
} } }
catch(FileNotFoundException fnfe) {}
catch (IOException ioe) {};
archivo.close();
};
// construyendo forma dinamica
out.println("<FORM ACTION=prog24.jsp METHOD=post>");
out.println("CLAVE BUSCAR:<INPUT TYPE=TEXT NAME=CLAVEB><BR>");
out.println("<INPUT TYPE=SUBMIT NAME=BUSCAR VALUE=buscar><BR>");
out.println("</FORM>");
%>

nota:

Observar que en img src debe ir la dirección internet


del servidor por ejemplo
http:\\misitio.com\pato.jpg, sin embargo en el
programa se esta usando
http:\\\\localhost\\pato.jpg, en cuanto a localhost
se puede sustituir por el dominio ejemplo
laurosoto.com, y en cuanto porque se usaron cuatro \\
recordar que en java dentro de una string las
secuencias de escape ( \a, \r etc) van precedidas del
simbolo \, por esa causa para mandar un \ a la pagina
se tiene que usar la secuencia de escape
y como la dirección incluia
al principio y una diagonal \ al final se mandaron \\
y respectivamente.

TAREAS PROGRAMACION JAVA JSP


CONSTRUIR UN SISTEMA COMPLETO QUE TENGA
TODOS LOS PROCESOS VISTOS, PUEDEN
SELECCIONAR, REFACCIONARIAS, JOYERIAS, VIDEOS,
ETC.

También podría gustarte