Está en la página 1de 35

PONTIFICIA UNIVERSIDAD CATLICA DEL PER Ingeniera de las Telecomunicaciones

LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 INF228


LABORATORIO NMERO:

SEMESTRE : 2009 - 1

TEMA:

INTRODUCCIN A JSP Y JDBC

OBJETIVOS:
Poder desarrollar aplicaciones web usando JSPs. Conocer algunas caractersticas bsicas de JSPs Crear y Utilizar de forma bsica los JDBC. ACTIVIDADES A REALIZAR
No. DESCRIPCIN 0 Prueba de Entrada 1 Introduccin Aplicaciones Web , Servlets, JSP y JDBC 2 Desarrollo de los ejercicios propuestos en la evaluacin del laboratorio. DURACIN PUNTAJE -

Advertencia
El desarrollo de las actividades contenidas en esta gua es de carcter estrictamente personal. Cualquier falta de probidad (plagio) que a criterio del Jefe de Prctica sea cometida, ser sancionada con la nota CERO no anulable para todos los involucrados, los cuales sern adems sancionados de acuerdo con el Reglamento Disciplinario de la PUCP.

Importante
Todos los programas que figuran en la presente gua (y los archivos ledos y/o generados por stos) debern ser grabados en una carpeta especialmente creada para tales efectos, la cual ser referida a lo largo de la gua como su carpeta de trabajo.

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

1. Introduccin En nuestra experiencia de navegar en Internet nos hemos encontrado con las pginas Web el cual es un documento de la World Wide Web, normalmente en formato HTML que proviene del estndar SGML o XHTML que proviene del estndar XML. Algunas de estas pginas web son dinmicas ya que dependen de una aplicacin que vara su contenido por ejemplo las que uno observa al entrar a un webmail ya que su contenido vara automticamente dependiendo del usuario que se logue, etc; tambin tenemos las pginas web estticas aquellas cuyo contenido vara pero de forma manual. Toda pgina Web es distribuida por medio de un Servidor Web el cual podra ser Apache, el IIS (Internet Information Service), Tomcat, JBOSS, etc. El servidor Tomcat es un Servidor de Aplicaciones que cumple las especificaciones de servlets y jsp.

Estructura de Directorios de Tomcat 5.X

Pg. 2

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

2. Servlets

Un Servlet es una clase Java usada para extender la capacidad de las aplicaciones basadas en el modelo cliente servidor y ejecucin peticin respuesta. Los Servlets son una potente herramienta para la generacin de contenido dinmico en la Web. El Servlet Container es el componente encargado de la creacin, acceso y destruccin de los Servlets, controla su ciclo de vida.

2.1 Arquitectura de los Servlets El principal componente de la Servlet API es la interfaz Servlet. Todos los servlets implementan esta interfaz directamente, por medio de la extensin de la clase que la implementa, HttpServlet. Esta interfaz est provista de mtodos que manipulan a los servlets y la comunicacin con sus clientes. Cuando un servlet es llamado desde un cliente, este recibe dos objetos: ServletRequest y ServletResponse. La interfaz ServletRequest se encarga de la comunicacin desde el cliente al servidor, mientras que la interfaz ServletResponse atiende la comunicacin desde el servlet al cliente.

Las clases e interfaces descritas conforman a un servlet bsico. Pero existen mtodos adicionales que provee la API con la capacidad para controlar sesiones o mltiples conexiones, entre muchas ms aplicaciones.
Pg. 3

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

3. JSP Un JSP, es una pgina dinmica de servidor Java. Este tipo de archivo de texto esta compuesto de: 1. Cabecera con importaciones y parmetros. 2. Cdigo cliente, normalmente HTML, XML y Javascript. 3. Cdigo servidor Java, denominado Scriptlet y escrito entre los caracteres <% y %>. 4. Tags: instrucciones en formato XML, asociadas a clases Java. Un dato muy importante es que un JSP se transforma en un Servlet en tiempo de ejecucin esto se observa claramente en la siguiente grfica:

La primera vez que se realiza una peticin sobre un JSP el JSP Engine lo traduce en un Servlet, lo compila y lo procesa. En sucesivas peticiones simplemente se procesa a travs del Servlet Container. Esta puede estar conformada de las siguientes partes:

