Sie sind auf Seite 1von 253

INSTITUTO POLITCNICO NACIONAL

ESCUELA SUPERIOR DE CMPUTO

Desarrollo de Aplicaciones para la Web I

M. en C. Gabriela de Jess Lpez Ruiz

M. en C. Gabriela de Jess Lpez Ruiz

11

Contenido del segundo parcial


UNIDAD TEMA DESCRIPCIN DEL TEMA

III

IV

Introduccin a Servidores: Apache y Tomcat 3.1. Manejadores de base de datos 3.2 Repaso del lenguaje SQL 4. PHP 4.1. Repaso de JAVA 4.2. JSP 3.
M. en C. Gabriela de Jess Lpez Ruiz 22

Segundo Parcial

M. en C. Gabriela de Jess Lpez Ruiz

33

Introduccin a Servidores

M. en C. Gabriela de Jess Lpez Ruiz

44

Servidores Web con soporte para JSP


Para poder publicar aplicaciones desarrolladas en JSP o Servlets, se debe realizar la instalacin de un servidor Web, algunas de las opciones son las siguientes: Apache Tomcat. Es la implementacin de referencia oficial para las especificaciones Servlet 2.2 y JSP 1.1. Puede ser usado como pequeo servidor para probar pginas JSP y servlets, o puede integrarse en el servidor Web Apache. Tomcat, al igual que el propio Apache es gratuito. JavaServer Web Development Kit (JSWDK). El JSWDK es la implementacin de referencia oficial para las especificaciones Servlet 2.1 y JSP 1.0. Se usaba como pequeo servidor para probar servlets y pginas JSP antes de desarrollar un completo servidor Web que soporta estas tecnologas.

M. en C. Gabriela de Jess Lpez Ruiz

55

Servidores Web con soporte para JSP


Allaire JRun. JRun es un motor servelt y JSP que puede conectarse dentro de los servidores Netscape Enterprise o FastTrack, de los servidores Web IIS, Microsoft Personal Web Server, viejas versiones de Apache, OReillys WebSite, o StarNine WebSTAR.

New Atlantas ServletExec. ServletExec es un rpido motor de servlets y pginas JSP que puede ser conectado dentro de los servidores web ms populares para Solaris, Windows, MacOS, HPUX y Linux. Podemos descargarlo y usarlo de forma gratuita, pero muchas de sus caractersticas avanzadas y utilidades de administracin estarn desactivadas hasta que compremos una licencia.
M. en C. Gabriela de Jess Lpez Ruiz 66

Plataformas y Servidores soportadas por PHP

