2015 CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA

Tamaño: px
Comenzar la demostración a partir de la página:

Download "2015 CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA"

Transcripción

1 CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA Ings. Mario Bressano & Miguel Iwanow ENVÍO 11/2015

2 Qué es un Servlet? Interacción en Internet Cuando vamos a un restaurante, el mozo toma el pedido y se lo pasa al personal de la cocina. Al completarse el pedido, el mozo trae la comida. Las actividades que se desarrollan en la cocina, son invisibles para los que realizaron el pedido. La cocina, al igual que la web, opera según un modelo cliente/servidor. Al escribir la dirección de un sitio web o una URL en un navegador, o cliente, se inicia una petición al servidor que almacena al sitio. Cualquier acción que realice el servidor es transparente para los visitantes del sitio. En una arquitectura cliente/servidor típica de 2-capas, el contenido del sitio web (la capa de presentación del sitio web) como las páginas HTML, los servlets, las JSP, las ASP, software de correo, los scripts CGI, etc., se almacenan en el servidor web. Los sistemas de 2-capas más viejos, estaban hechos de un servidor web o contenedor, y el navegador. Figura 1: Arquitectura 2-capas (Cliente/Servidor) El servidor de aplicaciones es una extensión del modelo cliente/servidor 2-capas a una aproximación de N-capas. El servidor de aplicaciones tiene un servidor o contenedor web integrado y un contenedor de aplicaciones. Un ejemplo es el modelo de aplicaciones J2EE (Edición Empresarial de Java 2). Este modelo es el implementado en servidores de aplicación como el WebSphere de IBM, el BEA WebLogic, Tomcat del Proyecto Jakarta, Sun One Aplication Server; Internet Information Server de Microsoft, etc. Práctica Resuelta - Página 2 de 38 (Mario Bressano / Miguel Iwanow)

3 Figura 2: Arquitectura de N-capas La aproximación de N-capas es ideal para la generación de contenido dinámico. Los Servlets de Java, que heredan las características de Java y más, han asumido un papel prominente en los servidores de aplicaciones. Qué son los Servlets de Java? En Java podemos trabajar con Servlet y Java Server Pages (JSP). Los últimos son utilizados cuando la mayoría del contenido que se envía al cliente es texto estático, marcas y solo una pequeña parte de contenido dinámico. En cambio los servlets, son utilizados cuando la cantidad de texto estático y marcas es pequeño. Hay ocasiones en el que el servlet no produce contenido y solo se limita a llamar a otro servlet o JSP. Podemos decir que los Servlets son componentes del servidor. Estos componentes pueden ser ejecutados en cualquier plataforma o en cualquier servidor debido a la tecnología Java que se usa para implementarlos. Los Servlets incrementan la funcionalidad de una aplicación web. Se cargan de forma dinámica por el entorno de ejecución Java del servidor cuando se necesitan. Cuando se recibe una petición del cliente, el contenedor/servidor web inicia el servlet requerido. El Servlet procesa la petición del cliente y envía la respuesta de vuelta al contenedor/servidor, que es enrutada al cliente. La palabra Servlet deriva de applet; ésta se refiere a objetos (programas) que se ejecutaban en el contexto de un navegador, mientras que el servlet lo hace en el servidor. Práctica Resuelta - Página 3 de 38 (Mario Bressano / Miguel Iwanow)

4 Figura 3: Modelo de respuesta a peticiones HTTP La interacción cliente/servidor basada en Web usa el protocolo HTTP. EL protocolo HTTP es un protocolo sin estados basado en un modelo de petición y respuesta con un número pequeño y finito de métodos de petición como GET, POST, HEAD, OPTIONS, PUT, TRACE, DELETE, CONNECT, etc.. La respuesta contiene el estado de la respuesta y meta-información describiendo dicha respuesta. La mayor parte de las aplicaciones web basadas en servlets se construyen en el marco de trabajo del modelo petición/respuesta HTTP. Los Servlets permiten: 1- Leer datos enviados por los usuarios (formularios web o subprogramas applet-) 2- Buscar cualquier tipo de información respecto a la petición HTTP (nombre del host, cookies) 3- General resultados en una conexión a la Db por medio de CORBA (Common Object Request Broker Architecture arquitectura común de intermediarios en peticiones a objetos) O RMI (Remote Method Invocation Llamada a métodos remotos) la diferencia consiste en el que el primero permite llamar aplicaciones escritas en otros lenguajes) 4- Dar formato a los resultados 5- Establecer parámetros HTTP adecuados a la respuestas 6- Devolver el documento al cliente. Comparación con los CGI (Interfaz de compuerta común) a- EFICIENTES: Pues en los CGI cada petición genera un proceso Práctica Resuelta - Página 4 de 38 (Mario Bressano / Miguel Iwanow)

5 b- ADECUADOS: Analizan y decodifican automáticamente código HTML, cookies, rastrear sesiones, etc. c- PODEROSOS: Se comunican directamente con el servidor web d- TRANSPORTABLES: Al estar escritos en Java, poseen un código estándar. e- SEGUROS: Son ejecutados por la máquina virtual con su respectiva seguridad. f- ECONÓMICOS: Para ejecutarse no requiere software propietario. Requerimientos de Ejecución de los Servlets Java 1. Los Servlets de Java requieren algún conocimiento previo de Java y HTML 2. Las aplicaciones web y las páginas web que requieran iniciación de servlets deben ejecutarse en servidores web con contenedores web integrados, como el servidor web iplanet o un contenedor solitario de servlets como el Tomcat. Los Servlets también pueden ejecutarse en servidores de aplicación con contenedores web integrados como el Servidor BEA WebLogic. 3. El API Servlet (que tratemos de entender en breve) suele estar mayoritariamente integrado en el servidor/contenedor web. El contenedor/servidor logra esto último implementando la especificación Java Servlet 2.1 o Una vez que el contenedor/servidor básico se ha bajado y configurado, el siguiente paso es entender la programación de servlets. El API Servlet tiene dos paquetes, el javax.servlet, que tiene clases y paquetes independientes de protocolos, y el javax.servlet.http, que es más específico para el protocolo HTTP. Estructura del Servlet y Ciclo de Vida Antes de meternos en el ciclo de vida de los servlets, necesitamos comprender las clases básicas y los interfaces usados en la implementación del servlet. Todos los servlets implementan a la interfaz Servlet. El ciclo de vida comienza cuando el servlet se carga en memoria, se invoca a INIT, luego a SERVICE (por cada petición uno, generando un subproceso ES UNA DIFERENCIA CON EL CGI) y luego al finalizar DESTROY. Práctica Resuelta - Página 5 de 38 (Mario Bressano / Miguel Iwanow)

6 Public Interface Servlet Todo servlet debe directa o indirectamente implementar este interfaz. Como cualquier otro interfaz de Java, este es también una colección de declaraciones vacías de métodos. Los siguientes métodos están declarados en el interfaz Servlet. 1. public abstract void init (ServletConfig config) throws ServletException. El método init se usa para inicializar los parámetros proporcionados por el objeto ServletConfig. Se invoca sólo una vez, a menos que el servlet sea reiniciado si se destruye y se vuelve a cargar. El método init es el lugar en el que inicializar los parámetros de configuración como la conexión con una base de datos, la inicialización de archivos y otros valores de entorno. Ninguno método del servlet puede ser invocado a no ser que el servlet esté inicializado mediante el uso del método init(). 2. public abstract ServletConfig getservletconfig () Este método proporciona el objeto ServletConfig para la inicialización de los parámetros del servlet. Se pueden crear parámetros adicionales especificándolos en el archivo servlet.properties. Una vez que hayan sido especificados en este archivo, se puede acceder a ellos usando el objeto ServletConfig. 3. public abstract void service (ServletRequest req, ServletResponse res) throws ServletException, IOException. El método service es el punto esencial del modelo petición respuesta del protocolo HTTP. Recibe una petición del cliente en forma de objeto ServletRequest. Los parámetros del cliente son pasados junto al objeto de petición (aunque existen otras formas de enviar parámetros desde el cliente al servlet, por ejemplo, usando cookies o por medio de una reescritura del URL). La respuesta resultante se envía al cliente usando el objeto ServletResponse. 4. public abstract String getservletinfo() Este método se usa para la extracción de metadatos del servlet, como por ejemplo el autor, la versión del servlet, y otra información concerniente al copyright. El método tendrá que ser redefinido dentro del servlet para que devuelva esta información. Práctica Resuelta - Página 6 de 38 (Mario Bressano / Miguel Iwanow)

7 5. public abstract void destroy () El método destroy se invoca para liberar todos los recursos solicitados como la base de datos, y otros recursos del servidor. También se encarga de la sincronización de cualquier hilo pendiente. Este método se llama una sola vez, automáticamente, como el método init. La clase GenericServlet proporciona una implementación básica del interfaz Servlet. Para escribir un servlet especificamente para el protocolo HTTP, se usa la clase HTTPServlet, que extiende a Generic Servlet. 1. El método destroy se invoca para liberar todos los recursos solicitados como la base de datos, y otros recursos del servidor. También se encarga de la sincronización de cualquier hilo pendiente. Este método se llama una sola vez, automáticamente, como el método init. La clase GenericServlet proporciona una implementación básica del interfaz Servlet. Para escribir un servlet especificamente para el protocolo HTTP, se usa la clase HTTPServlet, que extiende a Generic Servlet. Figura 4: Clases Relevantes de Servlets e Interfaces. Como se ha tratado previamente, el ciclo de vida de los eventos para un servlet se especifica en el interfaz javax.servlet.servlet. Todos los servlets siguen el modelo del ciclo de vida. El contenedor web tiene la responsabilidad de crear una instancia del servlet y de invocar al método init (1). Si un cliente ha enviado una petición al contenedor web, entonces, esa petición se pasa al método servicio del servlet (2), y se envia una respuesta de vuelta al contendor web (3). Finalmente, cuando el servlet haya finalizado su propósito, el contenedor web invoca al método destroy (4). Práctica Resuelta - Página 7 de 38 (Mario Bressano / Miguel Iwanow)

8 Figura 5: Ciclo de Vida del Servlet web.xml. web.xml es un archivo escrito en XML que describe diversas características del archivo WAR, a continuación se describen sus elementos básicos. <web-app> <servlet> <servlet-name>hola</servlet-name> <servlet-class>com.osmosislatina.saludos</servlet-class> </servlet> <servlet-mapping> <servlet-name>hola</servlet-name> <url-pattern>/visitas</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>hola</servlet-name> <url-pattern>/despedida</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>hola</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> Práctica Resuelta - Página 8 de 38 (Mario Bressano / Miguel Iwanow)