Cdigo esttico HTML Directivas JSP Scripts de elementos y variables JSP Actions JSP Tags Customizables

Pg. 4

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

3.1. Directivas JSP

3.1.1 Directiva page La directiva page nos permite definir uno o ms de los siguientes atributos sensibles a las maysculas:

import="package.class" import="package.class1,...,package.classN". Esto nos permite especificar los paquetes que deberan ser importados. Por ejemplo:

<%@ page import="java.util.*" %> El atributo import es el nico que puede aparecer mltiples veces.

contentType="MIME-Type" contentType="MIME-Type; charset=Character-Set" esto especifica el tipo MIME de la salida. El valor por defecto es text/html. Por ejemplo, la directiva: <%@ page contentType="text/plain" %> tiene el mismo valor que el scriptlet <% response.setContentType("text/plain"); %> isThreadSafe="true|false". Un valor de true (por defecto) indica un procesamiento del servlet normal, donde mltiples peticiones pueden procesarse simultneamente con un slo ejemplar del servlet, bajo la suposicin que del autor sincroniza las variables de ejemplar. Un valor de false indica que el servlet debera implementar SingleThreadModel, con peticiones enviadas serialmente o con peticiones simultneas siendo entregadas por ejemplares separados del servlet. session="true|false". Un valor de true (por defecto) indica que la variable predefinida session (del tipo HttpSession) debera unirse a la sesin existente si existe una, si no existe se debera crear una nueva sesin para unirla. Un valor de false indica que no se usarn sesiones, y los intentos de acceder a la variable session resultarn en errores en el momento en que la pgina JSP sea traducida a un servlet. buffer="sizekb|none". Esto especifica el tamao del buffer para el JspWriter out. El valor por defecto es especfico del servidor, debera ser de al menos 8kb. autoflush="true|false". Un valor de true (por defecto) indica que el buffer debera descargase cuando est lleno. Un valor de false, raramente utilizado, indica que se debe lanzar una excepcin cuando el buffer se sobrecargue. Un valor de false es ilegal cuando usamos buffer="none". extends="package.class". Esto indica la superclase del servlet que se va a generar. Debemos usarla con extrema precaucin, ya que el servidor podra utilizar una superclase personalizada. info="message". Define un string que puede usarse para ser recuperado mediante el mtodo getServletInfo. errorPage="url". Especifica una pgina JSP que se debera procesar si se lanzar cualquier Throwable pero no fuera capturado en la pgina actual.
Pg. 5

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

isErrorPage="true|false". Indica si la pgina actual acta o no como pgina de error de otra pgina JSP. El valor por defecto es false. language="java". En algunos momentos, esto est pensado para especificar el lenguaje a utilizar. Por ahora, no debemos preocuparnos por l ya que java es tanto el valor por defecto como la nica opcin legal Ejemplo:

3.1.2 Directiva include JSP Esta directiva nos permite incluir ficheros en el momento en que la pgina JSP es traducida a un servlet. La directiva se parece a esto:

3.2 Scriptlets JSP Si queremos hacer algo ms complejo que insertar una simple expresin, los scriptlets JSP nos permiten insertar cdigo arbitrario dentro del mtodo servlet que ser construido al generar la pgina. Los Scriptlets tienen la siguiente forma: <% Cdigo Java %> Ejemplo:

Pg. 6

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

3.3 Variables Predefinidas Para simplificar el cdigo en expresiones y scriplets JSP, tenemos ocho variables definidas automticamente, algunas veces llamadas objetos implcitos. Las variables disponibles son: request, response, out, session, application, config, pageContext y page. 3.3.1 request Este es el HttpServletRequest asociado con la peticin, y nos permite mirar los parmetros de la peticin (mediante getParameter), el tipo de peticin (GET, POST, HEAD, etc.), y las cabeceras HTTP entrantes (cookies, Referer, etc.). Estrictamente hablando, se permite que la peticin sea una subclase de ServletRequest distinta de HttpServletRequest, si el protocolo de la peticin es distinto del HTTP. Esto casi nunca se lleva a la prctica.
T