Plataformas (actualidad): Plataformas (en perparacin): UNIX (todas las variantes) OS/390 Win32 (NT/W95/W98/W2000) AS/400 QNX Mac (WebTen) OS/2 BeOS Servidores: Apache (UNIX,Win32) CGI fhttpd ISAPI (IIS, Zeus) NSAPI (Netscape iPlanet) Java servlet AOLServer Roxen Servidores (en preparacin): Apache 2.0 WSAPI (O'Reilly WebSite) phttpd thttpd

M. en C. Gabriela de Jess Lpez Ruiz

77

Manejadores de base de datos

M. en C. Gabriela de Jess Lpez Ruiz

88

Base de datos MySQL


Gabriela de Jess Lpez

M. en C. Gabriela de Jess Lpez Ruiz

99

Contenido
SQL
Diseo de una base de datos Administracin Insertar, actualizar y borrar datos Consultas, relaciones Modificar la base de datos

M. en C. Gabriela de Jess Lpez Ruiz

1010

SISTEMA GENERAL DE BASES DE DATOS (SGBD)

Conjunto de programas que permiten definir, construir y manipular BD.


Definir: especifica la estructura de datos. Construir: permite meter datos en la BD. Manipular: permite hacer consultas, manipulaciones, aadir,....

Controlar la concurrencia. Controlar la integracin de los datos. Seguridad (control de acceso).

M. en C. Gabriela de Jess Lpez Ruiz

1111

MODELO DE DATOS
Formalismo matemtico que permite describir la estructura de una BD. Clasificacin de modelos de datos: Conceptuales (Alto Nivel): permite describir la Base de Datos como la percibe el usuario (ER). De implementacin (de representacin):
Relacional. Jerrquico. En red.

De bajo nivel (Fsico): como se almacenan los datos en la BD.

M. en C. Gabriela de Jess Lpez Ruiz

1212

ESQUEMA
ESQUEMA Descripcin de una BD utilizando modelo de datos. INSTANCIA Contenido de una BD en un instante determinado

1313

M. en C. Gabriela de Jess Lpez Ruiz

MODELO ENTIDAD-RELACION
ENTIDAD:
Entidad particular: Algo del mundo real que tiene existencia independiente. Entidad: Descripcin de un conjunto de entidades particulares que comparten la misma estructura.

ATRIBUTO:
Informacin o propiedad que describe una entidad. Tipos de atributos:

Simples: no se pueden descomponer, describen un solo valor. Compuestos: se descomponen en varios atributos. Monovaluados: para cada entidad solo hay un atributo. Multivaluados: para cada entidad hay varios atributos. Derivados: su valor se puede deducir de algn atributo almacenado. Clave: tienen un valor diferente para cada entidad particular

M. en C. Gabriela de Jess Lpez Ruiz

1414

MODELO ENTIDAD-RELACION
Dominio de un atributo:
Conjunto de valores que puede tomar una entidad particular.

RELACION:
Asociacin entre varias entidades. Grado de una relacin: S R E1x...xEn entonces grado(R)=N. Relacin recursiva: relacin de una entidad consigo misma.

Cardinalidad de una relacin:


nmero de entidades particulares con las que puede estar relacionada una entida particular determinada. Tipos de cardinalidad: 1:1, 1:N, M:N.
M. en C. Gabriela de Jess Lpez Ruiz 1515

Repaso del lenguaje SQL

M. en C. Gabriela de Jess Lpez Ruiz

1616

SQL
El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por los diferentes motores de bases de datos para realizar determinadas operaciones sobre los datos o sobre la estructura de los mismos. Pero como sucede con cualquier sistema de normalizacin hay excepciones para casi todo; de hecho, cada motor de bases de datos tiene sus peculiaridades y lo hace diferente de otro motor, por lo tanto, el lenguaje SQL normalizado (ANSI) no nos servir para resolver todos los problemas, aunque si se puede asegurar que cualquier sentencia escrita en ANSI ser interpretable por cualquier motor de datos.

M. en C. Gabriela de Jess Lpez Ruiz

1717

Componentes del SQL

El lenguaje SQL est compuesto por comandos, clusulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos.

M. en C. Gabriela de Jess Lpez Ruiz

1818

Comandos
Existen dos tipos de comandos SQL: Los DLL que permiten crear y definir nuevas bases de datos, campos e ndices. Los DML que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos.
M. en C. Gabriela de Jess Lpez Ruiz 1919

Comandos DLL

Comando

Descripcin

CREATE DROP ALTER

Utilizado para crear nuevas tablas, campos e ndices Empleado para eliminar tablas e ndices Utilizado para modificar las tablas agregando campos o cambiando la definicin de los campos.

M. en C. Gabriela de Jess Lpez Ruiz gaby_dlib@yahoo.com.mx

Comandos DML
Comando SELECT INSERT UPDATE DELETE Descripcin Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado Utilizado para cargar lotes de datos en la base de datos en una nica operacin. Utilizado para modificar los valores de los campos y registros especificados Utilizado para eliminar registros de una tabla de una base de datos
M. en C. Gabriela de Jess Lpez Ruiz gaby_dlib@yahoo.com.mx

Clusulas
Las clusulas son condiciones de modificacin utilizadas para definir los datos que desea seleccionar o manipular.
Clusula
FROM WHERE GROUP BY HAVING ORDER BY

Descripcin
Utilizada para especificar la tabla de la cual se van a seleccionar los registros Utilizada para especificar las condiciones que deben reunir los registros que se van a seleccionar Utilizada para separar los registros seleccionados en grupos especficos Utilizada para expresar la condicin que debe satisfacer cada grupo Utilizada para ordenar los registros seleccionados de acuerdo con un orden especfico
M. en C. Gabriela de Jess Lpez Ruiz gaby_dlib@yahoo.com.mx

Operadores lgicos
Operador AND Uso Es el "y" lgico. Evalua dos condiciones y devuelve un valor de verdad slo si ambas son ciertas. Es el "o" lgico. Evala dos condiciones y devuelve un valor de verdar si alguna de las dos es cierta. Negacin lgica. Devuelve el valor contrario de la expresin.

OR

NOT

M. en C. Gabriela de Jess Lpez Ruiz gaby_dlib@yahoo.com.mx

Operadores de Comparacin
Operador < > <> <= >= =

Uso Menor que Mayor que Distinto de Menor Igual que Mayor Igual que Igual que

BETWEEN Utilizado para especificar un intervalo de valores. LIKE IN

Utilizado en la comparacin de un modelo Utilizado para especificar registros de una base de datos

M. en C. Gabriela de Jess Lpez Ruiz gaby_dlib@yahoo.com.mx

Funciones de Agregado
Las funciones de agregado se usan dentro de una clusula SELECT en grupos de registros para devolver un nico valor que se aplica a un grupo de registros.
Funcin AVG COUNT SUM MAX MIN Descripcin Utilizada para calcular el promedio de los valores de un campo determinado Utilizada para devolver el nmero de registros de la seleccin Utilizada para devolver la suma de todos los valores de un campo determinado Utilizada para devolver el valor ms alto de un campo especificado Utilizada para devolver el valor ms bajo de un campo especificado

M. en C. Gabriela de Jess Lpez Ruiz gaby_dlib@yahoo.com.mx

Consultas de Seleccin
Las consultas de seleccin se utilizan para indicar al motor de datos que devuelva informacin de las bases de datos, esta informacin es devuelta en forma de conjunto de registros que se pueden almacenar en un objeto ResultSet. Este conjunto de registros es modificable.

M. en C. Gabriela de Jess Lpez Ruiz

2626

Consultas Bsicas
La sintaxis bsica de una consulta de seleccin es la siguiente: SELECT Campos FROM Tabla; En donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los mismos, por ejemplo: SELECT nombre, cct_domicilio FROM CCT; Esta consulta devuelve un Conjunto de Resultados (ResultSet) con el campo nombre y cct_domicilio de la tabla CCT.
M. en C. Gabriela de Jess Lpez Ruiz 2727

Devolver Literales
En determinadas ocasiones nos puede interesar incluir una columna con un texto fijo en una consulta de seleccin, por ejemplo, supongamos que tenemos una tabla de inmuebles y deseamos recuperar la clave y domicilio, podramos realizar la siguiente consulta:
SELECT cveinm,'Domicilio :', domicilio FROM inmuebles WHERE CVEINM='090001O';

M. en C. Gabriela de Jess Lpez Ruiz

2828

Ordenar los Registros


Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las tablas mediante la clasula ORDER BY Lista de Campos. En donde Lista de campos representa los campos a ordenar. Ejemplo:

SELECT
cveinm,'Domicilio', domicilio, telefono

FROM
inmuebles

WHERE
cveinm='090001O'

ORDER BY
domicilio Esta consulta devuelve los campos cveinm, domicilio, Telefono de la tabla INMUEBLES ordenados por el campo Domicilio.

M. en C. Gabriela de Jess Lpez Ruiz

2929

Ordenar los Registros


Se pueden ordenar los registros por mas de un campo, como por ejemplo:
SELECT
cveinm,'Domicilio', domicilio, telefono

FROM
inmuebles

WHERE
cveinm='090001O'

ORDER BY
Domicilio, telefono

Incluso se puede especificar el orden de los registros: ascendente mediante la clusula ASC (se toma este valor por defecto) descendente (DESC).

M. en C. Gabriela de Jess Lpez Ruiz

3030

Consultas con Predicado


El predicado se incluye entre la clusula y el primer nombre del campo a recuperar, los posibles predicados son:

Predicado ALL TOP DISTINCT

Descripcin Devuelve todos los campos de la tabla Devuelve un determinado nmero de registros de la tabla Omite los registros cuyos campos seleccionados coincidan totalmente

M. en C. Gabriela de Jess Lpez Ruiz gaby_dlib@yahoo.com.mx

Alias
En determinadas circunstancias es necesario asignar un nombre a alguna columna determinada de un conjunto devuelto, otras veces por simple capricho o por otras circunstancias. Para resolver todas ellas tenemos la palabra reservada AS que se encarga de asignar el nombre que deseamos a la columna deseada. SELECT DISTINCTROW Apellido AS Empleado FROM Empleados;
M. en C. Gabriela de Jess Lpez Ruiz 3232

Intervalos de Valores
Para indicar que deseamos recuperar los registros segn el intervalo de valores de un campo emplearemos el operador Between cuya sintaxis es: campo [Not] Between valor1 And valor2 (la condicin Not es opcional)

En este caso la consulta devolvera los registros que contengan en "campo" un valor incluido en el intervalo valor1, valor2 (ambos inclusive). Si anteponemos la condicin Not devolver aquellos valores no incluidos en el intervalo. SELECT * FROM Pedidos WHERE CodPostal Between 28000 And 28999;
M. en C. Gabriela de Jess Lpez Ruiz 3333

El Operador Like
Se utiliza para comparar una expresin de cadena con un modelo en una expresin SQL. Su sintaxis es: expresin Like modelo En donde expresin es una cadena modelo o campo contra el que se compara expresin. Se puede utilizar el operador Like para encontrar valores en los campos que coincidan con el modelo especificado. Por modelo puede especificar un valor completo (Ana Mara), o se pueden utilizar caracteres comodn como los reconocidos por el sistema operativo para encontrar un rango de valores (Like An*).
M. en C. Gabriela de Jess Lpez Ruiz 3434

El Operador In
Este operador devuelve aquellos registros cuyo campo indicado coincide con alguno de los en una lista. Su sintaxis es: expresin [Not] In(valor1, valor2, . . .) SELECT * FROM Pedidos WHERE Provincia In ('Madrid', 'Barcelona', 'Sevilla');

M. en C. Gabriela de Jess Lpez Ruiz

3535

La clusula WHERE
La clusula WHERE puede usarse para determinar qu registros de las tablas enumeradas en la clusula FROM aparecern en los resultados de la instruccin SELECT. Depus de escribir esta clusula se deben especificar las condiciones expuestas en los dos primeros apartados de este captulo.
SELECT Apellidos, Salario FROM Empleados WHERE Salario > 21000;

SELECT Id_Producto, Existencias FROM Productos WHERE Existencias <= Nuevo_Pedido;

SELECT * FROM Pedidos WHERE Fecha_Envio = #5/10/94#;

M. en C. Gabriela de Jess Lpez Ruiz

3636

La clusula WHERE
SELECT Apellidos, Salario FROM Empleados WHERE Salario > 21000;

SELECT Id_Producto, Existencias FROM Productos WHERE Existencias <= Nuevo_Pedido;

SELECT * FROM Pedidos WHERE Fecha_Envio = #5/10/94#;

M. en C. Gabriela de Jess Lpez Ruiz

3737

La clusula WHERE
SELECT Apellidos, Salario FROM Empl WHERE Apellidos Between 'Lon' And 'Tol';

SELECT Id_Pedido, Fecha_Pedido FROM Pedidos WHERE Fecha_Pedido Between #1-1-94# And #30-6-94#;

SELECT Apellidos, Nombre, Ciudad FROM Empleados WHERE Ciudad In ('Sevilla', 'Los Angeles', 'Barcelona');

M. en C. Gabriela de Jess Lpez Ruiz

3838

Agrupamiento de Registros y Funciones Agregadas

La clusula GROUP BY Combina los registros con valores idnticos, en la lista de campos especificados, en un nico registro. Para cada registro se crea un valor sumario si se incluye una funcin SQL agregada, como por ejemplo Sum o Count, en la instruccin SELECT. Su sintaxis es:
SELECT campos FROM tabla WHERE criterio GROUP BY campos del grupo
M. en C. Gabriela de Jess Lpez Ruiz 3939

Agrupamiento de Registros y Funciones Agregadas

GROUP BY es opcional. Los valores de resumen se omiten si no existe una funcin SQL agregada en la instruccin SELECT. Los valores Null en los campos GROUP BY se agrupan y no se omiten. No obstante, los valores Null no se evalan en ninguna de las funciones SQL agregadas. Se utiliza la clusula WHERE para excluir aquellas filas que no desea agrupar, y la clusula HAVING para filtrar los registros una vez agrupados.

M. en C. Gabriela de Jess Lpez Ruiz

4040

Agrupamiento de Registros y Funciones Agregadas

Una vez que GROUP BY ha combinado los registros, HAVING muestra cualquier registro agrupado por la clusula GROUP BY que satisfaga las condiciones de la clusula HAVING. HAVING es similar a WHERE, determina qu registros se seleccionan. Una vez que los registros se han agrupado utilizando GROUP BY, HAVING determina cuales de ellos se van a mostrar.

SELECT Id_Familia Sum(Stock) FROM Productos GROUP BY Id_Familia HAVING Sum(Stock) > 100 AND NombreProducto Like BOS*;
M. en C. Gabriela de Jess Lpez Ruiz 4141

Consultas de Actualizacin
Las consultas de actualizacin son aquellas que no devuelven ningn registro, son las encargadas de acciones como aadir y borrar y modificar registros. DELETE Crea una consulta de eliminacin que elimina los registros de una o ms de las tablas listadas en la clusula FROM que satisfagan la clusula WHERE. Esta consulta elimina los registros completos, no es posible eliminar el contenido de algn campo en concreto. Su sintaxis es: DELETE FROM Tabla WHERE criterio
M. en C. Gabriela de Jess Lpez Ruiz 4242

Consultas de Actualizacin
INSERT INTO Agrega un registro en una tabla. Se la conoce como una consulta de datos aadidos. Esta consulta puede ser de dos tipos: Insertar un nico registro Insertar en una tabla los registros contenidos en otra tabla. Insertar un nico Registro En este caso la sintaxis es la siguiente: INSERT INTO Tabla (campo1, campo2, .., campoN)VALUES (valor1, valor2, ..., valorN)

M. en C. Gabriela de Jess Lpez Ruiz

4343

Consultas de Actualizacin
Para seleccionar registros e insertarlos en una tabla nueva En este caso la sintaxis es la siguiente: SELECT campo1, campo2, ..., campoN INTO nuevatabla FROM tablaorigen [WHERE criterios]

Insertar Registros de otra Tabla En este caso la sintaxis es: INSERT INTO Tabla [IN base_externa] (campo1, campo2, ..., campoN) SELECT TablaOrigen.campo1, TablaOrigen.campo2, ..., TablaOrigen.campoN FROM TablaOrigen

M. en C. Gabriela de Jess Lpez Ruiz

4444

Consultas de Actualizacin
Crea una consulta de actualizacin que cambia los valores de los campos de una tabla especificada basndose en un criterio especfico. Su sintaxis es: UPDATE Tabla SET Campo1=Valor1, Campo2=Valor2, ... CampoN=ValorN WHERE Criterio;

M. en C. Gabriela de Jess Lpez Ruiz

4545

Tipos de datos
Tipo de Datos BINARY BIT BYTE COUNTER CURRENCY DATETIME SINGLE Longitud 1 byte 1 byte 1 byte 4 bytes 8 bytes 8 bytes 4 bytes Descripcin Para consultas sobre tabla adjunta de productos de bases de datos que definen un tipo de datos Binario. Valores Si/No True/False Un valor entero entre 0 y 255. Un nmero incrementado automticamente (de tipo Long) Un entero escalable entre 922.337.203.685.477,5808 y 922.337.203.685.477,5807. Un valor de fecha u hora entre los aos 100 y 9999. Un valor en punto flotante de precisin simple con un rango de -3.402823*1038a -1.401298*10-45 para valores negativos, 1.401298*10-45a 3.402823*1038para valores positivos, y 0.

M. en C. Gabriela de Jess Lpez Ruiz gaby_dlib@yahoo.com.mx

Subconsultas
Una subconsulta es una instruccin SELECT anidada dentro de una instruccin SELECT, SELECT...INTO, INSERT...INTO, DELETE, o UPDATE o dentro de otra subconsulta. Puede utilizar tres formas de sintaxis para crear una subconsulta: comparacin [ANY | ALL | SOME] (instruccin sql) expresin [NOT] IN (instruccin sql) [NOT] EXISTS (instruccin sql)
M. en C. Gabriela de Jess Lpez Ruiz 4747

Consultas de Unin Internas


Consultas de Combinacin entre tablas Las vinculaciones entre tablas se realiza mediante la clusula INNER que combina registros de dos tablas siempre que haya concordancia de valores en un campo comn. Su sintaxis es:
SELECT campos FROM tb1 INNER JOIN tb2 ON tb1.campo1 comp tb2.campo2

En donde: tb1, tb2 Son los nombres de las tablas desde las que se combinan los registros. campo1, campo2 Son los nombres de los campos que se combinan. Si no son numricos, los campos deben ser del mismo tipo de datos y contener el mismo tipo de datos, pero no tienen que tener el mismo nombre. comp Es cualquier operador de comparacin relacional : =, <, >, <=, >=, o <>.

M. en C. Gabriela de Jess Lpez Ruiz

4848

Consultas de Unin Internas


Se puede utilizar una operacin INNER JOIN en cualquier clusula FROM. Esto crea una combinacin por equivalencia, conocida tambin como unin interna. Las combinaciones Equi son las ms comunes; stas combinan los registros de dos tablas siempre que haya concordancia de valores en un campo comn a ambas tablas. El ejemplo siguiente muestra cmo podra combinar las tablas Categoras y Productos basndose en el campo IDCategoria: SELECT Nombre_Categora, NombreProducto FROM Categorias INNER JOIN Productos ON Categorias.IDCategoria = Productos.IDCategoria;
M. en C. Gabriela de Jess Lpez Ruiz 4949

Consultas de Unin Internas


Tambin se pueden enlazar varias clusulas ON en una instruccin JOIN, utilizando la sintaxis siguiente: SELECT campos FROM tabla1 INNER JOIN tabla2 ON tb1.campo1 comp tb2.campo1 AND ON tb1.campo2 comp tb2.campo2) OR ON tb1.campo3 comp tb2.campo3)]; Tambin puede anidar instrucciones JOIN utilizando la siguiente sintaxis: SELECT campos FROM tb1 INNER JOIN (tb2 INNER JOIN [( ]tb3 [INNER JOIN [( ]tablax [INNER JOIN ...)] ON tb3.campo3 comp tbx.campox)] ON tb2.campo2 comp tb3.campo3) ON tb1.campo1 comp tb2.campo2;

M. en C. Gabriela de Jess Lpez Ruiz

5050

Consultas de Autocombinacin
La autocombinacin se utiliza para unir una tabla consigo misma, comparando valores de dos columnas con el mismo tipo de datos. La sintaxis en la siguiente: SELECT alias1.columna, alias2.columna, ... FROM tabla1 as alias1, tabla2 as alias2 WHERE alias1.columna = alias2.columna AND otras condiciones Por ejemplo, para visualizar el nmero, nombre y puesto de cada empleado, junto con el nmero, nombre y puesto del supervisor de cada uno de ellos se utilizara la siguiente sentencia: SELECT t.num_emp, t.nombre, t.puesto, t.num_sup,s.nombre, s.puesto FROM empleados AS t, empleados AS s WHERE t.num_sup = s.num_emp

M. en C. Gabriela de Jess Lpez Ruiz

5151

Creacin de Tablas Nuevas


CREATE TABLE tabla (campo1 tipo (tamao) ndice1 , campo2 tipo (tamao) ndice2 , ..., ndice Parte multicampo , ... )
tabla campo1 campo2 tipo tamao Descripcin

Es el nombre de la tabla que se va a crear. Es el nombre del campo o de los campos que se van a crear en la nueva tabla. La nueva tabla debe contener, al menos, un campo. Es el tipo de datos de campo en la nueva tabla. (Ver Tipos de Datos) Es el tamao del campo slo se aplica para campos de tipo texto.

ndice1 Es una clusula CONSTRAINT que define el tipo de indice a ndice2 crear. Esta clusula en opcional. Es una clusula CONSTRAINT que define el tipo de indice ndice multicampos a crear. Un ndice multi campo es aquel que multicam est indexado por el contenido de varios campos. Esta pos clusula en opcional.
M. en C. Gabriela de Jess Lpez Ruiz gaby_dlib@yahoo.com.mx