9 <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index.html</welcome-file> <welcome-file>bienvenida.jsp</welcome-file> </welcome-file-list> </web-app> El primer elemento <web-app> indica el inicio de la aplicación, es dentro de este elemento que se definen todos los elementos restantes. El elemento <servlet> define las características de un Servlet y a su vez está compuesto por los elementos <servlet-name> y <servlet-class> que indican un nombre corto para el Servlet así como el nombre de la Clase Java que contiene el Servlet respectivamente. En este caso se indica que la Clase llamada com.osmosislatina.saludos (encontrada dentro de /WEB-INF/classes) será denominada con el nombre hola. Posteriormente se define el elemento <servlet-mapping> el cual define la ubicación en términos de directorios de un sitio (URL), esto es, el elemento <servletname>hola</servlet-name> esta indicando que el Servlet llamado hola será accesado cada vez que se accese el directorio base /visitas. Nótese que existen otras dos declaraciones con el Servlet hola, lo anterior permite que un mismo Servlet sea accesado de diversos directorios en un sitio, en este caso se esta indicando que toda solicitud destinada para los URL's /visitas, /despedida y todas aquellas terminadas en *.do sean procesados por el Servlet en cuestión (hola). Finalmente el elemento <welcome-file-list> indica que cuando se solicite cualquier directorio sin indicar un archivo en especifico se envíe el archivo llamado: index.jsp, index.html o index.htm, donde el primero tiene preferencia en caso de existir más de un archivo en la lista. Lo anterior son solo los parámetros básicos utilizados en web.xml, a continuación se describen otros elementos que pueden ser empleados en web.xml EJEMPLO DE SERVLETS: Ejemplo 1: Servlet sencillo que va a generar solo texto: import java.io.printwriter; import java.io.ioexception; import javax.servlet.servletexception; Práctica Resuelta - Página 9 de 38 (Mario Bressano / Miguel Iwanow)