3.3.2 response Este es el HttpServletResponse asociado con la respuesta al cliente. Observa que, como el stream de salida (ver out ms abajo) tiene un buffer, es legal seleccionar los cdigos de estado y cabeceras de respuesta, aunque no est permitido en los servlets normales una vez que la salida ha sido enviada al cliente. 3.3.3 out Este es el PrintWriter usado para enviar la salida al cliente. Sin embargo, para poder hacer til el objeto response (ver la seccin anterior), esta es una versin con buffer de PrintWriter llamada JspWriter. Observa que podemos ajustar el tamao del buffer, o incluso desactivar el buffer, usando el atributo buffer de la directiva page. Tambin observa que out se usa casi exclusivamente en scriptlets ya que las expresiones JSP obtienen un lugar en el stream de salida, y por eso raramente se refieren explcitamente a out. 3.3.4 session Este es el objeto HttpSession asociado con la peticin. Recuerda que las sesiones se crean automticamente, por ello esta variable se une incluso si no hubiera una sesin de referencia entrante. La nica excepcin es usar el atributo session de la directiva page para desactivar las sesiones, en cuyo caso los intentos de referenciar la variable session causarn un error en el momento de traducir la pgina JSP a un servlet.

Pg. 7

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

3.4 Accin 3.4.1 Accin jsp:useBean Esta accin nos permite cargar y utilizar un JavaBean en la pgina JSP. Esta es una capacidad muy til porque nos permite utilizar la reusabilidad de las clases Java sin sacrificar la conveniencia de aadir JSP sobre servlets solitarios. La sintaxis ms simple para especificar que se debe usar un Bean es:

Esto normalmente significa "ejemplariza un objeto de la clase especificada por class, y unido a una variable con el nombre especificado por id". Sin embargo, tambin podemos especificar un atributo scope que hace que ese Bean se asocie con ms de una sola pgina. Ahora, una vez que tenemos un bean, podemos modificar sus propiedades mediante jsp:setProperty, o usando un scriptlet y llamando a un mtodo explcitamente sobre el objeto con el nombre de la variable especificada anteriormente mediante el atributo id. Recuerda que con los beans, cuando decimos "este bean tiene una propiedad del tipo X llamada foo", realmente queremos decir "Esta clase tiene un mtodo getFoo que devuelve algo del tipo X, y otro mtodo llamado setFoo que toma un X como un argumento". La accin jsp:setProperty se describe con ms detalle en la siguiente seccin, pero ahora observemos que podemos suministrar un valor explcito, dando un atributo param para decir que el valor est derivado del parmetro de la peticin nombrado, o slo lista las propiedades para indicar que el valor debera derivarse de los parmetros de la peticin con el mismo nombre que la propiedad. Leemos las propiedades existentes en una expresin o scriptlet JSP llamando al mtodo getXxx, o ms comnmente, usando la accin jsp:getProperty. No olvidar que todas las clases que se usan deben ir en el directorio classes o si es un fichero JAR en el directorio lib, no en el directorio servlets. 3.4.2 Accin jsp:getProperty Este elemento recupera el valor de una propiedad del bean, lo convierte a un string, e inserta el valor en la salida. Los dos atributos requeridos son name, el nombre de un bean referenciado anteriormente mediante jsp:useBean, y property, la propiedad cuyo valor debera ser insertado. Aqu tenemos un ejemplo:

Pg. 8

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

3.4.3 Accin jsp:forward Esta accin nos permite reenviar la peticin a otra pgina. Tiene un slo atributo, page, que debera consistir en una URL relativa. Este podra ser un valor esttico, o podra ser calculado en el momento de la peticin, como en estos dos ejemplos:

Ejercicios prcticos

Se trabajar con el Servidor Tomcat que viene por defecto en el IDE Netbeans 6.5, luego se debe crear un Nuevo Proyecto para ello seleccionar File > New Project .. ( Crtl + Shift + N ) En el wizard seleccionamos en Categoras : Web y en Proyectos: Web Application y luego Siguiente (Next)

Pg. 9

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

Se coloca el nombre del Proyecto: WebJSP, la ubicacin fsica de este en la PC y luego Siguiente (Next).

Luego en Servidor (Server): Apache Tomcat 6.X, lo dems se mantiene igual y luego Finalizamos (Finish).