Tipos de datos
Tipo de Datos Longitud Descripcin Un valor en punto flotante de doble precisin con un rango de -1.79769313486232*10308a -4.94065645841247*10-324para valores negativos, 4.94065645841247*10-324a 1.79769313486232*10308para valores positivos, y 0. Un entero corto entre -32,768 y 32,767. Un entero largo entre -2,147,483,648 y 2,147,483,647.

DOUBLE

8 bytes

SHORT LONG LONGTEXT LONGBINARY TEXT

2 bytes 4 bytes

1 byte por De cero a un mximo de 1.2 gigabytes. carcter Segn se De cero 1 gigabyte. Utilizado para objetos OLE. necesite 1 byte por De cero a 255 caracteres. caracter

M. en C. Gabriela de Jess Lpez Ruiz gaby_dlib@yahoo.com.mx

PHP

M. en C. Gabriela de Jess Lpez Ruiz

5454

INTRODUCCIN: Diferencias entre ASP y PHP

t i v e SP Hv e r HP a g e s e x t P r e p r o er P: ypert

Software propietario

l l l

Free Software

l l

Plataformas Microsoft Varios lenguajes (VBScript, JScript)

Multiplataforma Un solo lenguaje: PHP

M. en C. Gabriela de Jess Lpez Ruiz

5555

Caractersticas de PHP
l l l l l

Lenguaje ms fcil y potente Ms rpido que ASP Integracin perfecta con 8 servidores HTTP Acceso a 20 tipos de Bases de Datos Diseo modular de fcil ampliacin Licencia abierta
M. en C. Gabriela de Jess Lpez Ruiz 5656