10 import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; public class PrimerServlet extends HttpServlet { private static final long serialversionuid = 1L; public void doget(httpservletrequest pedido, HttpServletResponse respuesta) throws ServletException, IOException { PrintWriter out= respuesta.getwriter(); out.println("este es mi primer Servlet que genera solo texto"); private static final long serialversionuid = 1L: Las clases que implementan este interfaz son susceptibles de ser serializadas (es decir, las instancias de estas clases pueden guardarse y leerse en/de disco -o cualquier otro dispositivo de entrada/salida-). Simplificando mucho la lógica de serialización, lo que sucede es que los atributos del objeto se convierten en cadenas de bytes y se guardan en el disco. Para leer un objeto, se leen las cadenas de bytes y se reconstruye el objeto a partir de ellos. Imagina que tienes una aplicación que serializa en disco una serie de objetos al cerrarse y los lee en la siguiente ejecución para mantener los valores que tenían antes. En un momento dado, modificas una de las clases añadiendo un atributo nuevo. Al ejecutar esta versión de la aplicación por primera vez, intentará leer de disco los objetos que fueron serializados... pero falta un campo en los objetos de la clase que has modificado (cuando se serializaron el campo no existía) y tu aplicación "teóricamente" va a leer datos corruptos puesto que "teóricamente" no puede saber que la clase ha cambiado (veremos que si puede saberlo). El campo serialversionuid es el número de versión de la clase. Cuando el objeto es serializado lo primero que hace es escribir el serialversionuid. Si al leer el objeto se dectecta que el valor del serialversionuid guardado no coincide con el actual se lanza una exception InvalidClassException, de modo que el programador puede tratar la excepción de manera adecuada (por ejemplo, creando un objeto por defecto para substituir al que no puede leerse). Para que este mecanismo funcione bien, el programador debe proveer el campo private static final long serialversionuid en todas las clases que implementen Serializable y en todas las subclases de ellas (este es tu caso). El valor es indiferente, pero debes actualizarlo cada vez Práctica Resuelta - Página 10 de 38 (Mario Bressano / Miguel Iwanow)

11 que modificas tu clase añadiendo o quitando atributos (lo más sencillo en incrementarlo en 1). Si el programador no indica este campo la JVM añade uno por su cuenta, sin embargo no es demasiado conveniente permitir esto (al cambiar ligeramente el programa o cambiar la JMV podría cambiar el valor y darte una desagradable sorpresa) CLASE HttpServlet public class PrimerServlet extends HttpServlet {: Los servlets basados en Web generalmente extienden a la clase HttpServlet que redefine el método Service para las dos peticiones más comunes del HTTP: get y post. Una petición GET obtiene información del servidor recuperando la misma en un documento HTML o una imagen. En cambio una petición POST publica o envía datos de un servidor. Dentro de la clase HttpServlet existen estos métodos: 1. dodelete (borrar archivos) 2. dohead (procesar encabezados) 3. dooptions (devuelve información al cliente sobre el servidor) 4. doput (almacena archivos) 5. dotrace (depuración) public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException {: Los métodos doget y dopost reciben argumentos HttpServletResponse response. HttpServletRequest request, Interfaz HttpServlet request El servidor web que ejecuta al servlet crea un objeto de este tipo que se lo pasa al método Service que a su vez se lo pasa a doget o dopost según corresponda, conteniendo la petición del cliente. Por otra parte se invoca throws ServletException, IOException que se ejecutarán: Práctica Resuelta - Página 11 de 38 (Mario Bressano / Miguel Iwanow)

12 String getparameter(string nombre): Nos devuelve el valor del parámetro cuyo nombre le indicamos. Si la variable no existiera o no tuviese ningún valor, devolvería null Enumerate getparameternames(): Nos devuelve una enumeración de los nombres de los parámetros que recibe el servlet. Enumerate getparametervalues(string): Nos devuelve los valores que toma un parámetro dado, esto es útil para listas de selección múltiple donde un parámetro tiene más de un valor. Cookies[].getCookies(): Devuelve arreglo con todos los valores de las cookies que identifican cliente de una manera única con el servidor Interfaz HttpServlet response. Esta interfaz permite dar respuesta al cliente. Aquí encontramos: void.addcookie (Cookie, cookie): agrega objeto cookie al encabezado de respuesta del cliente ServletOutputStream.getOutputStream(): Genera un flujo de salida en bytes. PrintWriter.getWriter (): Flujo de salida en caracteres. void setcontenttype(string tipo): Por ejemplo si tipo es MIME, devuelve un archivo HTML. Ejemplo 2: Servlet que genera código HTML import java.io.printwriter; import java.io.ioexception; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; public class SegundoServlet extends HttpServlet { private static final long serialversionuid = 1L; public void doget(httpservletrequest pedido, HttpServletResponse respuesta) throws ServletException, IOException { respuesta.setcontenttype("text/html"); PrintWriter out=respuesta.getwriter(); String doctype = "<! DOCTYPE HTML PUBLIC \\*-//W3C//DTS HTML 4.0 "+"Transitional//EN\">\n "; Práctica Resuelta - Página 12 de 38 (Mario Bressano / Miguel Iwanow)

13 out.println(doctype+ "<HTML>\n"+ "<HEAD><TITLE>PÁGINA WEB GENERADA POR SERVLET</TITLE></HEAD>"+ "<BODY>\n"+ "<H1><CENTER>PRUEBA DE TEXTO</CENTER></H1>"+ "</BODY>\n"+ "</HTML>\n"); Ejemplo 3: Uso de un archivo HTML para llamar a un servlet que genera código HTML. <!ARCHIVO FORMULARIO0.HTML> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <title>manejo de una petición Get de HTTP</title> </head> <body> <form ACTION=" method = "get"> <p><label>haga clic en el botón para invocar el servlet <input type = "submit" value = "Obtener documento de HTML" /> </label></p> </form> </body> </html> //ARCHIVO CEROSERVLET.JAVA import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class CeroServlet extends HttpServlet { Práctica Resuelta - Página 13 de 38 (Mario Bressano / Miguel Iwanow)

14 protected void doget( HttpServletRequest peticion, HttpServletResponse respuesta ) throws ServletException, IOException { respuesta.setcontenttype( "text/html" ); PrintWriter salida = respuesta.getwriter(); salida.println( "<?xml version = \"1.0\"?>" ); salida.println( "<!DOCTYPE html PUBLIC \"-//W3C//DTD " + "XHTML 1.0 Strict//EN\" \" + "/TR/xhtml1/DTD/xhtml1-strict.dtd\">" ); salida.println( "<html xmlns = \" ); salida.println( "<head>" ); salida.println( "<title>un ejemplo de servlet simple</title>" ); salida.println( "</head>" ); salida.println( "<body>" ); salida.println( "<h1> Bienvenido a los servlets!</h1>" ); salida.println( "</body>" ); salida.println( "</html>" ); salida.close(); // cerrar flujo para completar la página Si llamamos un servlet desde un formulario HTML, podremos hacerlo de dos formas: GET y POST. Con la primera los parámetros del formulario están incluidos la url que se utiliza para invocar el servlet y en el segundo caso los parámetros se almacenan en un buffer especial del servidor. Para procesar el primer tipo de peticiones (GET) está el método doget mientras que para el segundo tenemos el método dopost. La implementación por defecto del método service es capaz de determinar el tipo de petición HTTP que en un momento dado recibe el servlet. Una vez identificada llama o al método doget o al dopost según el caso. Ejemplo 4: Uso de doget y dopost Podemos observar que el método init es público, no devuelve ningún tipo (void), que puede lanzar una excepción (ServletException) y que tiene un parámetro (ServletConfig conf). De estos dos últimos aspectos (excepción y parámetro) no nos tenemos que preocupar pues es el servidor quien ejecuta el método init. En el peor de los casos, tendríamos que lanzar la excepción (si sabemos hacerlo), si por algún motivo el método init que nosotros implementemos falle (por ejemplo, que no se pueda conectar a la base de datos y evitamos mostrar un mensaje de error) Práctica Resuelta - Página 14 de 38 (Mario Bressano / Miguel Iwanow)

15 Lo siguiente que hacemos redefinir el método service, cuando el servidor web recibe una petición para un servlet llama al método public void service(httpservletrequest req, HttpServletResponse res) con dos parámetros: el primero, de la clase HttpServletRequest, representa la petición del cliente y el segundo, de la clase HttpServletResponse, representa la respuesta del servidor (del servlet, más concretamente). Archivo GetPostJava.java import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class GetPostJava extends HttpServlet { public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/html"); PrintWriter out = res.getwriter(); out.println("<html>"); out.println("<body>"); out.println("<h1>llamada POR GET</h1>"); out.println(req.getparameter("nombre")); out.println("</body>"); out.println("</html>"); public void dopost(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/html"); PrintWriter out = res.getwriter(); out.println("<html>"); out.println("<body>"); out.println("<h1>llamada POR POST</h1>"); out.println(req.getparameter("nombre")); out.println("</body>"); out.println("</html>"); Formulario que llama a GetPostJava <html> <body> <h1>método GET Y POST</h1> <form method="get" action=" <table border=1> Práctica Resuelta - Página 15 de 38 (Mario Bressano / Miguel Iwanow)

16 <td>nombres:</td><td><input name="nombre" type="text" style="width: 474px" /></td> <td colspan=2><input type="submit" value="enviar datos por get"></td> </table> </form> <form method="post" action=" <table border=1> <td>nombres:</td><td><input name="nombre" type="text" style="width: 474px" /></td> <td colspan=2><input type="submit" value="enviar datos por post"> </td> </table> </form> </body> </html> Ejemplo 6: Uso de dopost implementado con doget import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; public class servletdopost extends javax.servlet.http.httpservlet implements javax.servlet.servlet { private static final long serialversionuid = 1L; protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out; out = response.getwriter(); response.setcontenttype("text/html"); out.println("<html>"); out.println("<head><title>mi Primer Servlet </title></head>"); out.println("<body>"); out.println("este es mi Primer Servlet"); out.println("</body></html>"); Práctica Resuelta - Página 16 de 38 (Mario Bressano / Miguel Iwanow)

17 public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { dopost(req,res); Ejemplo 7: Contar peticiones realizadas Cuando se crea un servlet, el servidor llama al método init y cada vez que un cliente acceda al servlet el servidor llamará al método service que se encargará de redirigir la llamada doget o a dopost. Esto nos quiere decir que cuando se llama por primera vez a un servlet se ejecutara primero init y después service, pero... Y la segunda vez y sucesivas también se llama a init o sólo a service?. Normalmente, el servidor crea el servlet (llama, por tanto, al método init) y lo mantiene funcionando, si ha pasado un tiempo suficiente (y que puede ir desde unos segundos a nunca) sin que el servlet se llame lo deja de ejecutar. Es decir, un servlet se empieza a ejecutar con la primera llamada y, normalmente, se seguirá ejecutando. De esta forma, vamos a crear un servlet que cuente el número de visitas que recibe, para ello nos bastará crear una variable contador que inicializaremos en el método init y que incrementaremos en dopost/doget. Por lo que, el contador se inicializará cuando se llame por primera vez al servlet y se irá incrementando en llamadas sucesivas //Archivo contador.java import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class contador extends HttpServlet { //variable contador int contador; public void init(servletconfig conf) throws ServletException { super.init(conf); //inicializamos la variable contador contador = 1; public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/html"); Práctica Resuelta - Página 17 de 38 (Mario Bressano / Miguel Iwanow)

18 PrintWriter out = res.getwriter(); int tmp = contador; //incrementamos la variable contador contador++; out.println("<html>"); out.println("<body>"); out.println("<h1>numero de peticiones " + tmp +"</h1>"); out.println("</body>"); out.println("</html>"); public void dopost(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { doget(req, res); Un mismo servlet puede ser llamado por más de un cliente a la vez. En este caso, el servidor crea una hebra del servlet por cada petición y esas dos hebras accederán concurrentemente a los mismos datos (la variable contador). Como la lectura e incremento de contador no es una operación atómica, se podría utilizar la primitiva de sincronización syncronized para que se realice de forma atómica: //Archivo Contador2 import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class Contador2 extends HttpServlet { //variable contador int contador; public void init(servletconfig conf) Práctica Resuelta - Página 18 de 38 (Mario Bressano / Miguel Iwanow)

19 throws ServletException { super.init(conf); //inicializamos la variable contador contador = 1; public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/html"); PrintWriter out = res.getwriter(); int tmp; synchronized(this) { //leemos el contador tmp = contador; //incrementamos la variable contador contador++; out.println("<html>"); out.println("<body>"); out.println("<h1>numero de peticiones " + tmp +"</h1>"); out.println("</body>"); out.println("</html>"); public void dopost(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { doget(req, res); Ejemplo 8: Uso de un servlet para redireccionado de páginas en Internet. Podemos trabajar de dos maneras: Práctica Resuelta - Página 19 de 38 (Mario Bressano / Miguel Iwanow)

20 1- Con una página htm que por medio de hipervínculos me dirija al lugar deseado <! Archivo redireccion.htm--> <?xml version = "1.0"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " <html xmlns = " <head> <title>redireccionar una petición hacia otro sitio</title> </head> <body> <p>haga clic en un vínculo para redireccionarlo a la página apropiada</p> <p> <a href = " /> <a href = " Servlet de bienvenida</a> </body> </html> 2- Por medio de un formulario que me permita seleccionar el lugar deseado <! Archivo formulario4.htm--> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " <html xmlns=" <head> <meta http-equiv="content-language" content="es-ar" /> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>formulario PARA ENVÍO DE DATOS A</title> <style type="text/css">.style1 { font-family: Tahoma; font-size: large; text-align: center;.style2 { Práctica Resuelta - Página 20 de 38 (Mario Bressano / Miguel Iwanow)

21 color: #000080;.style6 { font-family: Tahoma; font-size: small; </style> </head> <body> <p class="style1">redireccion POR FORMULARIO</p> <form method="get" action=" <table style="width: 100%"> <td class="style6" colspan="2"> <hr style="height: -71px" class="style2" /></td> <td style="width: 159px" class="style6">indicar Página</td> <td class="style6"> <table style="width: 658px"> <td style="width: 218px"> <input name="pagina" type="radio" checked="checked" value="mario" />MARIOBRESSANO</td> <td style="width: 219px"> <input name="pagina" type="radio" value="primera" />PRIMERA</td><td style="width: 219px"></td> </table> </td> Práctica Resuelta - Página 21 de 38 (Mario Bressano / Miguel Iwanow)

22 <td class="style6" valign="top" colspan="2"> <hr style="height: -71px" class="style2" /></td> <td class="style6" valign="top" colspan="2"> <table align="center"> <td></td> <td><input name="submit1" type="submit" value="enviar datos" /></td> </table> </td> </table> </form> </body> </html> //Servlet para redireccionar Archivo Redireccion.java import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class Redireccion extends HttpServlet { protected void doget( HttpServletRequest peticion, HttpServletResponse respuesta ) throws ServletException, IOException { String ubicacion = peticion.getparameter( "pagina" ); if ( ubicacion!= null ) if ( ubicacion.equals( "mario" )) respuesta.sendredirect( " ); else if ( ubicacion.equals( "primera" ) ) respuesta.sendredirect( "CeroServlet" ); Práctica Resuelta - Página 22 de 38 (Mario Bressano / Miguel Iwanow)

23 // código que se ejecuta solamente si este servlet // no redirecciona al usuario hacia otra página respuesta.setcontenttype( "text/html" ); PrintWriter salida = respuesta.getwriter(); // empezar documento de XHTML salida.println( "<?xml version = \"1.0\"?>" ); salida.println( "<!DOCTYPE html PUBLIC \"-//W3C//DTD " + "XHTML 1.0 Strict//EN\" \" + "/TR/xhtml1/DTD/xhtml1-strict.dtd\">" ); salida.println( "<html xmlns = \" ); // sección de encabezado del documento salida.println( "<head>" ); salida.println( "<title>página inválida</title>" ); salida.println( "</head>" ); // sección del cuerpo del documento salida.println( "<body>" ); salida.println( "<h1>solicitó una página inválida</h1>" ); salida.println( "<p><a href = " + "\"redireccion.html\">" ); salida.println( "Haga clic aquí para seleccionar de nuevo</a></p>" ); salida.println( "</body>" ); // fin del documento de XHTML salida.println( "</html>" ); salida.close(); // cerrr flujo para completar la página Ejemplo 9: Uso de un servlet para levantar datos de un formulario confeccionado en html <!Archivo formulario.htm> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD><TITLE>Formulario para ingreso de datos</title></head> <BODY BGCOLOR="#000000" text="#ffffff"> Práctica Resuelta - Página 23 de 38 (Mario Bressano / Miguel Iwanow)

24 <P></P> <H2>Introduce tus datos:</h2><br> <HR></HR> <CENTER> <FORM ACTION=" METOD="POST"> <TABLE BORDER> <TR> <TD><B>Nombre:</TD> <TD><INPUT TYPE=TEXTBOX NAME="NOM" SIZE="25" VALUE=""></TD> </TR> <TR> <TD><B>Edad:</TD> <TD><INPUT TYPE=TEXTBOX NAME="EDA" SIZE="20" VALUE=""></TD> </TR> </TABLE> <P></P> <INPUT TYPE=SUBMIT VALUE="Enviar"> <HR></HR> <b><small>formulario de Datos</small></b></FORM><b> </CENTER> </BODY> </HTML> //Archivo Tercerservlet.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Tercerservlet extends HttpServlet { private static final long serialversionuid = 1L; public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/html"); Práctica Resuelta - Página 24 de 38 (Mario Bressano / Miguel Iwanow)

25 PrintWriter pw = res.getwriter(); pw.println("<html><head><title>leyendo parámetros</title></head>"); pw.println("<body BGCOLOR=\"#CCBBAA\">"); pw.println("<h2>leyendo parámetros desde un formulario html</h2><p>"); pw.println("<ul>\n"); pw.println("te llamas " + req.getparameter("nom") + "<BR>"); pw.println("y tienes " + req.getparameter("eda") + " años<br>"); pw.println("</body></html>"); pw.close(); public void dopost(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { doget(req,res); Normalmente los servlets tendrán parámetros o fuentes de información que le darán su aspecto dinámico. Es decir, para generar una simple página HTML no nos complicamos tanto la vida, se escribe la página HTML y se ha terminado. Las fuentes de información de las que un servlet hace uso, pueden ser varias: el propio servlet, el servidor web, ficheros o bases de datos a los que pueda acceder o parámetros que le pase el cliente. De todas estas fuentes, nos interesan los accesos a bases de datos que veremos más adelante y los parámetros que nos pasa el cliente mediante formularios HTML. Cuando pasamos parámetros a través de un formulario, en los Servlets a través de la clase ServletRequest, disponemos de los siguientes métodos para su tratamiento: String getparameter(string nombre): Nos devuelve el valor del parámetro cuyo nombre le indicamos. Si la variable no existiera o no tuviese ningún valor, devolvería null Enumerate getparameternames(): Nos devuelve una enumeración de los nombres de los parámetros que recibe el servlet. Enumerate getparametervalues(string): Nos devuelve los valores que toma un parámetro dado, esto es útil para listas de selección múltiple donde un parámetro tiene más de un valor <! Archivo html para enviar datos Formulario5.htm Práctica Resuelta - Página 25 de 38 (Mario Bressano / Miguel Iwanow)

26 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " <html xmlns=" <head> <meta http-equiv="content-language" content="es-ar" /> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>formulario PARA ENVÍO DE DATOS A</title> <style type="text/css">.style1 { font-family: Tahoma; font-size: large; text-align: center;.style2 { color: #000080;.style6 { font-family: Tahoma; font-size: small; </style> </head> <body> <p class="style1">formulario PARA ENVÍO DE DATOS A SERVLET:</p> <form method="post" action=" <table style="width: 100%"> <td class="style6" colspan="2"> <hr style="height: -71px" class="style2" /></td> <td style="width: 159px" class="style6">nombres</td> <td class="style6"> <input name="nombres" type="text" style="width: 474px" /></td> Práctica Resuelta - Página 26 de 38 (Mario Bressano / Miguel Iwanow)

27 <td style="width: 159px" class="style6">apellido</td> <td class="style6"> <input name="apellido" type="text" style="width: 474px" /></td> <td style="width: 159px" class="style6">domicilio</td> <td class="style6"> <input name="domicilio" type="text" style="width: 474px" /></td> <td style="width: 159px" class="style6">teléfono</td> <td class="style6"> <input name="telefono" type="text" style="width: 474px" /></td> <td style="width: 159px" class="style6"> </td> <td> <input name=" " type="text" style="width: 474px" /></td> <td style="width: 159px" class="style6">tarjeta de Crédito</td> <td class="style6"> <table style="width: 658px"> <td style="width: 218px"> <input name="nombre tarjeta" type="radio" checked="checked" value="visa" />VISA</td> <td style="width: 219px"> <input name="nombre tarjeta" type="radio" value="mastercard" />MASTERCARD</td> <td style="width: 219px"> <input name="nombre tarjeta" type="radio" value="american EXPRESS" />AMERICAN EXPRESS</td> Práctica Resuelta - Página 27 de 38 (Mario Bressano / Miguel Iwanow)

28 </table> </td> <td style="width: 159px" class="style6" valign="top">observaciones</td> <td class="style6"> <textarea name="observaciones" style="width: 478px; height: 140px"></textarea></td> <td class="style6" valign="top" colspan="2"> <hr style="height: -71px" class="style2" /></td> <td class="style6" valign="top" colspan="2"> <table align="center"> <td><input name="reset1" type="reset" value="borrar Datos" /></td> <td><input name="submit1" type="submit" value="enviar datos" /></td> </table> </td> </table> </form> </body> </html> //Archivo CuartoServlet.java- Levanta datos del formulario anterior import java.io.*; import java.util.*; import javax.servlet.*; Práctica Resuelta - Página 28 de 38 (Mario Bressano / Miguel Iwanow)

29 import javax.servlet.http.*; public class CuartoServlet extends HttpServlet { private static final long serialversionuid = 1L; public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/html"); PrintWriter out = res.getwriter(); String doctype = "<! DOCTYPE HTML PUBLIC \\*-//W3C//DTS HTML 4.0 "+"Transitional//EN\">\n "; out.println(doctype+ "<HTML>\n"+ "<HEAD><TITLE>PÁGINA WEB GENERADA POR SERVLET</TITLE></HEAD>"+ "<BODY BGCOLOR=\"#CCBBAA\">\n"+ "<H1><CENTER>LECTURA DE DATOS DEL FORMULARIO</CENTER></H1>\n"+ "<BR>\n"+ "<TABLE BGCOLOR=\"#FFFFFF\" BORDER=0>\n"+ "<TR><TH>NOMBRE DEL CAMPO<TH>VALOR DEL CAMPO"); Enumeration nombrescampo = req.getparameternames(); while (nombrescampo.hasmoreelements()){ String nombrecampo =(String)nombresCampo.nextElement(); out.print("<tr><td>"+nombrecampo+"\n<td>"); String[] contenidoscampo = req.getparametervalues(nombrecampo); if (contenidoscampo.length==1) { String contenidocampo = contenidoscampo[0]; if (contenidocampo.length()==0){ out.println("<i>sin Valor</I>"); else { out.println(contenidocampo); Práctica Resuelta - Página 29 de 38 (Mario Bressano / Miguel Iwanow)

30 else { out.println("<ul>"); for (int i=0; i<contenidoscampo.length;i++) { out.println("<li>"+contenidoscampo[i]); out.println("</ul>"); out.println("</table></body></html>"); public void dopost(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { doget(req,res); En el caso de HttpServlet la implementación por defecto del método service comprueba si la petición recibida era de tipo POST (los parámetros se pasan en la cabecera del mensaje) o de tipo GET (los parámetros están en la URL, luego son visibles para todo el mundo), y llama a los métodos dopost o doget dependiendo de esto. Tanto doget como dopost reciben como parámetros objetos de tipo HttpServletRequest y HttpServletResponse. ACCESO A BASE DE DATOS Antes de comenzar, algunas aclaraciones: Práctica Resuelta - Página 30 de 38 (Mario Bressano / Miguel Iwanow)

31 El problema es comunicar un programa o aplicación con una base de datos y más que comunicar se pretende que el programa o aplicación realice una serie de procesos u operaciones con la base de datos o mejor aun con el conjunto de tablas que contiene una base de datos. Una base de datos puede estar físicamente en el servidor y en alguna carpeta o directorio del disco duro de dicha máquina. También es necesario conocer que así como existen servidores de páginas (web server), servidores de correo (mail server), servidores de ftp (ftp server), etc., también existen servidores de bases de datos (database server), los más comunes son el sqlserver de Microsoft, Oracle, Mysql, etc., estos servidores también pueden crear, administrar y procesar una base de datos. El modo de comunicarse entre nuestro programa o aplicación y la base de datos implica que ambos manejen un lenguaje de programación común, es decir, no se puede mandar una instrucción en C Sharp, o en Basic o Pascal, a la base de datos y además esperar que esta ultima la entienda (una razón muy sencilla es que la base de datos tendría que conocer o comprender todos los lenguajes de programación), para resolver este problema de comunicación es que se usa un lenguaje común de bases de datos que tanto los lenguajes de programación existentes como las bases de datos entienden, este lenguaje común de bases de datos es el SQL (Structured Query Languaje) o lenguaje estructurado de consultas. Las principales instrucciones de SQL que se son SELECT, INSERT, UPDATE y DELETE. Cómo mandamos las instrucciones SQL a la base de datos? La respuesta se basa en los siguientes OBJETOS: OBJETO JDBCODBCDRIVER: Objeto que se utiliza para traducir las instrucciones del lenguaje SQL a las instrucciones del lenguaje original de la base de datos. OBJETO CONNECTION: Objeto que se utiliza para establecer una conexión o enlace a la base de datos. OBJETO RESULTSET: Es la representación en memoria de una de las tablas de la base de datos en disco; se puede entender como una tabla virtual, recordar que generalmente todos los procesos que se realicen con la tabla (insertar registros, eliminar registros, etc.) se realizaran Práctica Resuelta - Página 31 de 38 (Mario Bressano / Miguel Iwanow)

32 realmente contra un resulset y no provocan ningún cambio en la tabla física en disco, resulset tiene un conjunto de métodos muy útiles y muy usados para el proceso de los renglones de la tabla virtual. OBJETO STATEMENT: Este objeto y sus dos métodos executequery (para select de SQL) y executeupdate (para insert, update y delete de SQL) son los métodos que se utilizaran para comunicarse con la tabla física en disco. createstatement(resultset.type_scroll_sensitive,resultset.concur_updata BLE) Una de las nuevas características del API JDBC 2.0 es la habilidad de mover el cursor en una hoja de resultados tanto hacia atrás como hacia adelante. También hay métodos que nos permiten mover el cursor a una fila particular y comprobar la posición del cursor. La hoja de resultados Scrollable hace posible crear una herramienta GUI (Interface Gráfico de Usuario) para navegar a través de ella, lo que probablemente será uno de los principales usos de esta característica. Otro uso será movernos a una fila para actualizarla Antes de poder aprovechar estas ventajas, necesitamos crear un objeto ResultSet Scrollable, por ejemplo: Statement stmt = con.createstatement(resultset.type_scroll_sensitive, ResultSet.CONCUR_READ_ONLY); ResultSet srs = stmt.executequery("select COF_NAME, PRICE FROM COFFEES"); El segundo argumento es una de las dos constantes de ResultSet para especificar si la hoja de resultados es de sólo lectura o actualizable: CONCUR_READ_ONLY y CONCUR_UPDATABLE. Lo que debemos recordar aquí es que si especificamos un tipo, también debemos especificar si es de sólo lectura o actualizable. También, debemos especificar primero el tipo, y como ambos parámetros son int, el compilador no comprobará si los hemos intercambiado. Especificando la constante TYPE_FORWARD_ONLY se crea una hoja de resultados no desplazable, es decir, una hoja en la que el cursor sólo se mueve hacia adelante. Si no se especifican constantes para el tipo y actualización de un objeto ResultSet, obtendremos automáticamente una TYPE_FORWARD_ONLY y CONCUR_READ_ONLY (exactamente igual que en el API del JDBC 1.0). Práctica Resuelta - Página 32 de 38 (Mario Bressano / Miguel Iwanow)

33 Obtendremos un objeto ResultSet desplazable si utilizamos una de estas constantes: TYPE_SCROLL_INSENSITIVE o TYPE_SCROLL_SENSITIVE. La diferencia entre estas dos es si la hoja de resultados refleja los cambios que se han hecho mientras estaba abierta y si se puede llamar a ciertos métodos para detectar estos cambios. Generalmente hablando, una hoja de resultados TYPE_SCROLL_INSENSITIVE no refleja los cambios hechos mientras estaba abierta y en una hoja TYPE_SCROLL_SENSITIVE si se reflejan. Los tres tipos de hojas de resultados harán visibles los resultados si se cierran y se vuelve a abrir. En este momento, no necesitamos preocuparnos de los puntos delicados de las capacidades de un objeto ResultSet, entraremos en más detalle más adelante. Aunque deberíamos tener en mente el hecho de que no importa el tipo de hoja de resultados que especifiquemos, siempre estaremos limitados por nuestro controlador de base de datos y el driver utilizados. Una vez que tengamos un objeto ResultSet desplazable, srs en el ejemplo anterior, podemos utilizarlo para mover el cursor sobre la hoja de resultados. Recuerda que cuando creábamos un objeto ResultSet anteriormente, tenía el cursor posicionado antes de la primera fila. Incluso aunque una hoja de resultados se seleccione desplazable, el cursor también se posiciona inicialmente delante de la primera fila. En el API JDBC 1.0, la única forma de mover el cursor era llamar al método next. Este método todavía es apropiado si queremos acceder a las filas una a una, yendo de la primera fila a la última, pero ahora tenemos muchas más formas para mover el cursor. La contrapartida del método next, que mueve el cursor una fila hacia delante (hacia el final de la hoja de resultados), es el nuevo método previous, que mueve el cursor una fila hacia atrás (hacia el inicio de la hoja de resultados). Ambos métodos devuelven false cuando el cursor se sale de la hoja de resultados (posición antes de la primera o después de la última fila), lo que hace posible utilizarlos en un bucle while. Ye hemos utilizado un método next en un bucle while, pero para refrescar la memoria, aquí tenemos un ejemplo que mueve el cursor a la primera fila y luego a la siguiente cada vez que pasa por el bucle while. El bucle termina cuando alcanza la última fila, haciendo que el método next devuelva false. El siguiente fragmento de código imprime los valores de cada fila de srs, con cinco espacios en blanco entre el nombre y el precio. Statement stmt = con.createstatement(resultset.type_scroll_sensitive, ResultSet.CONCUR_READ_ONLY); ResultSet srs = stmt.executequery("select COF_NAME, PRICE FROM COFFEES"); while (srs.next()) { Práctica Resuelta - Página 33 de 38 (Mario Bressano / Miguel Iwanow)

34 String name = srs.getstring("cof_name"); float price = srs.getfloat("price"); System.out.println(name + " " + price); Se puede mover el cursor a una fila particular en un objeto ResultSet. Los métodos first, last, beforefirst, y afterlast mueven el cursor a la fila indicada en sus nombres. El método absolute moverá el cursor al número de fila indicado en su argumento. Si el número es positivo, el cursor se mueve al número dado desde el principio, por eso llamar a absolute(1) pone el cursor en la primera fila. Si el número es negativo, mueve el cursor al número dado desde el final, por eso llamar a absolute(-1) pone el cursor en la última fila. La siguiente línea de código mueve el cursor a la cuarta fila de srs. srs.absolute(4); Si srs tuviera 500 filas, la siguiente línea de código movería el cursor a la fila 497. srs.absolute(-4); Tres métodos mueven el cursor a una posición relativa a su posición actual. Como hemos podido ver, el método next mueve el cursor a la fila siguiente, y el método previous lo mueve a la fila anterior. Con el método relative, se puede especificar cuántas filas se moverá desde la fila actual y también la dirección en la que se moverá. Un número positivo mueve el cursor hacia adelante el número de filas dado; un número negativo mueve el cursor hacia atrás el número de filas dado. Por ejemplo, en el siguiente fragmente de código, el cursor se mueve a la cuarta fila, luego a la primera y por último a la tercera. srs.absolute(4); // cursor está en la cuarta fila... srs.relative(-3); // cursor está en la primera fila... srs.relative(2); // cursor está en la tercera fila El método getrow permite comprobar el número de fila donde está el cursor. Por ejemplo, se puede utilizar getrow para verificar la posición actual del cursor en el ejemplo anterior. srs.absolute(4); int rownum = srs.getrow(); // rownum debería ser 4 Práctica Resuelta - Página 34 de 38 (Mario Bressano / Miguel Iwanow)

35 srs.relative(-3); int rownum = srs.getrow(); // rownum debería ser 1 srs.relative(2); int rownum = srs.getrow(); // rownum debería ser 3 Existen cuatro métodos adicionales que permiten verificar si el cursor se encuentra en una posición particular. La posición se indica en sus nombres:isfirst, islast, isbeforefirst, isafterlast. Todos estos métodos devuelven un boolean y por lo tanto pueden ser utilizados en una sentencia condicional. Por ejemplo, el siguiente fragmento de código comprueba si el cursor está después de la última fila antes de llamar al método previous en un bucle while. Si el método isafterlast devuelve false, el cursor no estará después de la última fila, por eso se llama al método afterlast. Esto garantiza que el cursor estará después de la última fila antes de utilizar el método previous en el bucle while para cubrir todas las filas de srs. if (srs.isafterlast() == false) { srs.afterlast(); while (srs.previous()) { String name = srs.getstring("cof_name"); float price = srs.getfloat("price"); System.out.println(name + " " + price); Ejercicio 10: Acceso de un servlet a una BD //Archivo ConexionDB import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.sql.*; public class ConexionDb extends HttpServlet { Connection conexion = null; public void init(servletconfig conf) throws ServletException { Práctica Resuelta - Página 35 de 38 (Mario Bressano / Miguel Iwanow)

envía al browser. El browser despliega el archivo.

envía al browser. El browser despliega el archivo. SERVLETS Dr. Raúl Perez Páginas web estáticas Como se despliega una página web en un browser Normalmente la página se crea usando HTML y se almacena como un archivo en el servidor de web. El usuario escribe

Más detalles

USANDO SERVLETS EN UN SERVIDOR WEB RESIN

USANDO SERVLETS EN UN SERVIDOR WEB RESIN USANDO SERVLETS EN UN SERVIDOR WEB RESIN Servidor Web Resin Resin es un servidor web que permite no solo despachar un página web, sino aplicaciones web construidos bajo la arquitectura J2EE, así como el

Más detalles

Formularios HTML. Elementos de Programación y Lógica

Formularios HTML. Elementos de Programación y Lógica Formularios HTML Elementos de Programación y Lógica Formularios HTML es un lenguaje de marcado cuyo propósito principal consiste en estructurar los contenidos de los documentos y páginas web. Sin embargo,

Más detalles

Web Tier en JAVA. Nicolás Troncoso Carrère. Valparaíso, 2006. ILI 258 Departamento de Informática Universidad Técnica Federico Santa María

Web Tier en JAVA. Nicolás Troncoso Carrère. Valparaíso, 2006. ILI 258 Departamento de Informática Universidad Técnica Federico Santa María Nicolás Troncoso Carrère ILI 258 Departamento de Informática Universidad Técnica Federico Santa María Valparaíso, 2006 1 2 3 Porqué paginas dinamicas? Confirmacion de suscripciones. Contenido generado

Más detalles

SERVLETS CÁTEDRA DE PROGRAMACIÓN AVANZADA. Ing. Mario Bressano & Luciano Diamand ENVÍO 04

SERVLETS CÁTEDRA DE PROGRAMACIÓN AVANZADA. Ing. Mario Bressano & Luciano Diamand ENVÍO 04 SERVLETS 2012 CÁTEDRA DE PROGRAMACIÓN AVANZADA Ing. Mario Bressano & Luciano Diamand ENVÍO 04 Qué es un Servlet? Interacción en Internet Cuando vamos a un restaurante, el mozo toma el pedido y se lo pasa

Más detalles

Tema 5: Tecnologías Web

Tema 5: Tecnologías Web Apuntes de Introducción a Internet Tema 5: Tecnologías Web Uploaded by Ingteleco http://ingteleco.webcindario.com ingtelecoweb@hotmail.com La dirección URL puede sufrir modificaciones en el futuro. Si

Más detalles

Servlets. Unidad: 4 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

Servlets. Unidad: 4 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos Servlets Unidad: 4 Laboratorio de Programación Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos Indice Introducción CGI Servlets: concepto, caracteristicas Servlets Vs. CGI Ciclo

Más detalles

SERVLETS MARIO OSVALDO BRESSANO

SERVLETS MARIO OSVALDO BRESSANO SERVLETS MARIO OSVALDO BRESSANO 1 Qué es un Servlet? Interacción en Internet Cuando vamos a un restaurante, el mozo toma el pedido y se lo pasa al personal de la cocina. Al completarse el pedido, el mozo

Más detalles

Implementando nuestro primer servlet

Implementando nuestro primer servlet Servlets (II) * Departamento de Ingeniería Telemática http://www.it.uc3m.es/mario http://www.it.uc3m.es/berto (*) Agradecimientos a Lourdes Tajes en cuyo material docente se basa parcialmente esta presentación

Más detalles

Tutorial Servicios Web

Tutorial Servicios Web Tutorial Servicios Web 1. Servicios Web con REST Como ya hemos usado SOAP para WebService, podemos afirmar que es bien fácil de diseñar, pero algo complicado de consumir: se necesita toda una API para

Más detalles

XAJAX: una librería de AJAX para PHP (parte 1)

XAJAX: una librería de AJAX para PHP (parte 1) XAJAX: una librería de AJAX para PHP (parte 1) AJAX es el acrónimo de Asynchronous Javascript And XML o Javascript y XML asíncronos dicho en nuestro idioma. Se trata de una combinación de tecnologías que

Más detalles

Programación con JDBC (Java DataBase Connectivity ), Servlets y JSP (Java Server Pages)

Programación con JDBC (Java DataBase Connectivity ), Servlets y JSP (Java Server Pages) Programación con JDBC (Java DataBase Connectivity ), Servlets y JSP (Java Server Pages) Autor: José Vicente Núñez Zuleta (jose@eud.com, josevnz@yahoo.com) Puntos a tratar Qué es JDBC? Arquitectura de un

Más detalles

1.1.- Introducción a la Web Vemos una introducción al medio donde se encajan los lenguajes que vamos a tratar: la web.

1.1.- Introducción a la Web Vemos una introducción al medio donde se encajan los lenguajes que vamos a tratar: la web. Sesión 01: Introducción a los lenguajes web COMPUTACION E INFORMATICA WEB DEVELOPPER III Competencias a Conseguir: - Introducción general a la programación web. - Conocer y diferenciar el concepto de páginas

Más detalles

Ejemplos de Servlet y JSP Web Application Development

Ejemplos de Servlet y JSP Web Application Development Ejemplos de Servlet y JSP Web Application Development HERNÁNDEZ CRUZ DULCE 13/09/2011 INTRODUCCIÓN Servlets Los Servlets son módulos que extienden los servidores orientados a petición-respuesta, como los

Más detalles

NIVEL 16: ESTRUCTURAS N-ARIAS RECURSIVAS Aplicaciones Web, Html y Servlets. ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.

NIVEL 16: ESTRUCTURAS N-ARIAS RECURSIVAS Aplicaciones Web, Html y Servlets. ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu. 1 NIVEL 16: ESTRUCTURAS N-ARIAS RECURSIVAS Aplicaciones Web, Html y Servlets 2 Agenda Protocolo HTTP Formas HTML Servlets 3 Protocolo HTTP Hypertext Transfer Protocol (HTTP) - 1990 Versión 1.1 Mecanismo

Más detalles

GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B)

GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B) APRENDERAPROGRAMAR.COM GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B) Sección: Cursos Categoría: Tutorial básico del programador web: HTML desde cero Fecha

Más detalles

Programación Orientada a Objetos con Java

Programación Orientada a Objetos con Java Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer jorgeeie@uabc.mx Sobrecarga de métodos Java permite la definición de dos o más métodos que tengan el mismo nombre, dentro de la

Más detalles

Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010)

Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010) Tecnologías de programación en la Web Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010) Jesús Arias Fisteus & Andrés Marín López jaf, amarin@it.uc3m.es Tecnologías de programación en la Web p.

Más detalles

Figura 7-1 Enlace para instalar el servidor web Apache Jakarta Tomcat 4.1.12.

Figura 7-1 Enlace para instalar el servidor web Apache Jakarta Tomcat 4.1.12. Unidad 7 Servlets 7.1 Marco teórico Lo que permite que ordenadores remotos con procesadores y sistemas operativos diferentes se entiendan y en definitiva que Internet funcione como lo hace en la actualidad,

Más detalles

PHP: Interacción con HTML

PHP: Interacción con HTML Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Variables En algunas ocasiones es necesario saber si una variable tiene

Más detalles

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

MANUAL DE AYUDA MÓDULO GOTELGEST.NET PREVENTA/AUTOVENTA

MANUAL DE AYUDA MÓDULO GOTELGEST.NET PREVENTA/AUTOVENTA MANUAL DE AYUDA MÓDULO GOTELGEST.NET PREVENTA/AUTOVENTA Fecha última revisión: Septiembre 2014 MANUAL DE AYUDA MÓDULO GOTELGEST.NET PREVENTA/AUTOVENTA MÓDULO GOTELGEST.NET MÓVIL... 3 1. INTRODUCCIÓN A

Más detalles

ISJu: Técnicas de Programación Cartilla Teórica-Práctica 2014. Instalación del "Eclipse IDE for Java EE Developers" y el servidor "Apache Tomcat"

ISJu: Técnicas de Programación Cartilla Teórica-Práctica 2014. Instalación del Eclipse IDE for Java EE Developers y el servidor Apache Tomcat Unidad 6: Servlets Instalación del "Eclipse IDE for Java EE Developers" y el servidor "Apache Tomcat" "Eclipse IDE for Java EE Developers" Para desarrollar aplicaciones que se ejecuten en un servidor web

Más detalles

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro USAR MYSQL EN PHP PHP tiene una librería de funciones nativas para conectarse a las base de datos MySQL. Por un lado reconoce la librería mysql y por otro mysqli. Se recomienda el uso de mysqli dado que

Más detalles

Sistemas de Información 12/13 Ejercicios Tecnologías Web

Sistemas de Información 12/13 Ejercicios Tecnologías Web 12/13 Ejercicios Tecnologías Web Departamento Informática e Ingeniería de Sistemas Universidad de Zaragoza (raqueltl@unizar.es) " Guión Introducción sesiones y cookies con Servlets Ejercicio 1: Preguntas

Más detalles

Guía de migración a firma HMAC SHA256 Conexión por Redirección

Guía de migración a firma HMAC SHA256 Conexión por Redirección Guía de migración a firma HMAC SHA256 Conexión por Versión: 1.7 Versión: 1.7 i Autorizaciones y control de versión Versión Fecha Afecta Breve descripción del cambio 1.0 06/10/2015 Versión inicial del documento

Más detalles

RECUPERAR DATOS DE UN FORMULARIO HTML USANDO PHP. USO DE $_GET. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00833B)

RECUPERAR DATOS DE UN FORMULARIO HTML USANDO PHP. USO DE $_GET. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00833B) APRENDERAPROGRAMAR.COM RECUPERAR DATOS DE UN FORMULARIO HTML USANDO PHP. USO DE $_GET. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00833B) Sección: Cursos Categoría: Tutorial básico del programador web: PHP desde

Más detalles

Práctica 4 PROGRAMACIÓN WEB CON SERVLETS Y JSP. 1. Introducción a JSP... 2

Práctica 4 PROGRAMACIÓN WEB CON SERVLETS Y JSP. 1. Introducción a JSP... 2 Tabla de contenidos Práctica 4 PROGRAMACIÓN WEB CON SERVLETS Y JSP 1. Introducción a JSP... 2 1.1. Que es Java Server Page (JSP)?...2 1.2. Diferencias entre JSP y Servlet...2 1.3. Características de JSP...2

Más detalles

Requisitos. Universidad ORT Arquitectura de Software

Requisitos. Universidad ORT Arquitectura de Software Requisitos Java Development Kit (JDK) 1.5 o superior NetBeans IDE 6.5 o superior JBoss Application Server 4.2.x o 5.x.x Variable de entorno JAVA_HOME apuntando al directorio de instalación de la JDK 1

Más detalles

MANUAL DEL PROGRAMA DE ASESORAMIENTO (Asesores) Navegador y limpiar caché/cookies...2 Acceso al programa de Asesoramiento... 7

MANUAL DEL PROGRAMA DE ASESORAMIENTO (Asesores) Navegador y limpiar caché/cookies...2 Acceso al programa de Asesoramiento... 7 MANUAL DEL PROGRAMA DE ASESORAMIENTO (Asesores) Índice Pasos previos a la visualización del programa: Navegador y limpiar caché/cookies...2 Acceso al programa de Asesoramiento... 7 Conceptos e información

Más detalles

Menús. Gestor de Menús

Menús. Gestor de Menús Menús Para dar acceso a las categorías, artículos y generar espacio para los módulos se deben crear menús, éstos son enlaces a determinado recurso en el portal Web, sin ellos no es posible visualizar ninguno

Más detalles

La ventana de Microsoft Excel

La ventana de Microsoft Excel Actividad N 1 Conceptos básicos de Planilla de Cálculo La ventana del Microsoft Excel y sus partes. Movimiento del cursor. Tipos de datos. Metodología de trabajo con planillas. La ventana de Microsoft

Más detalles

Cada vez que la misma computadora solicita una página pg con un browser, junto con la solicitud el browser envía la cookie al servidor.

Cada vez que la misma computadora solicita una página pg con un browser, junto con la solicitud el browser envía la cookie al servidor. Cookies 1 Que son las cookies? Una cookie es una variable almacenada por el servidor en la computadora del cliente. Cada vez que la misma computadora solicita una página pg con un browser, junto con la

Más detalles

Conexión de Mysql con NetBeans

Conexión de Mysql con NetBeans Alumna: Keren Monge Cid Materia: Web Application Development Maestro: Alejandro S. Álvarez Cifuentes Grupo: 3CM2 2do Departamental Conexión de Mysql con NetBeans Objetivo Realizar un programa que realice

Más detalles

Novell Vibe 4.0. Marzo de 2015. Inicio rápido. Inicio de Novell Vibe. Introducción a la interfaz de Novell Vibe y sus funciones

Novell Vibe 4.0. Marzo de 2015. Inicio rápido. Inicio de Novell Vibe. Introducción a la interfaz de Novell Vibe y sus funciones Novell Vibe 4.0 Marzo de 2015 Inicio rápido Cuando se empieza a usar Novell Vibe, en primer lugar se recomienda configurar un área de trabajo personal y crear un área de trabajo de Este documento explica

Más detalles

HP Backup and Recovery Manager

HP Backup and Recovery Manager HP Backup and Recovery Manager Manual de usuario Version 1.0 Índice Introducción Instalación Cómo se instala Opciones de idioma HP Backup and Recovery Manager Recordatorios Copias de sguridad programadas

Más detalles

CAPAS O CONTENEDORES EN HTML. ETIQUETAS DIV Y SPAN. EJEMPLOS. MAQUETAR O DAR ESTRUCTURA A LAS PÁGINAS WEB. (CU00726B)

CAPAS O CONTENEDORES EN HTML. ETIQUETAS DIV Y SPAN. EJEMPLOS. MAQUETAR O DAR ESTRUCTURA A LAS PÁGINAS WEB. (CU00726B) APRENDERAPROGRAMAR.COM CAPAS O CONTENEDORES EN HTML. ETIQUETAS DIV Y SPAN. EJEMPLOS. MAQUETAR O DAR ESTRUCTURA A LAS PÁGINAS WEB. (CU00726B) Sección: Cursos Categoría: Tutorial básico del programador web:

Más detalles

Tutorial Web Dinámica con Servlets y JSP Sesion 3

Tutorial Web Dinámica con Servlets y JSP Sesion 3 Tutorial Web Dinámica con Servlets y JSP Sesion 3 1. Eclipse Plataforma Web Tool Eclipse WTP proporciona herramientas para desarrollar aplicaciones web estándar Java y aplicaciones Java EE. Artefactos

Más detalles

Desarrollo Web en Entorno Servidor

Desarrollo Web en Entorno Servidor Desarrollo Web en Entorno Servidor Tema 1: Introducción 1. Tipos de páginas Web. 2. Instalación del software. (XAMPP) 1 Tipos de páginas Web. Páginas estáticas. Páginas dinámicas. 2 Tipos de páginas Web.

Más detalles

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT Versión 1. Mayo de 2001 Luis Vinuesa Martínez. Departamento de Informática Universidad de Oviedo vinuesa@correo.uniovi.es www.di.uniovi.es/~vinuesa ÍNDICE. Introducción...

Más detalles

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

En cualquier caso, tampoco es demasiado importante el significado de la B, si es que lo tiene, lo interesante realmente es el algoritmo. Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa

Más detalles

CAPITULO 3 MOVILIDAD EN LA NAVEGACIÓN Y ALMACENAMIENTO EN BASES DE DATOS

CAPITULO 3 MOVILIDAD EN LA NAVEGACIÓN Y ALMACENAMIENTO EN BASES DE DATOS CAPITULO 3 MOVILIDAD EN LA NAVEGACIÓN Y ALMACENAMIENTO EN BASES DE DATOS La introducción de las redes locales marca una nueva etapa en la evolución de las computadoras personales al permitir ligar varias

Más detalles

Manejo de datos BLOB con PHP y MySQL

Manejo de datos BLOB con PHP y MySQL Manejo de datos BLOB con PHP y MySQL Los detalles acerca del almacenamiento y recuperación de archivos binarios en una base de datos MySQL con el uso de PHP. Fecha de creación: 29 May del 2003-12:39 pm

Más detalles

Partes del formulario

Partes del formulario Partes del formulario Etiqueta La etiqueta presenta los siguientes atributos: Comando ACTION METHOD ENCTYPE Descripción El valor de este parámetro es la URL del programa o script en el Servidor

Más detalles

Instructivo Asesoría Básica Comunidad Virtual SharePoint 2010

Instructivo Asesoría Básica Comunidad Virtual SharePoint 2010 Instructivo Asesoría Básica Comunidad Virtual SharePoint 2010 CONTENIDO 1. Qué es? 2. Cómo crear y acceder a la Comunidad Virtual en Microsoft SharePoint 2010? Ejemplo. 3. Qué tengo en la página de inicio

Más detalles

Implementación CAPÍTULO 4

Implementación CAPÍTULO 4 Implementación CAPÍTULO 4 55 CAPÍTULO 4 Implementación En este capítulo se especifican los detalles del desarrollo, las herramientas utilizadas y los diagramas de paquetes. Todas las clases fueron programadas

Más detalles

Unidad IV: Servlets. Comprender la estructura básica de los Servlets Crear servlets sencillos Presentar el ciclo de vida de un Servlet.

Unidad IV: Servlets. Comprender la estructura básica de los Servlets Crear servlets sencillos Presentar el ciclo de vida de un Servlet. Unidad IV: Servlets Introducción Este unidad presenta los conceptos de Servlets Objetivos Comprender la estructura básica de los Servlets Crear servlets sencillos Presentar el ciclo de vida de un Servlet.

Más detalles

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL Índice 1 Introducción... 5 1.1 Perfil de la aplicación... 5 1.2 Requisitos técnicos... 5 2 Manual de usuario... 7 2.1 Instalación del certificado...

Más detalles

Capitulo 5. Implementación del sistema MDM

Capitulo 5. Implementación del sistema MDM Capitulo 5. Implementación del sistema MDM Una vez que se concluyeron las actividades de análisis y diseño se comenzó la implementación del sistema MDM (Manejador de Documentos de MoProSoft). En este capitulo

Más detalles

Webmail de Inter. Para poder aprovechar al máximo este servicio, es fundamental comprender algunos simples conceptos.

Webmail de Inter. Para poder aprovechar al máximo este servicio, es fundamental comprender algunos simples conceptos. Webmail de Inter El siguiente instructivo te ayudará a utilizar correctamente su servicio de correo electrónico web. Si con lo expuesto aquí no aclaras tus dudas, puedes comunicarse con nuestro soporte

Más detalles

Modelo de Objetos Distribuidos

Modelo de Objetos Distribuidos Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo

Más detalles

IDENTIFICACIÓN DE LA ACTIVIDAD PEDAGÓGICA

IDENTIFICACIÓN DE LA ACTIVIDAD PEDAGÓGICA PROGRAMA DE FORMACIÓN UNIDAD DE APRENDIZAJE ACTIVIDAD OBJETIVOS IDENTIFICACIÓN DE LA ACTIVIDAD PEDAGÓGICA OFIMATICA Y AUXILIAR DE SISTEMAS II-A GESTORES DE CONTENIDO INSTALACIÓN DE JOOMLA Y CREACIÓN DE

Más detalles

La publicación. Pere Barnola Augé P08/93133/01510

La publicación. Pere Barnola Augé P08/93133/01510 La publicación Pere Barnola Augé P08/93133/01510 FUOC P08/93133/01510 La publicación Índice Introducción... 5 1. El dominio... 7 2. Alojamiento web... 9 3. FTP... 11 3.1. Cliente FTP... 11 3.1.1. Cómo

Más detalles

Manual de ayuda para la utilización del Correo Interno en el Campus Virtual

Manual de ayuda para la utilización del Correo Interno en el Campus Virtual Manual de ayuda para la utilización del Correo Interno en el Campus Virtual Página 1 de 12 Contenido 1. INTRODUCCIÓN... 3 2. CONFIGURACIÓN DEL BLOQUE DE CORREO INTERNO... 3 3. GESTIÓN DEL CORREO... 4 4.

Más detalles

Bases de Datos. Marta Elena Zorrilla Pantaleón Rafael Duque Medina DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN

Bases de Datos. Marta Elena Zorrilla Pantaleón Rafael Duque Medina DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN Bases de Datos Tema 05. Proto-po de una aplicación de base de datos Marta Elena Zorrilla Pantaleón Rafael Duque Medina DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN Este tema se publica bajo Licencia:

Más detalles

INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE CÓMPUTO

INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE CÓMPUTO INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE CÓMPUTO TEMA: REPORTE DEL PROYECTO SEGUNDO DEPARTAMENTAL ALUMNOS: RAMIREZ DOMINGUEZ LUIS MARIO MENDEZ RODRIGUEZ KAREN PINEDA REYES GABRIELA IVONNE GRUPO:

Más detalles

Luis Eduardo Barón Bienvenidos al Módulo N. 3 de Internet Para Emprendedores. Yo soy Luis Eduardo Barón. Álvaro Mendoza Y yo soy Álvaro Mendoza.

Luis Eduardo Barón Bienvenidos al Módulo N. 3 de Internet Para Emprendedores. Yo soy Luis Eduardo Barón. Álvaro Mendoza Y yo soy Álvaro Mendoza. Bienvenidos al Módulo N. 3 de Internet Para Emprendedores. Yo soy Luis Eduardo Barón. Y yo soy. En el día de hoy tenemos un módulo que has estado esperando. Ya viste cómo puedes buscar tu mercado, cómo

Más detalles

SISTEMAS OPERATIVOS AVANZADOS

SISTEMAS OPERATIVOS AVANZADOS SISTEMAS OPERATIVOS AVANZADOS TEMA 3 CLAVE: MIS 204 PROFESOR: M.C. ALEJA DRO GUTIÉRREZ DÍAZ 3. PROCESOS CONCURRENTES 3.1 Conceptos de programación concurrente 3.2 El problema de la sección crítica 3.3

Más detalles

SISTEMA ETAP en línea Estándares Tecnológicos para la Administración Pública

SISTEMA ETAP en línea Estándares Tecnológicos para la Administración Pública JEFATURA DE GABINETE DE MINISTROS SISTEMA ETAP en línea Estándares Tecnológicos para la Administración Pública Manual para los Organismos Índice Índice... 2 Descripción... 3 Cómo solicitar la intervención

Más detalles

EXTENSIÓN DE UML PARA APLICACIONES WEB

EXTENSIÓN DE UML PARA APLICACIONES WEB EXTENSIÓN DE UML PARA APLICACIONES WEB 1. Descripción Esta extensión de UML define un conjunto de estereotipos, valores etiquetados y restricciones que nos permiten modelar aplicaciones web. Los estereotipos

Más detalles

Estimado usuario. Tabla de Contenidos

Estimado usuario. Tabla de Contenidos Estimado usuario. El motivo del presente correo electrónico es mantenerle informado de las mejoras y cambios realizados en el software Orathor (Athor/Olimpo) en su versión 5.7.041 la cual ha sido recientemente

Más detalles

J2EE Java 2 Enterprise Edition

J2EE Java 2 Enterprise Edition J2EE Java 2 Enterprise Edition Es el framework oficial de Java para la construcción de aplicaciones empresariales Es una tecnología basada en componentes Ofrece un modelo para el desarrollo de aplicaciones

Más detalles

Desarrollo de Servicios Web con JBuilder

Desarrollo de Servicios Web con JBuilder Artículos técnicos Grupo Danysoft: Desarrollo de Servicios Web con JBuilder Primera parte Oscar Cristobal Ruiz Departamento Java Equipo Grupo Danysoft Febrero 2003 - (902) 123146 www.danysoft.com Desarrollo

Más detalles

Clase. geniería de la Computación. Departamento de Ciencias e Ing. Diego C. Martínez - DCIC-UNS

Clase. geniería de la Computación. Departamento de Ciencias e Ing. Diego C. Martínez - DCIC-UNS Tecnología de Programación Clase 22 Diego C. Martínez Departamento de Ciencias e Ing geniería de la Computación Universidad Nacional del Sur Componentes Web J2EE presenta los componentes Web (web components):

Más detalles

HERRAMIENTAS DE ACCESS ACCESS 2010. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

HERRAMIENTAS DE ACCESS ACCESS 2010. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE HERRAMIENTAS DE ACCESS ACCESS 2010 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE HERRAMIENTAS DE ACCESS En esta unidad veremos algunas de las herramientas incorporadas de Access que

Más detalles

Proyectos de Innovación Docente

Proyectos de Innovación Docente Proyectos de Innovación Docente Manual de Usuario Vicerrectorado de Docencia y Profesorado Contenido INTRODUCCIÓN... 3 DATOS PERSONALES... 6 Modificar email... 6 Modificar contraseña... 7 GESTIÓN PROYECTOS...

Más detalles

Squipy v1.1. 0.-Introducción

Squipy v1.1. 0.-Introducción Squipy v1.1 0.-Introducción Squipy es un sencillo proxy que permite filtrar y modificar los datos que se envían desde el navegador hacia un servidor web. El interfaz está en castellano y en inglés y su

Más detalles

Resumen del módulo EZ Web Lynx.

Resumen del módulo EZ Web Lynx. Resumen del módulo EZ Web Lynx. Este documento es común a todas las prácticas diseñadas por este grupo de trabajo. CARACTERÍSTICAS Comenzamos con un repaso de las y funciones que ofrece el módulo servidor

Más detalles

Centro de Capacitación en Informática

Centro de Capacitación en Informática Fórmulas y Funciones Las fórmulas constituyen el núcleo de cualquier hoja de cálculo, y por tanto de Excel. Mediante fórmulas, se llevan a cabo todos los cálculos que se necesitan en una hoja de cálculo.

Más detalles

Generador GeneXus JAVA

Generador GeneXus JAVA Generador GeneXus JAVA Última actualización: 2009 Copyright Artech Consultores S. R. L. 1988-2009. Todos los derechos reservados. Este documento no puede ser reproducido en cualquier medio sin el consentimiento

Más detalles

WinHIPE: edición, compilación y ejecución de programas; y generación de animaciones web. Manual de usuario.

WinHIPE: edición, compilación y ejecución de programas; y generación de animaciones web. Manual de usuario. WinHIPE: edición, compilación y ejecución de programas; y generación de animaciones web. Manual de usuario. Índice contenido. INTRODUCCIÓN... 1-2 1. ENTORNO DE TRABAJO... 1-2 2. EDICIÓN DE PROGRAMAS...

Más detalles

Para ingresar al mismo debes hacer click en el ícono correspondiente en el panel de control.

Para ingresar al mismo debes hacer click en el ícono correspondiente en el panel de control. Aplicable a Hosting Linux Cpanel 11.25.0-C40255 Principales funciones del Administrador de Archivos... El administrador de archivos del panel te permite trabajar con todos los archivos que has subido al

Más detalles

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F)

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F) APRENDERAPROGRAMAR.COM LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F) Sección: Cursos Categoría: Curso básico de programación en lenguaje C desde

Más detalles

5.2.1 La Página Principal

5.2.1 La Página Principal 5.2 Las Páginas WEB Una página Web es un documento electrónico escrito en un lenguaje de ordenador llamado HTML, o Hypertext Markup Language (lenguaje de marcación de hipertexto). Como ya hemos dicho,

Más detalles

PROGRAMACIÓN JEE CON SERVLETS

PROGRAMACIÓN JEE CON SERVLETS INTRODUCCIÓN A LOS SERVLETS PROGRAMACIÓN JEE CON SERVLETS Los Servlets son clases Java que se ejecutan en un servidor de aplicación, para contestar a las peticiones de los clientes. Los Servlets no se

Más detalles

Base de datos en la Enseñanza. Open Office

Base de datos en la Enseñanza. Open Office 1 Ministerio de Educación Base de datos en la Enseñanza. Open Office Módulo 1: Introducción Instituto de Tecnologías Educativas 2011 Introducción Pero qué es una base de datos? Simplificando mucho, podemos

Más detalles

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS. GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS. 1 Direcciones o Ubicaciones, Carpetas y Archivos Botones de navegación. El botón Atrás permite volver a carpetas que hemos examinado anteriormente. El botón Arriba

Más detalles

QUÉ ES UNA BASE DE DATOS Y CUÁLES SON LOS PRINCIPALES TIPOS? EJEMPLOS: MYSQL, SQLSERVER, ORACLE, POSTGRESQL, INFORMIX (DV00204A)

QUÉ ES UNA BASE DE DATOS Y CUÁLES SON LOS PRINCIPALES TIPOS? EJEMPLOS: MYSQL, SQLSERVER, ORACLE, POSTGRESQL, INFORMIX (DV00204A) APRENDERAPROGRAMAR.COM QUÉ ES UNA BASE DE DATOS Y CUÁLES SON LOS PRINCIPALES TIPOS? EJEMPLOS: MYSQL, SQLSERVER, ORACLE, POSTGRESQL, INFORMIX (DV00204A) Sección: Divulgación Categoría: Lenguajes y entornos

Más detalles

Internet Information Server

Internet Information Server Internet Information Server Internet Information Server (IIS) es el servidor de páginas web avanzado de la plataforma Windows. Se distribuye gratuitamente junto con las versiones de Windows basadas en

Más detalles

Guías técnicas Grupo Danysoft: Aplicaciones Web seguras con ASP.NET

Guías técnicas Grupo Danysoft: Aplicaciones Web seguras con ASP.NET Guías técnicas Grupo Danysoft: Aplicaciones Web seguras con ASP.NET Leonardo Diez Equipo Grupo Danysoft septiembre de 2003 - (902) 123146 www.danysoft.com Este documento se ha realizado utilizando Doc-To-Help,

Más detalles

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable 1. Introducción. El Sistema de Administración de Información de un Negocio Franquiciable (SAINF)

Más detalles

Introducción a los servlets

Introducción a los servlets Introducción a los servlets (Febrero de 2005) Introducción En breve: un servlet es un programa ejecutado en el servidor (a diferencia de los applets que se ejecutan en el cliente). Es un mecanismo para

Más detalles

ATLAS PERSISTENCIA DE SESIONES EN BASE DE DATOS CON WEBLOGIC 9.2

ATLAS PERSISTENCIA DE SESIONES EN BASE DE DATOS CON WEBLOGIC 9.2 ATLAS PERSISTENCIA DE SESIONES EN BASE DE DATOS CON WEBLOGIC 9.2 Versión 1.0 Área de Integración y Arquitectura de Aplicaciones Hoja de Control Título con Weblogic 9.2 Documento de Referencia Responsable

Más detalles

Curso Internet Básico - Aularagon

Curso Internet Básico - Aularagon Antes de empezar es necesario que tengas claro algunas cosas: para configurar esta cuenta de correo, debes saber que el POP y el SMTP en este caso son mail.aragon.es; esta cuenta de correo hay que solicitarla

Más detalles

Descarga Automática. Manual de Usuario. Operador del Mercado Ibérico de Energía - Polo Español Alfonso XI, 6 28014 Madrid

Descarga Automática. Manual de Usuario. Operador del Mercado Ibérico de Energía - Polo Español Alfonso XI, 6 28014 Madrid Descarga Automática Manual de Usuario Operador del Mercado Ibérico de Energía - Polo Español Alfonso XI, 6 28014 Madrid Versión 5.2 Fecha: 2008-10-15 Ref : MU_DescargaAutomática.doc ÍNDICE 1 INTRODUCCIÓN...

Más detalles

Un servlet es una clase java que implementa la Servlet interface. Un servlet corre dentro de un contexto denominado Servlet engine.

Un servlet es una clase java que implementa la Servlet interface. Un servlet corre dentro de un contexto denominado Servlet engine. Capítulo 6 Servlets En esta sección se va a tratar el primer componente que corre del lado del servidor, y es uno de los puntos fundamentales para la comunicación entre el cliente (browser) y el servidor.

Más detalles

OBJETIVO: Introducción al editor de páginas web Macromedia Dreamweaver.

OBJETIVO: Introducción al editor de páginas web Macromedia Dreamweaver. SEMINARIO DIOCESANO DE CRISTO SACERDOTE TECNOLOGIA EN INFORMATICA GRADO: 11 TEMA: INTRODUCCIÓN A MACROMEDIA DREAMWEAVER OBJETIVO: Introducción al editor de páginas web Macromedia Dreamweaver. 1 Qué es

Más detalles

PROYECTO MIS IMÁGENES,

PROYECTO MIS IMÁGENES, Jose Ignacio González Gómez. Departamento de Economía Financiera y Contabilidad Universidad de La Laguna www.jggomez.eu Tema: Script para subir ficheros a través de un formulario y almacenar otros campos

Más detalles

Programación Gambas 3 Prof: Mileti, P. Acceso a base de datos SQLite desde Gambas 3.

Programación Gambas 3 Prof: Mileti, P. Acceso a base de datos SQLite desde Gambas 3. Acceso a base de datos SQLite desde Gambas 3. Si deseamos realizar una pequeña aplicación en Gambas que trabaje con una base de datos local (alojada en el mismo disco rígido que nuestra aplicación), la

Más detalles

UTILIZACIÓN DE UNA CUENTA DE CORREO ELECTRÓNICO (NUEVO) Acceso al correo electrónico

UTILIZACIÓN DE UNA CUENTA DE CORREO ELECTRÓNICO (NUEVO) Acceso al correo electrónico Acceso al correo electrónico Pasamos ahora a lo que sería usar la cuenta de correo que nos hicimos en la clase anterior. Lo primero que hacemos es entrar en la página web de Yahoo y localizar el icono

Más detalles

Módulo 8: Ofimática básica. Unidad didáctica 4: Introducción y modificación de datos. Access

Módulo 8: Ofimática básica. Unidad didáctica 4: Introducción y modificación de datos. Access Módulo 8: Ofimática básica Unidad didáctica 4: Introducción y modificación de datos Access UNIDAD DIDÁCTICA 4 Introducción y modificación de datos Créditos Autor/es: Fuentes Innovación y Cualificación

Más detalles

Curso Java Web (JSP's/Servlets)

Curso Java Web (JSP's/Servlets) Curso Java Web (JSP's/Servlets) JSP's ("Java Server Pages") Composición Un JSP ("Java Server Page") es uno de los componentes más básicos empleados para aplicaciones de Servidor en Java. Su composición

Más detalles

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN 3.3 Aplicaciones Definición de Aplicación (Application). Programa informático que permite a un usuario utilizar una computadora con un fin específico. Las

Más detalles

El proceso de edición digital en Artelope y CTCE

El proceso de edición digital en Artelope y CTCE El proceso de edición digital en Artelope y CTCE Carlos Muñoz Pons Universitat de València carlos.munoz-pons@uv.es Introducción Una de las cuestiones más importantes a la hora de trabajar en proyectos

Más detalles

Qué es una máquina virtual?

Qué es una máquina virtual? Instalación de Windows XP en una máquina virtual utilizando Sun VirtualBox. Vamos a empezar este tutorial dando una pequeña explicación acerca de que es una máquina virtual y luego vamos a proceder a instalar

Más detalles

Tema 7. Construcción de Applets en Java

Tema 7. Construcción de Applets en Java Programación en Java Tema 7. Construcción de Applets en Java Luis Rodríguez Baena Facultad de Informática Applets Aplicación Java que se ejecuta dentro de un cliente web para ampliar las capacidades de

Más detalles

MANUAL COPIAS DE SEGURIDAD

MANUAL COPIAS DE SEGURIDAD MANUAL COPIAS DE SEGURIDAD Índice de contenido Ventajas del nuevo sistema de copia de seguridad...2 Actualización de la configuración...2 Pantalla de configuración...3 Configuración de las rutas...4 Carpeta

Más detalles

INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE COMPUTO

INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE COMPUTO INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE COMPUTO INTEGRANTES SANLUIS CASTILLO JOSE DAVID MATERIA WEB APPLICATIONS DEVELOPMENT PROFESOR CIFUENTES ALVAREZ ALEJANDRO SIGFRIDO. PRACTICA USO DE GET,

Más detalles

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS Servicio DNS - 1 - Servicio DNS...- 3 - Definición... - 3 - Instalación... - 5 - Configuración del Servidor DNS...- 10 - - 2 - Servicio DNS Definición

Más detalles

GUÍA DE CONFIGURACIÓN PC PARA HACER USO DE LA SEDE ELECTRÓNICA DEL CABILDO DE GRAN CANARIA

GUÍA DE CONFIGURACIÓN PC PARA HACER USO DE LA SEDE ELECTRÓNICA DEL CABILDO DE GRAN CANARIA GUÍA DE CONFIGURACIÓN PC PARA HACER USO DE LA SEDE ELECTRÓNICA DEL CABILDO DE GRAN CANARIA CONTROL DE CAMBIOS Versión Fecha Páginas afectadas Cambios 1.0 14/10/2015 Todas Versión inicial del documento

Más detalles