Pg. 10

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

Nota.- Se debe apreciar que en Context Path hace referencia a como accederemos a la aplicacin http://....../WebJSP esto se ver mas adelante. Como resultado se debe observar en el IDE

Modificamos el contenido de index.jsp usando los Scriptlets antes mencionados que nos permite colocar cdigo java directamente

Pg. 11

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

Luego se debe Ejecuta el Proyecto : Run > Run Main Project resultado obtenido seria :

(F6) y el

Aadimos otro archivo JSP : File > New Ctrl + N y en el Wizard en Categoras seleccionar Web y en tipo de archivo JSP y luego Siguiente:

Pg. 12

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

El nombre del archivo ser index2

Pg. 13

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

Luego colocar el siguiente cdigo en el archivo index2:

index3.jsp recibe los datos

index2.jsp

Pg. 14

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

Del cdigo anterior se observa que el valor que se coloque en los campos dato_nombre y dato_apellido ser enviado a otro archivo jsp (index3.jsp). Luego crear el package beans y dentro crear la clase Persona que tiene el siguiente cdigo:

Pg. 15

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

Luego aadir otro archivo JSP y llamarlo index3 y colocar el siguiente cdigo:

index3.jsp El archivo index3 recupera los valor enviados por index2.jsp y los muestra. Como array_persona es una variable de session los valores se almacenan mientras dure la sesin, esto se verifica insertando varios datos.

Pg. 16

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

4. JDBC Es el acrnimo de Java Database Connectivity, es un API (incluida tanto en las diferentes versiones de J2SE y J2EE) que permite la ejecucin de operaciones mediante sintaxis SQL sobre bases de datos desde el lenguaje de programacin Java. Entre las operaciones que se podran realizar con la base de datos a las que tenga permiso son: consultas, actualizaciones, creado, modificado y borrado de tablas, etc. El api JDBC se puede encontrar en los paquetes: java.sql y javax.sql

java.sql.Connection Es la interfaz del paquete java.sql que representa la conexin con la base de datos. Pasos para obtener una conexin : Class.forName("com.mysql.jdbc.Driver").newInstance(); Siempre se debe indicar el driver de la base de datos que se vaya utilizar. Mediante la clase DriverManager (Gestor de drivers para acceso a bases de datos) obtenemos la conexin pasando como parmetros la cadena de conexin especificada por el proveedor de base de datos, usuario y password. La cadena de conexin suele llevar incluido la mquina (host) y puerto (port) donde se encuentra la instancia de base de datos a la que accedemos. Connection conn = DriverManager.getConnection ("jdbc:mysql://host:port/db,admin,pass); // Mysql Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@HOST:PORT:SID",admin,pass); // ORACLE

Pg. 17

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

java.sql.Statement Es el objeto utilizado para ejecutar las sentencias SQL, el cual debe pedrselo al objeto Connection. Statement stmt = conn.createStatement(); A travs del objeto Statement podemos lanzar las sentencias SQL. Los mtodos ms utilizados para ejecutar SQL son: executeUpdate, executeQuerie o execute. obtener una conexin : int updates = stmt.executeUpdate(update USUARIOS set TLF = 917658991 where COD = 1 ); stmt.close(); conn.close(); El cierre de los objetos al finalizar su uso es muy importante en el orden correspondiente al ltimo abierto. java.sql.PreparedStatment La interfase PreparedStatement deriva directamente de Statement. Si queremos ejecutar muchas veces un objeto Statement, reduciremos el tiempo de ejecucin si utilizamos un objeto PreparedStatement, en su lugar. PreparedStatement pstmt = conn.prepareStatement(update USUARIOS set TLF = ? where COD = ? ); pstmt.setString(1, 917658991); pstmt.setString(2, 1); pstmt.close(); java.sql.ResultSet Es el objeto en el cual se almacenan el resultado de las consultas, se obtiene a travs del Statement, PreparedStament, CallableStament. Por ejemplo a travs del Statement obtenido lanzamos consultas con el mtodo executeQuery, este mtodo nos devuelve un objeto Resultset con el resultado de la consulta. Pasos para obtener: ResultSet rs = stmt.executeQuery(SELECT * FROM EMPLOYEES); while(rs.next()) { System.out.println(rs.getString(first_name)); System.out.println(rs.getString(last_name)); }
Pg. 18

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