Historia y Desarrolladores
Fechas Inicio del desarrollo en otoo de 1994 PHP Versin 1 en primavera 1995 PHP Versin 2 1995-1997 PHP Versin 3 1997-2000 PHP Versin 4 en el segundo trimestre de 2000 Equipo de Desarrollo (195 personas) Zeev Suraski y Andi Gutmans (Israel) Shane Caraveo (Florida) Stig Bakken (Norway) Andrei Zmievski (Lincoln, Nebraska) Sascha M. en C. Gabriela de Jess Schumann (Dortmund,
Lpez Ruiz

5757

Estadsticas de uso

M. en C. Gabriela de Jess Lpez Ruiz

5858

Estadsticas de uso

Fuente: Netcraft Agosto 2000

3,314,634 Dominios, 637,746 Direcciones IP 19,823,296 Dominios analizados PHP instalado en el 16.7% de todos los dominios 1,322,329 Servidores Apache analizados 429,589 (32.49%) PHP 247,642 (18.73%) Frontpage 133,414 (10.09%) mod_perl 111,576 (8.44%) mod_ssl 78,030 (5.90%) OpenSSL 46,404 (3.51%) ApacheJServ

Fuente: SecuritySpace.com Septiembre 2000 Informe sobre Mdulos Apache

M. en C. Gabriela de Jess Lpez Ruiz

5959

Plataformas soportadas
Plataformas (actualidad): Plataformas (en perparacin): UNIX (todas las variantes) OS/390 Win32 (NT/W95/W98/W2000) AS/400 QNX Mac (WebTen) OS/2 BeOS Servidores: Apache (UNIX,Win32) CGI fhttpd ISAPI (IIS, Zeus) NSAPI (Netscape iPlanet) Java servlet AOLServer Roxen Servidores (en preparacin): Apache 2.0 WSAPI (O'Reilly WebSite) phttpd thttpd

M. en C. Gabriela de Jess Lpez Ruiz

6060

Bases de datos soportadas


SQL

Otros Adabas D Empress IBM DB2 Informix Ingres Interbase Frontbase mSQL Direct MS-SQL MySQL ODBC Oracle (OCI7,OCI8) PostgreSQL Raima Velocis Solid Sybase

dBase filePro (slo lectura) dbm (ndbm, gdbm, Berkeley db)

M. en C. Gabriela de Jess Lpez Ruiz

6161

PHP
El lenguaje PHP es un lenguaje de programacin de estilo clsico, es decir, es un lenguaje de programacin con variables, sentencias condicionales, bucles, funciones. Observar: Que PHP no es un lenguaje de marcas como podra ser HTML, XML o WML. Est mas cercano a JavaScript o a C.

M. en C. Gabriela de Jess Lpez Ruiz

6262

PHP
A diferencia de JavaScript que se ejecuta en el navegador, PHP se ejecuta en el servidor, por eso nos permite acceder a los recursos que tenga el servidor como por ejemplo podra ser una base de datos.

Haga clic para modificar el estilo de texto del El programa PHP es ejecutado Segundo nivel en el servidor y el resultado Tercer nivel enviado al navegador. El resultado es Cuarto nivel normalmente una pgina HTML pero igualmente podra ser una Quinto nivel
pagina WML.

M. en C. Gabriela de Jess Lpez Ruiz

6363

PHP
Al ser PHP un lenguaje que se ejecuta en el servidor no es necesario que su navegador lo soporte, es independiente del navegador, pero sin embargo para que sus pginas PHP funcionen, el servidor donde estn alojadas debe soportar PHP. La ventaja que tiene PHP sobre otros lenguajes de programacin que se ejecutan en el servidor (como podran ser los script CGI Perl), es que nos permite intercalar las sentencias PHP en las paginas HTML.

M. en C. Gabriela de Jess Lpez Ruiz

6464

PHP

M. en C. Gabriela de Jess Lpez Ruiz

6565

PHP

M. en C. Gabriela de Jess Lpez Ruiz

6666

PHP - Variables
Una variable es un contenedor de informacin, en el que podemos meter nmeros enteros, nmeros decimales, caracteres ... el contenido de las variables se puede leer y se puede cambiar durante la ejecucin de una pgina PHP (antes de que lo vea el cliente). En PHP todas las variables comienzan con el smbolo de peso $ y no es necesario definir una variable antes de usarla. Tampoco tienen tipos, es decir que una misma variable puede contener un nmero y luego puede contener caracteres.

M. en C. Gabriela de Jess Lpez Ruiz

6767

PHP Variables - Ejemplo

M. en C. Gabriela de Jess Lpez Ruiz

6868

PHP Variables - Ejemplo


Existen 2 tipos de variables: Las variables locales.- solo pueden ser usadas dentro de funciones. Las variables globales.- tienen su mbito de uso fuera de las funciones, podemos acceder a una variable global desde una funcin con la instruccin global nombre_variable;

M. en C. Gabriela de Jess Lpez Ruiz

6969

PHP Aritmticos
Los operadores de PHP son muy parecidos a los de C y JavaScript. Estos son los operadores que se pueden aplicar a las variables y constantes numricas.

M. en C. Gabriela de Jess Lpez Ruiz

7070

PHP Aritmticos - Ejemplo

M. en C. Gabriela de Jess Lpez Ruiz

7171

PHP Comparacin
Los operadores de comparacin son usados para comparar valores y as poder tomar decisiones.

M. en C. Gabriela de Jess Lpez Ruiz

7272

PHP Comparacin - Ejemplo

M. en C. Gabriela de Jess Lpez Ruiz

7373

PHP Operadores lgicos


Los operadores lgicos son usados para evaluar varias comparaciones, combinando los posibles valores de estas.

M. en C. Gabriela de Jess Lpez Ruiz

7474

PHP Operadores lgicos - Ejemplo

M. en C. Gabriela de Jess Lpez Ruiz

7575

PHP Condicionales
Las sentencias condicionales nos permiten ejecutar o no unas ciertas instrucciones dependiendo del resultado de evaluar una condicin. Las ms frecuentes son la instruccin if y la instruccin switch. <?php if (condicin) { Sentencias a ejecutar cuando la condicin es cierta. } else { Sentencias a ejecutar cuando la condicin es falsa. } ?>

if

e -

se l

M. en C. Gabriela de Jess Lpez Ruiz

7676

PHP Condicionales

La sentencia if ejecuta una serie de instrucciones u otras dependiendo de la condicin

M. en C. Gabriela de Jess Lpez Ruiz

7777

Delimitadores
Archivo .php
<? echo 'Primer mtodo de delimitar cdigo PHP'; ? > <?php echo 'Segundo mtodo, el ms usado'; ?> <script language="php"> echo 'Algunos editores (como el FrontPage) Slo entienden este mtodo'; </script> <% echo 'Mtodo de compatibilidad con ASP'; %>

M. en C. Gabriela de Jess Lpez Ruiz

7878

Delimitadores. Ejemplo.

<%@ Language=VBScript %> <html> <body> <%IF Hour(time)>20 OR Hour(time)<4 THEN%> Buenas noches. <%ELSE%> Buenos das. <%END IF%> </body> </html>

M. en C. Gabriela de Jess Lpez Ruiz

7979

Delimitadores. Ejemplo.

<html> <body> <?php if ( Hour(time)>20 || Hour(time)<4) { ?> Buenas noches. <?php } else { ?> Buenos das. <?php }?> </body> </html>

M. en C. Gabriela de Jess Lpez Ruiz

8080

Delimitadores. Ejemplo.

<html> <body> <?php if ( Hour(time)>20 || Hour(time)<4) { echo Buenas noches.; } else { echo Buenos das.; } ?> </body> M. en C. Gabriela de Jess </html> Lpez Ruiz

8181

Fin de lnea

print( date("M d, Y H:i:s", time()) ); print ( date( "M d, Y H:i:s", time() )

) ;

M. en C. Gabriela de Jess Lpez Ruiz

8282

Comentarios

/* Comentarios estilo C. * Pueden extenderse durante varias lneas. */ // Comentarios estilo C++. Hasta fin de lnea. # Comentarios estilo Perl. Hasta fin de lnea.

M. en C. Gabriela de Jess Lpez Ruiz

8383

Variables. Declaracin y Uso.

NO hace falta declararlas Llevan delante el signo de peso $.


$var_1 = 123; $var_2 = hola; $var_3 = $var_1 * 2;

M. en C. Gabriela de Jess Lpez Ruiz

8484

Variables. Tipado.

Variables dbilmente tipadas (tipo mixed).


$mi_variable $mi_variable $mi_variable $mi_variable = = = = Inicializamos como texto; 3; // Entero. 3.14 * $mi_variable; // Float. new MiClase(); // Objeto.

M. en C. Gabriela de Jess Lpez Ruiz

8585

Variables. Tipado.

Conversin automtica.

PHP realiza conversiones automticas de tipo: $mivar = 123; echo $mivar; // Se convierte a string $mivar = 3; // Se convierte a entero $mivar = 2 + $mivar; // para realizar la suma

M. en C. Gabriela de Jess Lpez Ruiz

8686

Variables. Tipado.

Conversin explcita.

Operador cast:
$mivar = (string)123;

Cabiar el tipo de una variable:


$mivar = 12; settype($mivar, "double");

M. en C. Gabriela de Jess Lpez Ruiz

8787

Variables. mbito.

En el cuerpo de un fichero, las variables son GLOBALES al fichero y ficheros incluidos. En una funcin, son LOCALES a esa funcin. Dentro de una clase, slo pueden ser accedidas a travs del operador -> sobre el nombre del objeto.

M. en C. Gabriela de Jess Lpez Ruiz

8888

Referencias.

Se definen con el carcter &: $alias = &$variable

Se puede eliminar una referencia con la funcin unset(): $a = 1; $b = &$a; unset ($a); // Pero $b sigue valiendo 1

M. en C. Gabriela de Jess Lpez Ruiz

8989

Tipos de datos.

Enteros, en decimal, octal o hexadecimal. $MiVar = 123; Punto flotante. $MiVar = 1.3e4; Arrays. $MiVar[2] = 123; Strings. $MiVar = Cadena de texto\n; Objetos: $MiVar = new MiClase();
M. en C. Gabriela de Jess Lpez Ruiz 9090

Tipos de datos. Arrays.

$MiArray[0] = 1; $MiArray[1] = hola!!; $MiArray[] = 3; echo $MiArray[2]; // 3

M. en C. Gabriela de Jess Lpez Ruiz

9191

Tipos de datos. Arrays (2). Funcionan como vectores: $MiArray[nombre] = Homer; echo $MiArray[0]; // 1 echo $MiArray[nombre]; // Homer Y pueden tener ms de una dimensin: $MiOtroArray[1][pepe][4] = 3 dimensiones!;
M. en C. Gabriela de Jess Lpez Ruiz 9292

Tipos de datos. Arrays (3).

Tambin se pueden definir con el constructor array() : $OtroArrayMas = array( 1, hola, 5); $YOtroArray = array( 0 => 1, 1 => hola, 2 => 5, 3 => 8, nombre => Homer );

M. en C. Gabriela de Jess Lpez Ruiz

9393

Tipos de datos. Strings. Comillas dobles.

Si se delim itan entre com illas dobles (), se expandir cualquier variable que haya dentro de la cadena. Adem s, se pueden incluir ciertas secuencias de escape, al igual que en C :
S ecu en cia S ig n ifica d o \n N ueva lnea \r R etorno de carro \t Tabulaci horizontal n \\ B arra invertida \$ S m bolo del dlar \" D obles com illas \[0-7]{1,3} C arcter en octal \x[0-9A-Fa-f]{1,2}C arcter en hexadecim al

M. en C. Gabriela de Jess Lpez Ruiz

9494

Tipos de datos. Strings (2).

Comillas simples.

Si se delimitan entre comillas simples (), las variables no se expanden y adems las nicas secuencias de escape que se reconocen son \\ y \' (barra invertida y comillas simples.)

M. en C. Gabriela de Jess Lpez Ruiz

9595

Tipos de datos. Strings (4).


Para concatenar cadenas se utiliza el operador . :
$cad = A esta cadena ; $cad = $cad . le vamos a aadir ms texto.;

Se puede acceder a cada carcter como si fuera un array:


$cad2 = Tercer carcter de \$cad : $cad[2];

M. en C. Gabriela de Jess Lpez Ruiz

9696

Constantes.
Las constantes se definen con la funcin define():
define(SALUDO, Hola, mundo!); echo La constante SALUDO vale . SALUDO; Las constantes en PHP se diferencian de las variables en que:

no llevan el smbolo del dlar delante. puede accederse a ellas desde cualquier parte del cdigo donde han sido definidas, sin restricciones de mbito como en las variables. no pueden ser redefinidas o borradas una vez definidas. slo pueden contener valores escalares, no vectores.
M. en C. Gabriela de Jess Lpez Ruiz 9797

Maysculas y minsculas.

Comportamiento funciones:

mixto

en

variables

En las variables, las maysculas y minsculas IMPORTAN. En los nombres de funciones y palabras reservadas, las maysculas NO IMPORTAN.
M. en C. Gabriela de Jess Lpez Ruiz 9898

Operadores aritmticos.

Operacin $a + $b $a - $b $a * $b $a / $b $a % $b

Nombre Suma Resta Multiplicacin Divisin Mdulo

Resultado Suma de $a y $b. Diferencia entre $a y $b. Producto de $a y $b. Cociente de $a y $b. Resto de la operacin $a/$b.

M. en C. Gabriela de Jess Lpez Ruiz

9999

Auto-incremento y auto-decremento.

Operacin Nombre ++$a $a++ --$a $a--

Resultado Incrementa $a en 1, y Pre-incremento devuelve $a (incrementado). Devuelve $a, y despus lo Post-incremento incrementa en 1. Decrementa $a en 1, y Pre-decremento despus lo devuelve. Devuelve $a, y despus lo Post-decremento incrementa en 1.

M. en C. Gabriela de Jess Lpez Ruiz

100100

Operadores de bits.
Operacin Nombre $a & $b $a | $b $a ^ $b ~ $a $a << $b $a >> $b Resultado Se ponen a 1 los bits que estn a Y 1 en $a y $b. Se ponen a 1 los bits que estn a O 1 en $a o $b. Se ponen a 1 los bits que estn a O Exclusivo 1 en $a o $b, pero no en ambos. Se invierten los bits (se cambian 1 No por 0 y viceversa.) Desplaza $b posiciones a la Desp. Izq. izquierda todos los bits de $a. Desplaza $b posiciones a la Desp. Drch. derecha todos los bits de $a.
M. en C. Gabriela de Jess Lpez Ruiz 101101

Operadores lgicos.

Operacin Nombre $a and $b Y $a or $b O $a xor $b ! $a $a && $b $a || $b

Resultado Cierto si $a Cierto si $a Cierto si $a O Exclusivo. ambos. No Cierto si $a Y Cierto si $a O Cierto si $a

y $b son ciertos. o $b es cierto. o $b es cierto, pero no es falso. y $b son ciertos. o $b es cierto.

M. en C. Gabriela de Jess Lpez Ruiz

102102

Operadores. Asignacin, igualdad e identidad.

Operacin Nombre

Resultado Asigna el valor de una variable o $a = $b Asignacin expresin del segundo trmino a la variable del primer trmino. Compara si el valor de los dos $a == $b Igualdad operandos es el mismo. Compara si el valor es el mismo y, $a === $b Identidad adems, el tipo coincide.

M. en C. Gabriela de Jess Lpez Ruiz

103103

Operadores. Asignacin, igualdad e identidad. Ejemplo.

$var1 = 1; // $var2 = 1; $var3 = 1; ($var1 == $var2) ($var1 == $var3) ($var1 === $var2) ($var1 === $var3)

Asignacin // // // // Cierto, son iguales Son iguales (tras conversin) Cierto, son idnticas FALSO, el tipo no coincide

M. en C. Gabriela de Jess Lpez Ruiz

104104

Operadores. Asignacin, igualdad e identidad. Error.

$var1 = 1; $var2 = 2; if( $var1 = $var2 ) { echo iguales; } else { echo distintas; }

M. en C. Gabriela de Jess Lpez Ruiz

105105

Comparaciones.

Operacin Nombre

Resultado Cierto si el valor de $a no es $a != $b No igual igual al de $b. Cierto si $a no es igual a $b, o $a !== $b No idntico si no tienen el mismo tipo. Cierto si $a es estrictamente $a < $b Menor que menor que $b. Cierto si $a es estrictamente $a > $b Mayor que mayor que $b. Cierto si $a es menor o igual $a <= $b Menor o igual que que $b. Cierto si $a es mayor o igual $a >= $b Mayor o igual que que $b.

M. en C. Gabriela de Jess Lpez Ruiz

106106

Operadores de cadenas.

$a = 1; $b = 2; $c = El resultado de . $a . + . $b . es . $a + $b;

M. en C. Gabriela de Jess Lpez Ruiz

107107

Atajos en la asignacin.

+=

-=

*=

/=

%=

&=

^=

.=

>>=

<<=

$var1 += 3; $var2 /= 2; $var3 >>= 1;

// $var1 = $var1 + 3; // $var2 = $var2 / 2; // $var3 = $var3 >> 1;

M. en C. Gabriela de Jess Lpez Ruiz

108108

Precedencia.

, or xor and print = += -= *= /= .= %= &= |= ^= ~= <<= >>= ?: || && |

^ & == != === !== < <= > >= << >> +-. */% ! ~ ++ -- (int) (double) (string) (array) (object) @ [ new

M. en C. Gabriela de Jess Lpez Ruiz

109109

Estructuras de control.

if elseif else

if (expresin) { comandos } if (expresin) { comandos_cierto } else { comandos_falso }

M. en C. Gabriela de Jess Lpez Ruiz

110110

Estructuras de control.

if elseif else (2)

if (expresion1) { comandos1 } elseif (expresion2) { comandos2 } elseif (expresion3) { comandos3 } ... else { comandosElse }

M. en C. Gabriela de Jess Lpez Ruiz

111111

while y do while

while (expresin) { comandos } do { comandos } while (expresin);

M. en C. Gabriela de Jess Lpez Ruiz

112112

for
for (expresin1; expresin2; expresin3) { comandos } $factorial5 = 1; for ($i = 2; $i <= 5; $i++ ) { $factorial5 *= $i; }

M. en C. Gabriela de Jess Lpez Ruiz

113113

for (2)
for ($factorial5 = 1, $i = 2; $i <= 5; $i++ ) { $factorial5 = $factorial5 * $i; } for ($factorial5=1, $i=2; $i<=5; $factorial5*=$i, $i++);

M. en C. Gabriela de Jess Lpez Ruiz

114114

for (3). ASP.

ASP <%FOR i=1 TO 100%> <%=MiVar%> <%NEXT%> // PHP <?php for ($i = 1; $i <= 100; $i++) { echo $MiVar; } ?>

M. en C. Gabriela de Jess Lpez Ruiz

115115

foreach
foreach (array as variable) { comandos } $a = array (1, 2, 3, 17); foreach ($a as $v) { print "Valor actual de \$a: $v.\n"; } // // // // Valor Valor Valor Valor actual de $a: 1 actual de $a: 2 actualC.de $a: Jess M. en Gabriela de 3 actual Lpez Ruiz 17 de $a:

116116

foreach (2)

foreach (array as indice => variable) { comandos }

M. en C. Gabriela de Jess Lpez Ruiz

117117

switch
switch (variable) { case valor1: comandos1 case valor2: comandos2 ... case valorN: comandosN default: comandosDefault }

M. en C. Gabriela de Jess Lpez Ruiz

118118

switch (2)
switch ($i) { case 1: echo Cdigo del 1; case 2: echo Cdigo del 2; case 3: echo Cdigo del 3; break; M. en C. Gabriela de Jess Lpez Ruiz
119119

Cierto o falso.

Valores numricos.

$x = 1; // $x if( $x ) // se evala a cierto $x = 0; // $x definida como el entero 0 if( $x ) // se evala a falso

M. en C. Gabriela de Jess Lpez Ruiz

120120

Cierto o falso.

Strings.

$x = "hello"; // asignamos una cadena a $x if( $x ) // se evala a cierto $x = ""; if( $x ) $x = "0"; if( $x ) // cadena vaca // evala a falso // // // // Excepcin: cero en una cadena evala a falso (se convierte a entero)

M. en C. Gabriela de Jess Lpez Ruiz

121121

Cierto o falso.

Arrays.

$x = array(); if( $x )

// $x es un array vaco // se evala como falso

$x = array( "a", "b", "c" ); if( $x ) // se evala a cierto

M. en C. Gabriela de Jess Lpez Ruiz

122122

Cierto o falso.

Objetos.

Class Yod {} // clase vaca $x = new Yod(); if( $x ) // se evala a falso Class Yod { // clase no vaca var $x = 1; } $x = new Yod(); if( $x ) // se evala a cierto

M. en C. Gabriela de Jess Lpez Ruiz

123123

Cierto o falso.

Constantes.

TRUE es el valor entero decimal 1. FALSE es la cadena vaca.

M. en C. Gabriela de Jess Lpez Ruiz

124124

Funciones.

function nombre ($arg_1, $arg_2, ..., $arg_n) { comandos return $salida; }

M. en C. Gabriela de Jess Lpez Ruiz

125125

Funciones. (2)

Ejemplo.

function factorial ($valor) { if ($valor < 0) { return 1; // Error } if ($valor == 0 ) { return 1; } if ($valor == 1 || $valor == 2) { return $valor; } $ret = 1; for ($i = 2; $i <= $valor; $i++) { $ret = $ret * $i; } return $ret; } $factorial5 = factorial(5);

M. en C. Gabriela de Jess Lpez Ruiz

126126

Funciones. (3)

Valores por defecto.

function enlace($url = www.php.net) { echo <a href= . $url . >Pulsa aqu</a>; }

M. en C. Gabriela de Jess Lpez Ruiz

127127

Funciones.

Argumentos por referencia.

function MiFuncion(&$var) { $var++; } $a = 5; MiFuncion($a); // Aqu $a == 6

M. en C. Gabriela de Jess Lpez Ruiz

128128

Funciones.

Devolucin por referencia.

function &buscar_cliente($nombre) { // ... buscamos ... return $registro; } $cliente = &buscar_cliente(Juan); echo $cliente->dni;

M. en C. Gabriela de Jess Lpez Ruiz

129129

include y require

require(cabecera.inc); If ($incluir == TRUE) { $ficheros = array(uno, dos, tres); foreach ($ficheros as $fichero) { include($fichero); } }

M. en C. Gabriela de Jess Lpez Ruiz

130130

Programando en PHP

M. en C. Gabriela de Jess Lpez Ruiz

131131

Forms.

Valores sencillos.

<form action="accion.php" method="POST"> Su nombre: <input type=text name=nombre><br> Su edad: <input type=text name=edad><br> <input type=submit> </form> Hola <?=$nombre?>. Tiene <?=$edad?> aos.

M. en C. Gabriela de Jess Lpez Ruiz

132132

Forms.

Valores mltiples.

<form action="accion.php" method="POST"> name=menu[]> <select multiple name=menu> <option>Tortilla <option>Paella <option>Fabada <option>Lentejas </select><input type=submit></form> <?php echo "Su eleccin:<br>"; foreach($menu as $plato) { echo "$plato<br>\n"; } ?>
M. en C. Gabriela de Jess Lpez Ruiz 133133

Cookies.

int setcookie (string nombre [, string valor [, int fin [, string camino [, string dominio [, int seguro]]]]]) setcookie(PruebaCookie, expirar dentro de una hora, time() + 3600); setcookie(PruebaCookie, , time());

M. en C. Gabriela de Jess Lpez Ruiz

134134

Sesiones.

bool session_start(void); bool session_register (mixed name [, mixed ...]) bool session_destroy(void); // Ejemplo, un contador session_start(); print($contador); $contador++; session_register("contador"); <A HREF="siguiente.php?<?=SID?>">Continuar</A>

M. en C. Gabriela de Jess Lpez Ruiz

135135

Tratamiento de errores.

$nombre = '/etc/shadow'; $fichero = @fopen ($nombre, 'r'); if( !$fichero ) { die("No se pudo abrir el fichero ($nombre)"); }

M. en C. Gabriela de Jess Lpez Ruiz

136136

Cadenas. Comparacin.

int strcmp (string str1, string str2) int strcasecmp (string str1, string str2) // Ejemplo: if (strcmp($a, $b) == 0) { echo iguales; }

M. en C. Gabriela de Jess Lpez Ruiz

137137

Cadenas. Subcadenas.

string substr (string cadena, int inicio [, int tamao]) $str $str $str $str = = = = substr('abcdef', substr('abcdef', substr('abcdef', substr('abcdef', 2, 3); -2); -2, 1); 1, -2); // // // // cde ef e bcd

M. en C. Gabriela de Jess Lpez Ruiz

138138

Cadenas. Subcadenas. (2)

int strpos (string cadena, string referencia [, int inicio]) int strrpos (string cadena, char referencia) string strstr (string cadena, string referencia) $i // $i // $s // $s // = strpos('cadena de prueba', 'de'); $i = 2 = strpos('cadena de prueba', 'de', 5); $i = 7 = strrpos('cadena de prueba', 'de'); $s = 7 = strstr('cadena de prueba', 'de'); $s = dena de prueba
M. en C. Gabriela de Jess Lpez Ruiz 139139

Cadenas.

Imprimir y formatear.

int printf (string formato [, mixed args...]) string sprintf (string formato [, mixed args...])
1. 2. 3. 4. 5.

Relleno Secuencias de formato Alineacin Nmero de caracteres Precisin Tipo


% b c d f o s x X El carcter de tanto por ciento. Entero en binario. Entero como carcter ASCII. Entero en decimal. Double en punto flotante. Entero en octal. Cadena. Entero en hexadecimal (minsculas). Entero en hexadecimal (maysculas).

M. en C. Gabriela de Jess Lpez Ruiz

140140

Cadenas.

Imprimir y formatear. (2)

printf(%02d/%02d/%04d, $dia, $mes, $ao); $pago1 = 68.75; $pago2 = 54.35; $pago = $pago1 + $pago2; // echo $pago mostrara "123.1" // Mostrar al menos un dgito entero y exactamente // dos decimales, rellenando con ceros printf ("%01.2f", $pago);

M. en C. Gabriela de Jess Lpez Ruiz

141141

Escapar caracteres. SQL.

$busca = DAlton; // Habr que escapar el apstrofe $sql = SELECT * FROM usuarios WHERE apellido = \ . addslashes($busca) . \;

M. en C. Gabriela de Jess Lpez Ruiz

142142

Escapar caracteres.

Shell.

string system (string comando [, int valor_salida]) echo system(finger $usuario); Qu pasa si $usuario=pepe ; apachectl stop ? string escapeshellcmd (string comando)

M. en C. Gabriela de Jess Lpez Ruiz

143143

Escapar caracteres. HTML.

$valor = a>b; echo <input type=hidden name=var value= . htmlspecialchars($valor) . >; // <input type=hidden name=var value=a&gt;b>

string nl2br (string cadena)

M. en C. Gabriela de Jess Lpez Ruiz

144144

Extraer campos.

array explode (string delimitador, string cadena [, int lmite]) $cadena = campo1:campo2:campo3; $campos = explode(:, $cadena); string implode (string delimitador, array campos) $cadena = implode(:, $campos);

M. en C. Gabriela de Jess Lpez Ruiz

145145

Extraer campos. Expresiones regulares.

array split (string delimitador, string cadena [, int lmite]) $fecha = "12/4 2000"; $campos = split ('[ /.-]', $fecha);

M. en C. Gabriela de Jess Lpez Ruiz

146146

Recorrer un array.
reset(), end(), next(), each(), current(), key() $arr = array(1,'cosa',1.57,'gato'=>'raton','perro'=>'gato'); current($arr); next($arr); current($arr); prev($arr); end($arr); current($arr); key($arr); reset($arr); each($arr); each($arr); each($arr); // // // // // // // // // // // 1 cosa cosa 1 gato gato perro 1 array(0,1) array(1,'foo') array(2,1.57)

M. en C. Gabriela de Jess Lpez Ruiz

147147

Ordenar un array.

sort(): Ordena el array por contenido en orden ascendente.

rsort(): Ordena por contenido en orden descendente.

ksort(): Ordena por el ndice en orden ascendente.

rksort(): Ordena por el ndice en orden descendente. M. en C. Gabriela de Jess

148148

Lpez Ruiz

Otras funciones.

Eliminar espacios en blanco: string trim (string cadena) string ltrim (string cadena) string rtrim (string cadena) Maysculas y minsculas: string strtoupper (string cadena) string strtolower (string cadena) string ucfirst (string cadena)

M. en C. Gabriela de Jess Lpez Ruiz

149149

Ficheros.

Abrir y cerrar.

int fopen (string nombre, string modo [, int include_path])

Modos: r Slo lectura. Puntero al inicio. r+ Lectura/escritura. Puntero al inicio. w Slo escritura. Se trunca el fichero. w+ Lectura/escritura. Se trunca el fichero. a Slo escritura. Puntero al final. int fclose (int identificador) a+ Lectura/escritura. Puntero al final.

M. en C. Gabriela de Jess Lpez Ruiz

150150

Ficheros. Leer y escribir.

string fgets (int identificador, int tamao) mixed fscanf (int identificador, string formato [, string var1...]) int feof (int identificador) array file (string fichero [, int include_path]) int fwrite (int identificador, string cadena [, int tamao])

M. en C. Gabriela de Jess Lpez Ruiz

151151

Ficheros.

Copiar / renombrar / borrar.

int copy (string origen, string destino) int rename (string origen, string destino) int unlink (string fichero)

M. en C. Gabriela de Jess Lpez Ruiz

152152

Directorios.

int chdir (string directorio) int mkdir (string nombre, int modo) int rmdir (string nombre)

int opendir (string nombre) string readdir (int identificador) void closedir (int identificador)

M. en C. Gabriela de Jess Lpez Ruiz

153153

Directorio.

Listado de contenidos.

$direcotrio = opendir('.'); while (($fichero = readdir($directorio)) !== FALSE) { echo "$fichero\n"; } closedir($directorio);
M. en C. Gabriela de Jess Lpez Ruiz 154154

Ficheros. Envo.

<FORM ENCTYPE="multipart/form-data" ACTION="recibir.php" METHOD=POST> <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000"> Fichero: <INPUT NAME="fichero" TYPE="file"> <INPUT TYPE="submit" VALUE="Enviar"> // Contenido de recibir.php </FORM> echo Recibido el fichero: ". $fichero_name."<br>; echo Tamao del fichero: . $fichero_size . <br>; echo Tipo mime: . $fichero_type . <br>; M. en C. Gabriela de Jess 155155 Lpez Ruiz rename($fichero, $fichero_name);

POO. Definicin de una clase.

class NombreClase { var $variables; function metodos ($parametros) { codigo } }

M. en C. Gabriela de Jess Lpez Ruiz

156156

POO. Definicin de una clase.


class Coche { var $velocidad; // Velocidad actual

Ejemplo.

// Constructor por defecto. El coche est parado. function coche() { $this->velocidad = 0; } // Constructor que indica la velocidad inicial. function coche($vel) { $this->velocidad = $vel; } // Mtodo acelerar. El coche va ms rpido. function acelerar() { $this->velocidad++; } // Mtodo frenar. El coche va ms lento hasta frenar. function frenar() { if ($this->velocidad > 0) { $this->velocidad--; } } }

M. en C. Gabriela de Jess Lpez Ruiz

157157

POO. Herencia.

class ClaseDerivada extends ClaseBase { // // // // } definicin de mtodos y variables exclusivos de ClaseDerivada, y redefinicin (especializacin) de mtodos de ClaseBase

M. en C. Gabriela de Jess Lpez Ruiz

158158

POO. Herencia.

Ejemplo.

class CocheFantastico extends coche() { // Frenado instantneo function frena() { $this->velocidad = 0; } // El coche habla! function habla() { echo Hola, Michael.; } // Salta! function salta() { echo Boing!!; } // Turbo propulsin function turbo() { $this->velocidad = 200; } }

M. en C. Gabriela de Jess Lpez Ruiz

159159

POO. Creacin y uso de objetos.

// Creacin (instanciacin) $MiCoche = new Coche; $MiCocheSeMueve = new Coche(10); // Uso $MiCoche->acelerar(); $MiCoche->acelerar(); $MiCoche->acelerar(); echo $MiCoche->velocidad; $MiCoche->frenar();

M. en C. Gabriela de Jess Lpez Ruiz

160160

BD. Conexin y desconexin.

int mysql_connect ([string servidor [:puerto] [:/camino/al/socket] [, string usuario [, string contrasea]]]) int mysql_close ([int identificador]) int mysql_pconnect ([string servidor [:puerto] [:/camino/al/socket] [, string usuario [, string contrasea]]]) int mysql_pclose ([int identificador])

M. en C. Gabriela de Jess Lpez Ruiz

161161

BD. Conexin y desconexin.

Ejemplo.

$link = mysql_connect ("www.mmlabx.ua.es", "nobody", ""); if (!$link) { die ("No se pudo conectar"); } print ("Conexin realizada"); mysql_close ($link);

M. en C. Gabriela de Jess Lpez Ruiz

162162

BD. Elegir una BD.

int mysql_select_db (string nombre_bd [, int identificador])

if (!mysql_select_db("prueba", $link)) { die (No existe la BD); }

M. en C. Gabriela de Jess Lpez Ruiz

163163

BD. Querys.
int mysql_query (string query [, int identificador]) int mysql_db_query (string nombre_bd, string query [, int identificador]) int mysql_free_result (int result) $query = "SELECT codigo, nombre, descripcion, creditos, tipo FROM asignatura"; $asignaturas = mysql_query($query, $link); if (!$asignaturas) { die (Error en el query); }

M. en C. Gabriela de Jess Lpez Ruiz

164164

BD. Extraer informacin.

int mysql_affected_rows ([int identificador]) int mysql_num_rows (int resultado) array mysql_fetch_row (int resultado) array mysql_fetch_array(int resultado [, int tipo_resultado]) object mysql_fetch_object (int result) array mysql_fetch_lengths (int M. en C. Gabriela de Jess Lpez Ruiz resultado)
165165

BD. Extraer informacin.

Ejemplos.

while ($fila = mysql_fetch_array($asignaturas)) { echo $fila[codigo] . . $fila[nombre] . \n; while ($fila = } mysql_fetch_object($asignaturas)) { echo $fila->codigo . . $fila>nombre . \n; }
M. en C. Gabriela de Jess Lpez Ruiz 166166

Acceso a BD unificado. Clase Conexin Generica.

class ConexionGenerica { var $link; function connect($servidor, $usuario, $clave) { echo "<h1>El m&eacute;todo <i>connect</i> ", "no est&aacute; implementado en la ", "clase <i>".get_class($this)."</i></h1>"; return FALSE; } function function function function function close() {} select_db($base_datos) {} query($query) {} fetch_array($resultado) {} free_result($resultado) {}

M. en C. Gabriela de Jess Lpez Ruiz

167167

Acceso a BD unificado. Clase ConexionMySQL.

require ("ConexionGenerica.inc"); class ConexionMySQL extends ConexionGenerica { function connect($servidor="localhost", $usuario="nobody", $clave="") { return $this->link = mysql_connect($servidor, $usuario, $clave); } function function function function function close() {} select_db($base_datos) {} query($query) {} fetch_array($resultado) {} free_result($resultado) {}

M. en C. Gabriela de Jess Lpez Ruiz

168168

Acceso a BD unificado. Uso.

// Fichero CreaConexion.inc require ("ConexionMySQL.inc"); $conexion = new ConexionMySQL(); require ("CreaConexion.inc"); $conexion->connect("localhost", "nobody"); $conexion->select_db("prueba", $link); $asignaturas = $conexion->query("SELECT codigo, nombre, descripcion,
M. en C. Gabriela de Jess Lpez Ruiz 169169

Repaso de JAVA

M. en C. Gabriela de Jess Lpez Ruiz

170170

Aplicaciones Web con tecnologa Java


Gabriela de Jess Lpez Ruiz

M. en C. Gabriela de Jess Lpez Ruiz

171171

Modelo de aplicaciones en Web


Arquitectura de 3 capas
Capa del cliente Capa intermedia Internet Hosts

Servidor web Motor de scripting Capa de base de datos Scripts Motor de base de datos

M. en C. Gabriela de Jess Lpez Ruiz

172172

Modelo de aplicaciones en Web


Arquitectura de Internet

Request

Cliente / Web browser

Response
Servidor / Web server
173173

Modelo de aplicaciones en Web


Clientes delgados
El cliente no implementa lgica de negocios Las reglas de negocio residen en el servidor Ventajas

No es necesario realizar instalaciones en el cliente. Actualizacin automtica de la versin en el cliente.

Desventajas

Exige un mayor poder de procesamiento en el servidor.

Clientes pesados
La lgica del negocio debe implementarse en el lado del cliente. Ventajas

Se libera de carga de trabajo al servidor

Desventajas

Es muy complicado mantener un control de las versiones instaladas en cada cliente.

M. en C. Gabriela de Jess Lpez Ruiz

174174

Modelo de aplicaciones en Web


La capa del cliente
Se encarga de mostrar y recolectar los datos del usuario. Normalmente es un navegador de Internet (Browser). El navegador solamente procesa HTML El servidor se encarga de atender la solicitudes (request) y procesar las respuestas (response). Los navegadores permiten, usar las aplicaciones desde diferentes plataformas. Algunos navegadores soportan lenguajes de procesamiento en el cliente (Javascript, vbscript, etc). Soporte a hojas de estilo y html dinmico.
M. en C. Gabriela de Jess Lpez Ruiz 175175

Modelo de aplicaciones en Web


La capa intermedia En la mayoras de sistemas de base de datos en web, la capa intermedia es responsable de implementar la lgica de negocios. Maneja la estructura y contenido de los datos. Procesa las entradas del usuarios para convertirlas en consultas a la base de datos. La capa intermedia integra la Web con el motor de base de datos. En este curso se va a usar el lenguaje de scripting JSP, como capa intermedia En este curso los componentes de la capa intermedia son: un servidor Web, un lenguaje de scripting y el motor del lenguaje de scripting.

M. en C. Gabriela de Jess Lpez Ruiz

176176

Modelo de aplicaciones en Web


La capa intermedia
JSP

Es uno de los lenguajes mas populares para el desarrollo de aplicaciones Web con acceso a base de datos. Razones para escoger JSP.

Lenguaje Java Multiplataforma (Sistema operativo, servidor web ) Acceso a toda la tecnologa de Java como JDBC. Ejecucin rpida de las aplicaciones Ejecuta los scripts mas rpido por el modelo de ejecucin, la primera vez que se invoca el JSP, se realiza la compilacin y carga en memoria, las llamadas posteriores son mucho mas rpidas.

M. en C. Gabriela de Jess Lpez Ruiz

177177

Modelo de aplicaciones en Web


La capa de base de datos
Es la base de una aplicacin de base de datos en Web El primer paso desarrollar una aplicacin en Internet

Entender los requerimientos, escoger el motor de Base de Datos (BD), disear la estructura y tablas.

Administra los datos (almacenamiento y recuperacin). Maneja actualizaciones simultaneas Proporciona esquemas de seguridad Asegura la integridad de los datos Proporciona servicios de soporte, para realizar backup, recuperacin en fallas, entre otros. Normalmente se usan RDMS en la capa de base de datos

M. en C. Gabriela de Jess Lpez Ruiz

178178

Modelo de aplicaciones en Web


La capa de base de datos Componentes de un DBMS

Interfaz para el desarrollo de aplicaciones Interprete de SQL Evaluador de consultas Acceso a datos Base de datos Hay mas de un usuario que necesita acceso a los datos al mismo tiempo Existe una cantidad considerable de datos Existen relaciones entre los datos almacenados Hay mas de un tipo de datos Hay reglas que deben cumplir los datos Se necesita generar nueva informacin o consolidarla a partir de los datos existentes

Cuando usar un DBMS

M. en C. Gabriela de Jess Lpez Ruiz

179179

Modelo de aplicaciones en Web


La capa de base de datos
MySQL

Es una motor de base de datos de escala media, con caractersticas de sistemas de gran escala. Tiene algunas limitaciones en la implementacin de SQL Permite acceso concurrente de cientos de usuarios, pero no de miles. Consultas anidadas y vistas, no estn completamente soportadas por MySQL. Sus limitaciones tienen un impacto menor en el desarrollo de las aplicaciones en Web. Para aplicaciones de alto rendimiento, se sugiere usar Postgres o algn motor comercial.

M. en C. Gabriela de Jess Lpez Ruiz

180180

Breve Historia de Java


M. en C. Gabriela de Jess Lpez Ruiz. gaby_dlib@yahoo.com.com

M. en C. Gabriela de Jess Lpez Ruiz

181181

Breve historia de java

En 1990 James Gosling inicia el desarroll el lenguaje OaK como una variante de C++ en la empresa SUN (Stanford University Network) con la intencin de operar cualquier mecanismo informtico (como licuadoras, lavaplatos, microondas, etc.) mediante un programas sencillos y simples que se distribuyen a travs de una red.

M. en C. Gabriela de Jess Lpez Ruiz

182182

Breve historia de Java

En 1994 se tuvo una versin que se pretenda abandonar por falta de un enfoque apropiado y para cerrarlo el equipo de desarrollo se reuni con Scott McNealy (presidente ejecutivo de SUN) quien vio un gran potencial en el nuevo lenguaje y lo apoy personalmente hasta su lanzamiento al mercado, para esto le cambi el nombre a Java y con el propsito de utilizarlo como plataforma para desarrollos en Internet.

M. en C. Gabriela de Jess Lpez Ruiz

183183

Breve historia de Java

En mayo de 1995 se hizo la presentacin en pblico de Java incluyndolo en el navegador Netscape generando as millones de copias en poco tiempo. Actualmente es uno de los lenguajes ms difundidos para desarrollo de aplicaciones multiplataformas que aprovechan la infraestructura de Internet

M. en C. Gabriela de Jess Lpez Ruiz

184184

Caractersticas de Java
.java .java .java

compilacin
.class .class .class

carga
Mquina Virtual de Java java.exe java appletviewer

ejecucin
UNIX Windows Solaris Linux Hardware

Java es un lenguaje Orientado a Objetos basado en Clases, usa herencia simple, es multiplataforma e interpretado (mediante la JVM, Maquina Virtual de Java, Java Virtual Machine), tiene diferentes tipos de programas: consola, applets, servlets y beans; los applets y servlets se usan directamente en Internet.

M. en C. Gabriela de Jess Lpez Ruiz

185185

Caractersticas de Java

Es un lenguaje de programacin. Es orientado a objetos. Es independiente de la plataforma. Es seguro. Es robusto.

M. en C. Gabriela de Jess Lpez Ruiz

186186

Java es un lenguaje de programacin orientado a objetos

Es un lenguaje de programacin orientado a objetos diseado para ser portable en diversas plataformas y sistemas operativos. Java fue desarrollado por Sun Microsystem, se diseo con base en el lenguaje de programacion C+ +.

M. en C. Gabriela de Jess Lpez Ruiz

187187

Java es un lenguaje de programacin orientado a objetos


Java puede hacer graficas interactivas, tiene caracteristicas especiales para internet, permite escribir programas, applets. Los applets se ejecutan dentro de una pgina Web. Al ejecutar un applet, el servidor remoto lo transmite a su navegador a travs de Internet.

M. en C. Gabriela de Jess Lpez Ruiz

188188

HOTJAVA

HOTJAVA es un navegador (como navigator o explorer). HOTJAVA fue el primer navegador que pudo bajar y ejecutar applets escritos en java.

M. en C. Gabriela de Jess Lpez Ruiz

189189

Java es orientado a objetos

Java es orientado a objetos, se puede usar para desarrollar programas en trminos de los datos y mtodos ( funciones ) que operan sobre ellos.

M. en C. Gabriela de Jess Lpez Ruiz

190190

Java es independiente de la plataforma

Al escribir y compilar un applet en Java, se genera un archivo independiente de la plataforma conocido como bytecode (se compone de ceros y unos). Un programa comn un bytecode no es especfico para cada procesador (Pentium de Intel o Motorola).

M. en C. Gabriela de Jess Lpez Ruiz

191191

Java es independiente de la plataforma

Una vez que el servidor ha enviado el cdigo al navegador, este lee e interpreta el bytecode a fin de ejecutar un applet. Para ejecutar el bytecode de esta forma, el interprete convierte los unos y ceros que el procesador de su computadora entiende. Cada plataforma de cmputo puede tener su propio intrprete de Java, sin embargo el bytecode es idntico. El bytecode multiplataforma es slo un aspecto de la portabilidad de Java.
M. en C. Gabriela de Jess Lpez Ruiz 192192

Java es seguro

Los applets puede ser una forma de algn programador malicioso cree un virus, pero los applets no pueden leer ni escribir archivos locales que residan en el disco. De esta manera los applets no pueden almacenar virus en su disco ni adjuntarlos a algn archivo.

M. en C. Gabriela de Jess Lpez Ruiz

193193

Java es robusto

Java es confiable, elimina muchos de los problemas de memoria comunes en lenguajes como C y C++. Java no soporta acceso directo a apuntadores a la memoria. Java es muy estrcito ms que C++ en cuanto a los tipos de datos (tipo de clasificacin) y requiere declaraciones explcitas para cada mtodo, reduciendo as los errores (excepcin de errores).

M. en C. Gabriela de Jess Lpez Ruiz

194194

Recursos para Utilizar Java


Kit de desarrollo (Software Development Kit, SDK), que incluye el compilador y la mquina virtual de Java, se obtiene del sitio de SUN, en el archivo: j2sdk-1_4_2-windows-i586.exe

java.sun.com
API (Application Program Interface, Interfase del Programador de Aplicaciones) de Java:

java.sun.com/api

Editar e invocador del compilador, se sugiere el uso de JCreator del sitio: www.jcreator.com
M. en C. Gabriela de Jess Lpez Ruiz 195195

Referencias de Java
Almanaque de Java www.javaalmanac.com El Libro electrnico Thinking in Java (Bruce Eckel)

www.mindview.net/Books/TIJ
Tutorial de Java (SUN)

java.sun.com/docs/books/tutorial
Tutorial de Java www.ulpgc.es/otros/tutoriales/java El libro 1001 C. Chang

Tips para programar en Java de Mark

El libro java de Kris Jamsa

M. en C. Gabriela de Jess Lpez Ruiz

196196

Instalacin del Compilador y del Editor


La instalacin del Compilador en Windows requiere dar doble click al archivo : j2sdk-1_4_2windows-i586.exe (durante la instalacin se sugiere dar las opciones por omisin) La instalacin del Editor JCreator en Windows, se hace despus de instalar el compilador, requiere dar doble click al archivo: setup.exe (durante la instalacin se sugiere dar las opciones por omisin)
M. en C. Gabriela de Jess Lpez Ruiz 197197

Primer programa de Java


class Hola { public static void main(String args[]) { System.out.println("hola amigos"); } } El editor JCreator se activa mediante el icono: La compilacin se hace presionando el cono: La ejecucin se hace mediante el cono:
M. en C. Gabriela de Jess Lpez Ruiz 198198

Entrada/Salida de la Consola
import java.io.*; class Hola { public static void main(String args[])throws IOException { BufferedReader consola = new BufferedReader( new InputStreamReader(System.in)); // DESPLEGA UN INDICADOR PARA LEER UN DATO System.out.print("Dato> ");

// LEE UNA cadena DE LA CONSOLA String cadena = consola.readLine(); // DESPLEGA LA cadena LEIDA System.out.println("Hola " + cadena);
M. en C. Gabriela de Jess Lpez Ruiz 199199

} }

Suma de dos nmeros


import java.io.*; class Hola { public static void main(String args[]) throws IOException { BufferedReader consola = new BufferedReader( new InputStreamReader(System.in)); int a, b ; // LEE EL dato A System.out.print("Dato A> "); String cadena = consola.readLine();

a = Integer.parseInt(cadena);
// LEE EL dato B System.out.print("Dato B> "); String cadena = consola.readLine();

b = Integer.parseInt(cadena);
// DESPLEGA LA SUMA System.out.println( + a + + + b + = + (a+b)); 200200 M. en C. Gabriela de Jess } Lpez Ruiz

Elementos del Lenguaje JAVA

M. en C. Gabriela de Jess Lpez Ruiz. gaby_dlib@yahoo.com.com

M. en C. Gabriela de Jess Lpez Ruiz

201201

Comentarios
En Java existen tres tipos de comentarios: De Resto de Lnea: while( x < 5 ) // COMENTARIO De Varias Lneas: /* COMENTARIO QUE OCUPA VARIAS LINEAS */ De Documentacin: /** programa.java ESTE ES UN COMENTARIO DE DOCUMENTACION, UTILIZADO POR EL en C. Gabriela de javadoc PROGRAMA Jess 202202 M. */ Lpez Ruiz

Literales

Una Literal es un valor constante. En la tabla se indican los tipos de literales


de Java y algunos ejemplos
M. en C. Gabriela de Jess Lpez Ruiz

203203

Identificadores de usuario
X y $temporal _auxiliar Los Identificadores de Usuario se usan para nombrar variables (tipos UnaClase
primitivos, u objetos), mtodos o clases. Se escriben con una inicial que puede ser letra mayscula o minscula, subraya (_) o el signo de pesos ($) seguidos por una secuencia de letras, nmeros o subraya. Letra significa cualquier smbolo unicode que represente una letra en cualquier idioma, es un valor entre cero y 65536. La longitud mxima de un identificador es de 64 caracteres y no deben Lpez Ruiz
M. en C. Gabriela de Jess 204204

Palabras reservadas

Las Palabras Reservadas son aquellas que tienen un uso especfico en el


lenguaje Java y No deben utilizarse como identificadores de usuario. Las que llevan asterisco (*) M. en C. Gabriela de Jess en la tabla estn reservadas para uso futuro 205205
Lpez Ruiz

Tipos de Datos Primitivos

Los Tipos de Datos Primitivos (TDP) son variables que se utilizan


directamente con los operadores del lenguaje Java (en vez de utilizar mtodos como ocurre con los objetos).

En la tabla se indican los TDP de Javade Jess espacio que ocupan en 206206 M. en C. Gabriela con el Lpez Ruiz memoria

Operadores

Los Operadores son smbolos (o grupos de smbolos) que


representan acciones que se aplican sobre literales o variables de Java.
207207 M. en C. Gabriela de Jess En la tabla se muestranLpez Ruiz los operadores de Java con su

Promocin
Si se tiene:

int x ; double y , PI = 3.1416; x = 5; y = x + PI;


en este caso se promociona x al tipo double antes de hacer la suma, la promocin es automtica

La Promocin se hace automticamente en Java cuando se aplica

algn operador, se asigna el tipo ms grande a los operadores que aparecen en la expresin, por ejemplo se estn sumando un int con un float, la suma se efectua promoviendo el int a float y de esta forma el 208208 M. en C. Gabriela de Jess resultado es float
Lpez Ruiz

Disfraz (casting)
Si se tiene:

int x ; double y , PI = 3.1416; x = (int) PI;


en este caso disfraza a PI de tipo int para asignarle valor a X aunque se pierde precisin (los decimales se pierden en este caso) Si fuera al revs de un int a un float no se pierde precisin y no es necesario hacer el casting porque se hace una promocin

Un Casting se utiliza cuando se quiere cambiar el tipo de un resultado


diferente al que se obtiene normalmente, por ejemplo int cuando el resultado es float. El tipo de dato del casting Jess 209209 M. en C. Gabriela de se escribe entre parntesis
Lpez Ruiz

Estructuras de Control
Secuencia
c A B A1

Decisin
e A2 A3

if v=inicial actualiza v A c

switch

Iteracin
A c

Recursin
A c do-while A

while

for

Las Estructuras de Control se utilizan para controlar el flujo de ejecucin de


M. en C. Gabriela mtodos las instrucciones en los de Jess de Java. Lpez Ruiz 210210

Estructuras de Control

El bucle FOR Son instrucciones repetitivas Sintaxis for(inicializacin;condicin de continuidad;expresin de variacin) { instrucciones a ejecutar de forma repetitiva }

M. en C. Gabriela de Jess Lpez Ruiz

211211

Estructuras de Control

Public class BucleFor1{ public static void main (String[ ] args) { int i; for (i=1;i<=4;i=+1) { System.out.println(i); } } }
M. en C. Gabriela de Jess Lpez Ruiz 212212

Estructuras de Control

Public class BucleFor2{ public static void main (String[ ] args) { int i; for (i=1;i<=10;i=-1) { System.out.println(i); } } }
M. en C. Gabriela de Jess Lpez Ruiz 213213

Estructuras de Control

Public class BucleFor3{ public static void main (String[ ] args) { int i; for (i=1;i<=20;i++) { System.out.println(i); } } }
M. en C. Gabriela de Jess Lpez Ruiz 214214

Estructuras de Control

Public class BucleFor4{ public static void main (String[ ] args) { int i; for (i=1;i<=10;i--) { System.out.println(i); } } }
M. en C. Gabriela de Jess Lpez Ruiz 215215

Estructuras de Control

Factorial de un nmero Factorial de k(k!)=k*(k-1)*(k-2)**2*1 Ejemplo: 4!=4*3*2*1=24 Public class Factorial{ public static void main(String[ ] args){ } }

M. en C. Gabriela de Jess Lpez Ruiz

216216

Estructuras de Control

/*Se declara el paquete para lectura desde el teclado*/ import java.io.*; public class Factorial { public static void main(String []args) { int n; //Variable que guardar el valor de nmero a calcular long valor;//Variable que guardar el Resultado valor = 1; //Lo inicializamos con 1 try{ //Para el manejo del error se utiliza en try... /*Declaracin de la de Jess 217217 M. en C. Gabriela variable Input q almacena Lpez Ruiz la

Estructuras de Control

{ }

/*Se lee lo q el usuario tecleo desde el teclado*/ String linea= buffer.readLine(); /*Se convierte el dato a un valor entero*/ n = Integer.parseInt(linea); /*Se realizan las operacines*/ for(long contador = 1; contador < n;contador++) valor *= (contador+1);

/*Se muestra el resultado final*/ System.out.println("El factorial de " + n + " es: "+ valor); } catch(IOException IO) //... para "cachar" el error y poder M. en C. Gabriela de Jess 218218 Lpez Ruiz // manipularlo

Estructuras de Control

El Bucle While Permite repetir la repetir la ejecucin de una serie de instruccin Sintaxis while(condicion de continuidad){ instrucciones a ejecutar de forma repetitiva }

do{ instrucciones a ejecutar de forma repetitiva } while(condicion de continuidad);


M. en C. Gabriela de Jess Lpez Ruiz 219219

Estructuras de Control

public class BucleWhile1{ public static void main(String [ ] args){ int i=1; while(i<=4){ system.out.printl(i); contador } } } i++; //no se debe olvidar incrementar el

M. en C. Gabriela de Jess Lpez Ruiz

220220

Estructuras de Control

public class BucleWhile2{ public static void main(String [ ] args){ int i=1; do{ system.out.printl(i); contador } } i++; //no se debe olvidar incrementar el } while(i<=4);

M. en C. Gabriela de Jess Lpez Ruiz

221221

Estructuras de Control
//Ejercicio imprimir numero primo public class Primo{ public static void main(String [ ] args){ int PosiblePrimo=17; Int Divisor=2; Boolean Primo=true; do{ Primo=(PosiblePrimo%divisor)!=0; Divisor++; } while(diviso<posibleprimo&&PriMo); system.Out.prntln(Prim); } }
M. en C. Gabriela de Jess Lpez Ruiz 222222

Estructuras de Control
Instruccin condicional if Es considerado como una estructura de control secuencial Sintaxis if(condicion) instruccin } if(condicion) if(condicion){ instruccin then instrucciones then else } else { instruccin else instrucciones else
223223

if(condicion){ instrucciones

M. en C. Gabriela de Jess Lpez Ruiz

Estructuras de Control
//Ejercicio public class if1{ public static void main(String [ ] args){ int EdadOswaldo=22, EdadMarisol=20;; if(EddOsvaldo<Edadmarisol) Marisol) else systm.Ot.prntln(Oswaldo no es mas joven que Marisol) } } systm.Ot.prntln(Oswaldo es mas joven que

M. en C. Gabriela de Jess Lpez Ruiz

224224

Excepciones
M. en C. Gabriela de Jess Lpez Ruiz. gaby_dlib@yahoo.com.com

M. en C. Gabriela de Jess Lpez Ruiz

225225

Excepcin
try { } catch( Exception nombre) { } finally { }

Una Excepcin es una alteracin en el flujo normal de


control, Las excepciones en Java se detectan dentro de un bloque try {} y si ocurre entre las llaves una excepcin se atrapa ejecutando el bloque catch(){} siempre y cuando la excepcin sea la indicada entre parntesis. Se pueden atrapar varias excepciones en bloques catch consecutivos. El 226226 bloque finally {}M. en C. Gabrielaambos casos se ejecuta en de Jess
Lpez Ruiz

Jerarqua de Java de Excepciones


Exception

IOException

ClassNotFoundException

Las Excepciones se organizan en una Jerarqua, donde la clase Exception es la de nivel superior, por lo que es comn para atrapar cualquier excepcin colocar Exception dentro del catch.
M. en C. Gabriela de Jess Lpez Ruiz 227227

Excepciones Definidas por el Usuario


Exception

MiExcepcion

Una Excepcin Definida por el Usuario se hace con una clase derivada de Exceptionen este ejemplo MiExcepcion se utiliza como culquier excepcin.
M. en C. Gabriela de Jess Lpez Ruiz 228228

JSP

Java Server Pages

M. en C. Gabriela de Jess Lpez Ruiz

229229

Servidores Web con soporte para JSP


Para poder publicar aplicaciones desarrolladas en JSP o Servlets, se debe realizar la instalacin de un servidor Web, algunas de las opciones son las siguientes: Apache Tomcat. Es la implementacin de referencia oficial para las especificaciones Servlet 2.2 y JSP 1.1. Puede ser usado como pequeo servidor para probar pginas JSP y servlets, o puede integrarse en el servidor Web Apache. Tomcat, al igual que el propio Apache es gratuito. JavaServer Web Development Kit (JSWDK). El JSWDK es la implementacin de referencia oficial para las especificaciones Servlet 2.1 y JSP 1.0. Se usaba como pequeo servidor para probar servlets y pginas JSP antes de desarrollar un completo servidor Web que soporta estas tecnologas.

230230

M. en C. Gabriela de Jess Lpez Ruiz

Servidores Web con soporte para JSP


Allaire JRun. JRun es un motor servelt y JSP que puede conectarse dentro de los servidores Netscape Enterprise o FastTrack, de los servidores Web IIS, Microsoft Personal Web Server, viejas versiones de Apache, OReillys WebSite, o StarNine WebSTAR. New Atlantas ServletExec. ServletExec es un rpido motor de servlets y pginas JSP que puede ser conectado dentro de los servidores web ms populares para Solaris, Windows, MacOS, HPUX y Linux. Podemos descargarlo y usarlo de forma gratuita, pero muchas de sus caractersticas avanzadas y utilidades de administracin estarn desactivadas hasta que compremos una licencia.

M. en C. Gabriela de Jess Lpez Ruiz

231231

Servidores Web con soporte para JSP - Descarga

Nuestro primer paso es descargar el software que implementa las especificaciones Java Servlet 2.1 o 2.2 y Java Server Pages 1.0 1.1. Podemos obtener una versin gratuita de Sun, conocida como "JavaServer Web Development Kit" (JSWDK), en http://java.sun.com/products/servlet/. La opcin mas popular es instalar el servidor Apache tomcat, que se puede descargar de : http://jakarta.apache.org/

M. en C. Gabriela de Jess Lpez Ruiz

232232

Servidores Web con soporte para JSP - Instalacin

Para este curso, usaremos el servidor web: Tomcat, aunque hay varias versiones disponibles, la mas estable es la versin 1.4.2 Antes de realizar la instalacin verificar que este correctamente instalada la versin de java. Deben existir las siguientes variables de entorno. JAVA_HOME=c:\j2sdk1.4.2
Nota: debe coincidir con el directorio donde esta instalada su versin de Java.

PATH=%PATH%;%JAVA_HOME%\bin CLASSPATH=%JAVA_HOME%\lib\tools.jar; %\jre\lib\rt.jar;. TOMCAT_HOME=Directorio donde instalar tomcat.


M. en C. Gabriela de Jess Lpez Ruiz 233233

%JAVA_HOME

Servidores Web con soporte para JSP - Instalacin

Ejecutar el instalador del servidor.

modificar el estilo de texto del patrn Haga clic para modificar el estilo de texto del patrn Segundo nivel Tercer nivel el Cuarto nivel vel Quinto nivel

234234 M. en C. Gabriela de Jess Lpez Ruiz

Servidores Web con soporte para JSP - Instalacin


Ejecutar el instalador del servidor.

ara modificar el estilo de texto del patrn vel ivel o nivel nto nivel Haga clic para modificar el estilo de texto del patrn Segundo nivel Tercer nivel Cuarto nivel Quinto nivel

235235

Servidores Web con soporte para JSP Estructura de directorios

modificar el estilo de textoHaga clic para modificar el estilo de texto del pat del patrn Haga clic para modificar el estilo de texto del patrn Servidor Segundo nivel Tercer nivel Segundo nivel Libreras comunes Tercer nivel Cuarto nivel vel Quinto nivel Haga clic nivel nivel Cuarto para modificar el estilo de texto del patrn Quinto nivel Segundo nivel Configuracin Tercer nivel Cuarto nivel Quinto nivel Contextos o aplicaciones

Aplicacin y recurs

Libreras para la aplicaci

Instalacin de Tomcat
Procedimiento de Instalacin para plataformas Haga clic para Microsoft Windows

Obtener el Instalador de Tomcat. Para la Tercer elaboracin de este curso se recomienda nivel usar versiones de Tomcat menores Cuarto nivel a la 5. jakarta-tomcat-4.1.27-LE-jdk14.exe

Segundo nivel

modificar el estilo de texto d

Ejecutar el Instalador. Lo primero que debe clic para modificar Haga mostrar es la versin de Java que encontr Segundo nivel instalado. Si no encontr ninguna, revisar la instalacin de Java. Tercer nivel
Cuarto nivel Aceptar los trminos de la licencia, y despus configurar la Instalacin. Nota, si desea que tomcat se ejecute automticamente, Quinto nivel entonces hacer click en la casilla NT Service (NT/2k/XP)

Quinto nivel

el estilo de texto

237237

Instalacin de Tomcat (2)


Indicar la ruta donde se va a instalar, este es el valor que debe tener la variableSegundo nivel de entorno TOMCAT_HOME, que veremos mas adelante.

Haga clic para modificar el estilo de texto d

Tercer nivel Durante la instalacin, se va a preguntarpor una clave y contrasea de administracin. Cuarto nivel Estas claves se usarn para reiniciar aplicacionesWeb, Quinto nivel sin bajar todo el servidor. Puede poner la
combinacin admin/123
JAVA_HOME CLASSPATH TOMCAT_HOME

Al terminar la instalacin, configurar las variables:

Haga clic para modificar el estilo de texto d Segundo nivel Tercer nivel Cuarto nivel Quinto nivel
238238 M. en C. Gabriela de Jess Lpez Ruiz

Hola Mundoclic para modificar el estilo de texto del Haga

Segundo nivel Tercer nivel Para el resto del curso se usar siempre la nivel Cuarto variable %TOMCAT_HOME%, para Haga clic para referirnos a la ruta donde se realiz laQuinto nivelmodificar el estilo de texto instalacin de tomcat. Segundo nivel 1.- Crear un archivo con el siguiente Tercer nivel Cuarto nivel contenido y guardarlo con el nombre Hola.jsp Quinto nivel 2.- Guardarlo en la siguiente ruta
%TOMCAT_HOME%/webapps/ROOT 3.- Levantar el servidor web (dejar la ventana ctiva). 4.- Abrir el navegador de Internet en la direccin: http://localhost:8080/Hola.jsp

239239

Envo y recepcn de Parmetros


formulario.html procesa.jsp

ga clic para modificar el estilo de texto del patrn Haga clic para modificar el estilo de texto del p undo nivel Segundo nivel Tercer nivel Tercer nivel Cuarto nivel Cuarto nivel Quinto nivel Quinto nivel a clic para modificar el estilo de Haga del patrn texto clic para modificar el estilo de texto d ndo nivel Segundo nivel Tercer nivel ercer nivel Cuarto nivel Cuarto nivel Quinto nivel Quinto nivel

240240

Objetos implicitos en JSP


Son objetos que no hay que declarar o inicializar y siempre estn disponibles dentro de los scriptlets y en las expresiones.

request. Es el objeto que nos permite recibir los parmetros de la peticin, el tipo de peticin y las cabeceras HTTP entrantes.

response. Es el objeto que encapsula la respuesta generada por la pgina JSP para ser enviada al cliente en respuesta a su peticin.

out. Escribe en el flujo de salida. El objeto out se usa casi exclusivamente en scriptlets

Session. Este es el objeto asociado con la sesion del usuario. Las sesiones se crean automticamente. La nica excepcin es usar el atributo session de la directiva page para desactivar las sesiones.

M. en C. Gabriela de Jess Lpez Ruiz

241241

Objetos implicitos en JSP(2)


application. Este es el ServletContext obtenido mediante getServletConfig().getContext() Tiene alcance de aplicacin. config. Este es el objeto ServletConfig para esta pgina. Tiene alcance de pgina. pageContext. JSP presenta una nueva clase llamada PageContext para encapsular caractersticas de uso especficas del servidor como JspWriters de alto rendimiento. Tiene alcance de pgina. page. Este objeto es un sinnimo de this, y no es muy til en Java. Fue creado como situacin para el da que se puedan utilizar otros lenguajes distintos de Java como lenguajes de script. Tiene alcance de pgina. exception. Es un objeto del tipo java.lang.Throwable que est disponible slo en las pginas de error.

M. en C. Gabriela de Jess Lpez Ruiz

242242

Tipos de construcciones en un JSP


Hay tres tipos de construcciones JSP que agregaremos en una pgina, a parte del cdigo HTML normal:
A) Directivas, nos permiten controlar la estructura general del servlet, B) Elementos de script, nos permiten especificar cdigo Java que se convertir en parte del servlet resultante C) Acciones, nos permiten especificar componentes que deberan ser usados, y de otro modo controlar el comportamiento del motor JSP.
M. en C. Gabriela de Jess Lpez Ruiz 243243

A) Directivas
Son mensajes dirigidos al motor JSP. Se usan para establecer valores globales tales como una declaracin de clase, mtodos que tienen que ser implementados, tipo del contenido de salida, etc. No producen ninguna salida en el cliente. Hay tres tipos de directivas: (page, include, taglib) page. Se aplica a una pgina JSP completa, y a cualquier fichero esttico que incluya con la directiva include o <jsp:include>

Sintaxis: <% @ page [ language =java] [ extends =package.class] [ import ={package.class | package.* }, ... ] [ session =true | false] [ buffer =none | 8kb |sizekb] [ autoFlush =true | false] [ isThreadSafe =true | false ] [ info =text] [ errorPage =URLrelativa] [ contentType =mimeType [;charset=characterSet]|text/html;charset=ISO-8859-1] [ isErrorPage =true | false] %>

M. en C. Gabriela de Jess Lpez Ruiz

244244

A) Directivas (2)
include. Esta directiva indica al motor JSP que debe incluir, en la posicin especificada, el archivo indicado en el momento en el que la pgina JSP es traducida a un servlet. Sintaxis: <%@ include file="url relativa" %> taglib. Esta directiva permite a la pgina usar etiquetas definidas por el usuario. Sintaxis: <%@ taglib url="tagLibraryURL" prefix="tagPrefix" %>

M. en C. Gabriela de Jess Lpez Ruiz

245245

B) Elementos de script
Los elementos de script nos permiten insertar cdigo Java dentro del servlet que se generar desde la pgina JSP actual. Hay tres formas:

1) Expresiones Una expresin JSP se usa para insertar valores Java directamente en la salida, La expresin Java es evaluada, convertida a un String, e insertada en la pgina. .

Sintaxis: <%= exprexin java %> Ej. <%=nombre%>

M. en C. Gabriela de Jess Lpez Ruiz

246246

B) Elementos de script
Los elementos de script nos permiten insertar cdigo Java dentro del servlet que se generar desde la pgina JSP actual. Hay tres formas:

2) Scriptlets Bloque de cdigo Java que se incluye dentro del mtodo service() del servlet generado. Sintaxis: <% cdigo Java %>
Ej. <% if ( materias != null)

for ( int i = 0 ; i < materias.length ; i++) out.println(materias[i]); %>

Cuando mezclamos elementos de script con etiquetas HTML y JSP, siempre debemos terminar un elemento de script antes de empezar a usar etiquetas y luego reabrir el elemento de script

M. en C. Gabriela de Jess Lpez Ruiz

247247

B) Elementos de script(2)

3) Declaraciones. Una declaracin JSP nos permite definir mtodos o campos que sern insertados dentro del cuerpo principal de la clase servlet (fuera del mtodo service que procesa la peticin). Es decir, nos permite definir variables o y mtodos globales.

Sintaxis: <% ! Cdigo Java %>

Ejemplo: <% ! private int a=0; %>

M. en C. Gabriela de Jess Lpez Ruiz

248248

C) Acciones
Son etiquetas especficas que afectan al comportamiento en tiempo de ejecucin de la pgina JSP y a la respuesta generada para el cliente.
Podemos insertar un fichero dinmicamente, reutilizar componentes JavaBeans, reenviar al usuario a otra pgina o generar HTML para el plug-in Java.

<jsp:include> Esta accin nos permite insertar ficheros en una pgina que est siendo generada. Sintaxis: <jsp:include page="relative URL" flush="true" /> <jsp:useBean> Encuentra o instanca un JavaBean

<jsp:setProperty> Establece un valor a una propiedad de un JavaBean jsp:getProperty Inserta el valor de una propiedad de un JavaBean en la salida. jsp:forward Esta accin nos permite reenviar la peticin a una pgina esttica, a otra pgina JSP o un servlet que pertenezca al mismo contexto que la pgina actual. Tiene un solo atributo, page, que establece una URL relativa. Este podra ser un valor esttico o podra ser calculado en el momento de la peticin. Sintaxis: <jsp:forward page=URLrelativa />

M. en C. Gabriela de Jess Lpez Ruiz

249249

Consultar un registro de la BD

Haga del patrn clic para modificar el estilo de textoclic para modificar el estilo de texto del p Segundo nivel do nivel Tercer nivel rcer nivel Cuarto nivel Cuarto nivel Quinto nivel Quinto nivel Formulario.html Haga clic para modificar el estilo de texto del patrn Segundo nivel Tercer nivel Cuarto nivel Quinto nivel

250250 M. en C. Gabriela de Jess Lpez Ruiz

Consultar un registro de la BD

Haga del patrn c para modificar el estilo de textoclic para modificar el estilo de texto del pa Segundo nivel nivel Tercer nivel er nivel Cuarto nivel arto nivel Quinto nivel uinto nivel Relacion.jsp Haga clic para modificar el estilo de texto del patrn Segundo nivel Tercer nivel Cuarto nivel Quinto nivel

Sigue
251251 M. en C. Gabriela de Jess Lpez Ruiz

Consultar un registro de la BD

a clic para modificar el estilo de textopara patrn Haga clic del modificar el estilo de texto del pa ndo nivel Segundo nivel Tercer nivel ercer nivel Cuarto nivel Cuarto nivel Quinto nivel Quinto nivel Relacion.jsp

252252 M. en C. Gabriela de Jess Lpez Ruiz

Consultar un registro de la BD

Haga del patrn ic para modificar el estilo de textoclic para modificar el estilo de texto del p Segundo nivel o nivel Tercer nivel er nivel Cuarto nivel uarto nivel Quinto nivel Quinto nivel

253253

Das könnte Ihnen auch gefallen