Para obtener los datos debemos ejecutar siempre el mtodo next del Resultset, este mtodo devuelve true/false en funcin de la disponibilidad de datos. rs.close(); Una vez procesada la informacin debemos cerrar el resultset. Existen otras muchas interfaces en los paquetes java.sql y javax.sql las anteriores servirn para los siguientes ejemplos. Ejercicio prctico Se tienen las siguientes pantallas: Se tiene una pantalla de inicio donde luego se selecciona Lista de Empleados Nuevo Empleado:

Pg. 19

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

Al seleccionar Lista de Empleados muestra una lista de personas con la informacin por columnas del Nombre, Apellido, Departamento y Email y una columna adicional que permite Borrar la fila correspondiente como se muestra en la siguiente pantalla.

Si hacemos clic en el enlace de William nos muestra la informacin del empleado del respectivo ID como se muestra en la siguiente pantalla.

Como se observa se tiene los Botones Inicio y Actualizar, el primero nos enva a la pantalla de inicio y el segundo guarda cualquier modificacin realizada en el campo de texto correspondiente al Email y retornar a la pantalla de Lista de Empleados.

Pg. 20

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

Para poder realizar lo anterior se tiene el siguiente esquema hr.

Para poder obtener las pantallas y el respectivo flujo entre ellas se crea el siguiente proyecto. Para poder obtener las pantallas y el respectivo flujo entre ellas se crea el proyecto: WebMysql igual que en el ejercicio anterior, se crea 4 nuevos jsp: o lista_employee.jsp (Muestra lista de Empleados) o data_employee.jsp o update_employee.jsp

Adems se crea un package llamado conn y dentro los packages: bean y dao. Dentro de conn.bean crear las clases: BEmployee.java, BDepartments.java y BJobs.java Dentro de conn.servlet crear: DBase.java, DEmployees.java y DDepartments.java Se tendra:

Pg. 21

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

Adicionalmente se debe agregar la librera necesaria para conectarse a la BD MySql para esto seleccionar con el botn derecho el Proyecto WebMysql y hacer click en Propiedades.

Pg. 22

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

Hacer click en el botn Add Library, adicionar la librera MySQL JDBC Driver y luego hacer click en el botn Ok

La estructura de BEmployee.java tiene en cuenta los campos de la tabla Employees como se muestra en el cdigo:

Pg. 23

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

Pg. 24

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

La estructura de BDepartments.java tiene en cuenta los campos de la tabla Departments como se muestra en el cdigo:

Pg. 25

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

La estructura de BJob.java tiene en cuenta los campos de la tabla Jobs como se muestra en el cdigo:

Pg. 26

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

La clase DBase.java permite cargar el driver para MySQL, colocar la direccin, usuario y contrasea adecuados de la base de datos como se muestra en el siguiente cdigo:

Usuario Contrasea

La clase DEmployee.java permite obtener del esquema hr , la lista de usuarios: List(); los datos de trabajador en funcin de su id: Data(int employee_id); y actualizar el correo de un usuario por medio de un objeto del tipo BEmployee: Update(BEmployee bemployee) como se muestra en el siguiente cdigo:

Pg. 27

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

Pg. 28

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

Pg. 29

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

Pg. 30

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

La clase DDepartments.java permite obtener del esquema hr , la lista de Departamentos: DepartmentsList();como se muestra en el siguiente cdigo:

Pg. 31

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

El jsp index tiene 2 links como se muestra en el siguiente cdigo:

El jsp list_employee muestra la informacin del empleado:

Pg. 32

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

Pg. 33

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

El jsp data_employee muestra la informacin del usuario seleccionado en la list_employee.jsp:

Pg. 34

INGENIERA DE LAS TELECOMUNICACIONES LABORATORIO DE SOFTWARE PARA TELECOMUNICACIONES 2 2009-1

El jsp update_employee actualiza el valor del email del usuario indicado por el parmetro employee_id:

Para finalizar solo resta ejecutar el Proyecto

presionar F6.

Pg. 35

También podría gustarte