SERVLETS MARIO OSVALDO BRESSANO
|
|
- Ángela San Martín Herrera
- hace 8 años
- Vistas:
Transcripción
1 SERVLETS MARIO OSVALDO BRESSANO 1
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. 2
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. 3
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 4
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. 5
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. 6
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). 7
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> 8
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 <servlet-name>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; 9
10 import javax.servlet.servletexception; 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 10
11 ellas (este es tu caso). El valor es indiferente, pero debes actualizarlo cada vez 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 HttpServletRequest request, HttpServletResponse response. 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: 11
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(); 12
13 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>\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.*; 13
14 public class CeroServlet extends HttpServlet { 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 14
15 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) 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 15
16 <html> <body> <h1>método GET Y POST</h1> <form method="get" action=" <table border=1> <tr><td>nombres:</td><td><input name="nombre" type="text" style="width: 474px" /></td> <tr><td colspan=2><input type="submit" value="enviar datos por get"></td> </table> </form> <form method="post" action=" <table border=1> <tr><td>nombres:</td><td><input name="nombre" type="text" style="width: 474px" /></td> <tr><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; 16
17 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>"); 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.*; 17
18 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"); PrintWriter out = res.getwriter(); int tmp = contador; //incrementamos la variable contador contador++; 18
19 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.*; 19
20 public class Contador2 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"); PrintWriter out = res.getwriter(); int tmp; synchronized(this) { //leemos el contador tmp = contador; //incrementamos la variable contador contador++; 20
21 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: 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" " 21
22 <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"> 22
23 .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">redireccion POR FORMULARIO</p> <form method="get" action=" <table style="width: 100%"> <tr> <td class="style6" colspan="2"> <hr style="height: -71px" class="style2" /></td> <tr> 23
24 <tr><tr><tr> <tr> <tr> <td style="width: 159px" class="style6">indicar Página</td> <td class="style6"> <table style="width: 658px"> <tr> <td style="width: 218px"> value="mario" />MARIOBRESSANO</td> <input name="pagina" type="radio" checked="checked" <td style="width: 219px"> />PRIMERA</td><td style="width: 219px"></td> <input name="pagina" type="radio" value="primera" </table> </td> <tr> <td class="style6" valign="top" colspan="2"> <hr style="height: -71px" class="style2" /></td> <tr> 24
25 <td class="style6" valign="top" colspan="2"> <table align="center"> <tr> <td></td> /></td> <td><input name="submit1" type="submit" value="enviar datos" </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 { 25
26 String ubicacion = peticion.getparameter( "pagina" ); if ( ubicacion!= null ) if ( ubicacion.equals( "mario" )) respuesta.sendredirect( " ); else if ( ubicacion.equals( "primera" ) ) respuesta.sendredirect( "CeroServlet" ); // 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 26
27 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"> <P></P> <H2>Introduce tus datos:</h2><br> <HR></HR> <CENTER> <FORM ACTION=" METOD="POST"> <TABLE BORDER> <TR> <TD><B>Nombre:</TD> 27
28 <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"); 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>"); 28
29 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 <!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 { 29
30 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%"> <tr> <td class="style6" colspan="2"> <hr style="height: -71px" class="style2" /></td> <tr> <td style="width: 159px" class="style6">nombres</td> <td class="style6"> <input name="nombres" type="text" style="width: 474px" /></td> <tr> <td style="width: 159px" class="style6">apellido</td> <td class="style6"> <input name="apellido" type="text" style="width: 474px" /></td> <tr> <td style="width: 159px" class="style6">domicilio</td> <td class="style6"> <input name="domicilio" type="text" style="width: 474px" /></td> 30
31 <tr> <td style="width: 159px" class="style6">teléfono</td> <td class="style6"> <input name="telefono" type="text" style="width: 474px" /></td> <tr> <td style="width: 159px" class="style6"> </td> <td> <input name=" " type="text" style="width: 474px" /></td> <tr> <td style="width: 159px" class="style6">tarjeta de Crédito</td> <td class="style6"> <table style="width: 658px"> <tr> <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> </table> </td> <tr> <td style="width: 159px" class="style6" valign="top">observaciones</td> <td class="style6"> <textarea name="observaciones" style="width: 478px; height: 140px"></textarea></td> 31
32 <tr> <td class="style6" valign="top" colspan="2"> <hr style="height: -71px" class="style2" /></td> <tr> <td class="style6" valign="top" colspan="2"> <table align="center"> <tr> <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.*; 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(); 32
33 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); else { out.println("<ul>"); for (int i=0; i<contenidoscampo.length;i++) { out.println("<li>"+contenidoscampo[i]); out.println("</ul>"); 33
34 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: 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. 34
35 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 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_updatable ) 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 35
36 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). 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 36
37 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()) { 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); 37
38 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 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()) { 38
39 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 { super.init(conf); public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/html"); PrintWriter out = res.getwriter(); ResultSet tabla= null; Statement instruccion=null; try { //Leemos el driver Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String mibasededatos ="jdbc:odbc:driver={microsoft Access Driver (*.mdb);" +"DBQ=C:/bases/alumnos2010.mdb"; Connection conn = DriverManager.getConnection(miBasedeDatos); 39
40 //Decimos que nos hemos conectado out.println("<html>"); out.println("<body>"); out.println("<h1> Hemos conectado!</h1>"); out.println("</body>"); out.println("</html>"); instruccion = conn.createstatement(resultset.type_scroll_sensitive,resultset.concur_updatable); catch (ClassNotFoundException e1) { //Error si no puedo leer el driver out.println("error:no encuentro el driver de la BD: "+ e1.getmessage()); catch (SQLException e2) { //Error SQL: login/passwd mal out.println("error:fallo en SQL: "+e2.getmessage()); finally { //Finalmente desconecto de la BD try { if (conexion!=null) conexion.close(); catch (SQLException e3) { out.println("error:fallo al desconectar de la BD: "+ e3.getmessage()); try { tabla = instruccion.executequery("select * from dantealu"); out.println("<table Border=10 CellPadding=5><TR>"); out.println("<th bgcolor=white>nombre</th><th bgcolor=red>documento</th></tr>"); while(tabla.next()) { 40
41 out.println("<tr>"); out.println("<td>"+tabla.getstring(1)+"</td>"); out.println("<td>"+tabla.getstring(2)+"</td>"); out.println("</tr>"); ; out.println("</table><br>cerramos LA TABLA Y FINALIZAMOS</CENTER></DIV></HTML>"); tabla.close(); catch(sqlexception e) {; public void dopost(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { doget(req, res); Bibliografía: Título: Java. Cómo programar. Quinta Edición Autor: Deitel. Editorial: Pearson. Pretince Hall Título: Programación en Java 2 Autor: Luis Aguilar e Ignacio Zahonero Martínez Editorial: Mc. Graw Hill Título: Programación con Java Autor: Decaer - Hirshfield Editorial: Thompson Learning Web: Java en castellano Mario O. Bressano 41
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 detallesenví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 detalles2015 CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA
CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA Ings. Mario Bressano & Miguel Iwanow ENVÍO 11/2015 Qué es un Servlet? Interacción en Internet Cuando vamos a un restaurante, el mozo toma el pedido y se lo pasa
Más detallesNIVEL 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 detallesISJu: 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 detallesUSANDO 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 detallesConexió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 detallesFigura 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 detallesWeb 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 detallesServlets. 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 detallesUnidad 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 detallesEjemplos 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 detallesRequisitos. 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 detallesClase. 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 detallesJ2EE 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 detallesArquitectura J2EE para aplicaciones web. Aplicaciones web con JSP. Arquitectura J2EE: Capa de Acceso Web. Arquitectura J2EE: Capa Cliente
Aplicaciones web con JSP Arquitectura J2EE para aplicaciones web Aplicación Applet HTML Cliente Servidor web JSP Servlet Web EJB Java Beans Lógica Negocio Otras BDs, ERPs etc BD Oracle Datos Cliente Servidor(es)
Más detallesProgramació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 detallesProgramació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 detallesCapitulo 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 detallesIntroducció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 detallesUn 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 detallesPractica 11: Conexión de Java con Bases de datos Access
Practica 11: Conexión de Java con Bases de datos Access En esta práctica vamos a crear una base de datos Microsoft Access y luego vamos a conectarnos desde una aplicación java haciendo uso del puente JDBC-ODBC
Más detallesModelo 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 detallesCapí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 detallesSistemas de Información 12/13 Servlets y JSPs (Java Server Pages)
12/13 Servlets y JSPs (Java Server Pages) Departamento Informática e Ingeniería de Sistemas Universidad de Zaragoza (raqueltl@unizar.es) " Guión Introducción Servlets Introducción Clases e interfaces del
Más detallesIntroducción al desarrollo web (idesweb)
Introducción al desarrollo web (idesweb) Práctica 8: PHP 2 (cookies y sesiones) 1. Objetivos Conocer el concepto de cookie y sus posibles usos. Aprender a utilizar las cookies con PHP. Conocer el concepto
Más detallesCAPÍTULO 14. DESARROLLO
CAPÍTULO 14. DESARROLLO DE SISTEMAS ESPECÍFICOS 1. Introducción En los últimos años han aparecido multitud de nuevas plataformas para desarrollar aplicaciones y ponerlas en explotación. En este capítulos
Más detallesInternet 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 detallesManual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib
Manual de uso de la plataforma para monitores CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib [Manual de uso de la plataforma para monitores] 1. Licencia Autor del documento: Centro de Apoyo Tecnológico
Más detallesAGREGAR COMPONENTES ADICIONALES DE WINDOWS
INSTALACIÓN DE IIS EN WINDOWS XP El sistema está desarrollado para ejecutarse bajo la plataforma IIS de Windows XP. Por esta razón, incluimos la instalación de IIS (Servidor de Web) para la correcta ejecución
Más detallesJAVA EE 5. Arquitectura, conceptos y ejemplos.
JAVA EE 5. Arquitectura, conceptos y ejemplos. INTRODUCCIÓN. MODELO DE LA APLICACIÓN JEE5. El modelo de aplicación Java EE define una arquitectura para implementar servicios como lo hacen las aplicaciones
Más detallesREDES 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 detallesJSP Básico. Índice. 2 Traducción de los JSP a servlets...2. 6 Acciones...8. 1 Introducción a JSP... 2
Índice 1 Introducción a JSP... 2 2 Traducción de los JSP a servlets...2 3 Elementos de JSP...3 4 Inserción de código en páginas JSP... 4 4.1 Expresiones...4 4.2 Scriptlets...4 4.3 Declaraciones... 4 4.4
Más detalles10. Servlets con acceso a bases de datos
CAPÍTULO 10 10. Servlets con acceso a bases de datos 10.1. Acceso a bases de datos mediante servlets y JDBC Una de las tareas más importantes y más frecuentemente realizadas por los servlets es la conexión
Más detallesTEMA 4: EMPEZANDO A NAVEGAR ESCUELA UNIVERSITARIA DE INFORMÁTICA. Raúl Martín Martín
TEMA 4: EMPEZANDO A ESCUELA UNIVERSITARIA DE INFORMÁTICA NAVEGAR Raúl Martín Martín SERVICIOS DE INTERNET SERVICIOS DE INTERNET Las posibilidades que ofrece Internet se denominan servicios. Hoy en día,
Más detallesModulo I. Introducción a la Programación Web. 1.1 Servidor Web.
Modulo I. Introducción a la Programación Web. 1.1 Servidor Web. Antes de analizar lo que es un servidor Web y llevara a cabo su instalación, es muy importante identificar diferentes elementos involucrados
Más detallesINSTITUTO 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 detallesBase de datos en Excel
Base de datos en Excel Una base datos es un conjunto de información que ha sido organizado bajo un mismo contexto y se encuentra almacenada y lista para ser utilizada en cualquier momento. Las bases de
Más detallesPROGRAMACIÓ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 detallesLa plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.
PLANTILLAS EN PHP El concepto de plantilla, es un criterio del desarrollo web que propone optimizar la cantidad de documentos HTML que se usan en el desarrollo de un sitio web. A lo largo de la navegación
Más detallesAspectos Básicos de Networking
Aspectos Básicos de Networking ASPECTOS BÁSICOS DE NETWORKING 1 Sesión No. 4 Nombre: Capa de transporte del modelo OSI Objetivo: Al término de la sesión el participante aplicará las principales características
Más detallesMi propuesta consiste en crear un portal Web que contemple las siguientes funcionalidades:
Propósito del prototipo: Mi propuesta consiste en crear un portal Web que contemple las siguientes funcionalidades: 1º. Mostrar noticias y eventos propios del grupo de personas que administren la Web.
Más detallesApéndice 5 Manual de usuario de ColeXión. ColeXión 1.0. Manual de usuario
Apéndice 5 Manual de usuario de ColeXión ColeXión 1.0 Manual de usuario Índice 1. Qué es ColeXión?... 2 2. Requerimientos del sistema... 3 3. Instalación de ColeXión... 3 4. Creación de un nuevo esquema...
Más detallesWINDOWS 2008 5: TERMINAL SERVER
WINDOWS 2008 5: TERMINAL SERVER 1.- INTRODUCCION: Terminal Server proporciona una interfaz de usuario gráfica de Windows a equipos remotos a través de conexiones en una red local o a través de Internet.
Más detallesIntroducción a JDBC - Base de datos con Java
Introducción a JDBC - Base de datos con Java Objetivos: Reconocer los objetos para trabajar con bases de datos. Desarrollar aplicaciones que trabajen con bases de datos. Temas: Java Database Connectivity
Más detallesGUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS
ARCHIVOS ANEXOS Son los documentos, hojas de cálculo o cualquier archivo que se anexa a las carpetas, subcarpetas, hallazgos u otros formularios de papeles de trabajo. Estos archivos constituyen la evidencia
Más detallesNotas para la instalación de un lector de tarjetas inteligentes.
Notas para la instalación de un lector de tarjetas inteligentes. Índice 0. Obtención de todo lo necesario para la instalación. 3 1. Comprobación del estado del servicio Tarjeta inteligente. 4 2. Instalación
Más detallesToda base de datos relacional se basa en dos objetos
1. INTRODUCCIÓN Toda base de datos relacional se basa en dos objetos fundamentales: las tablas y las relaciones. Sin embargo, en SQL Server, una base de datos puede contener otros objetos también importantes.
Más detallesCURSO DE PROGRAMACIÓN PHP MySQL
CURSO DE PROGRAMACIÓN PHP MySQL MASTER EN PHP MÓDULO NIVEL BASICO PRIMER MES Aprende a crear Sitios Web Dinámicos con PHP y MySQL 1. Introducción Qué es PHP? Historia Por qué PHP? Temas de instalación
Más detallesHTML, PHP y bases de datos
HTML, PHP y bases de datos Estrella Pulido Cañabate HTML Estructura de un documento HTML Zen and Tumbolia The Zen monk Bassui wrote a letter to one of his disciples
Más detallesG R U P O S INDICE Cómo crear una cuenta en ARQA? Cómo tener un grupo en ARQA? Secciones y funcionalidades de los grupos Configuración del grupo
INDICE Cómo crear una cuenta en ARQA? 4 Cómo tener un grupo en ARQA? 5 Secciones y funcionalidades de los grupos 6 Muro del Grupo 6 Compartir Textos 8 Compartir Imágenes 9 Compartir videos 10 Compartir
Más detallesPráctica 2: Extensión de un servidor con servlets
Introducción Práctica 2: Extensión de un servidor con servlets ( 2 horas ) En esta práctica veremos otra forma de realizar aplicaciones semejantes a los CGIs, los servlets. El enfoque del diseño con servlets
Más detallesEjemplos básicos de webmathematica para profesores
Ejemplos básicos de webmathematica para profesores Cualquier cálculo hecho dentro Mathematica puede ser realizado usando webmathematica con dos limitaciones significativas. Primero, al usar webmathematica,
Más detallesLa utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.
Procesamiento del lado del servidor La Programación del lado del servidor es una tecnología que consiste en el procesamiento de una petición de un usuario mediante la interpretación de un script en el
Más detallesConfiguración servidor Tomcat
Apuntes de J2EE Configuración servidor Tomcat Uploaded by Ingteleco http://ingteleco.webcindario.com ingtelecoweb@hotmail.com La dirección URL puede sufrir modificaciones en el futuro. Si no funciona contacta
Más detallesDossier de prácticas
Dossier de prácticas Intranet / Extranet Màster d Enginyeria del Software Desenvolupament d aplicacions sobre Internet Fundació Politècnica de Catalunya Jaume Moral Ros Albert Obiols Vives 1 Dossier de
Más detallesHTTP, CGI, Applets y Servlets
HTTP, CGI, Applets y Servlets Sistemas de Operación II CI-4821 Sep-Dic 2006 Mercedes Martínez 00-33042 Aixbel Martínez 01-34114 Mario Felaco 02-34888 José Luís Castillo 01-33691 Yonathan Ledo 01-34033
Más detallesA continuación se confeccionara un formulario para el ingreso de un nombre y un botón para el envío del dato ingresado al servidor:
FORMULARIOS BAJO HTML INTRODUCCION A FORMULARIOS Un formulario permite que el visitante al sitio cargue datos y sean enviados al servidor. Es el medio ideal para registrar comentarios del visitante sobre
Más detallesTutorial: Primeros Pasos con Subversion
Tutorial: Primeros Pasos con Subversion Introducción Subversion es un sistema de control de versiones open source. Corre en distintos sistemas operativos y su principal interfaz con el usuario es a través
Más detallesTema 4: Tecnologías Web Java
Tema 4: Tecnologías Web Java Introducción Aplicación web Aplicación que corre en al menos un servidor y a la que el usuario accede desde un cliente de propósito general (ej.: navegador en un PC, teléfono
Más detallesEscudo Movistar Guía Rápida de Instalación Dispositivos Symbian
Escudo Movistar Guía Rápida de Instalación Dispositivos Symbian Guía de Instalación Página 1 Índice ESCUDO MOVISTAR.... 3 1. INSTALACIÓN DEL SERVICIO ESCUDO MOVISTAR... 3 1.1. VERSIONES SOPORTADAS... 3
Más detallesDesarrollo de Servicios Web con JBuilder
Artículos técnicos Grupo Danysoft: Desarrollo de Servicios Web con JBuilder Segunda parte Oscar Cristobal Ruiz Departamento Java Equipo Grupo Danysoft Enero 2003 - (902) 123146 www.danysoft.com Desarrollo
Más detallesSistema de Gestión Portuaria Sistema de Gestión Portuaria Uso General del Sistema
Sistema de Gestión Portuaria Uso General del Sistema Uso General del Sistema Página 1 de 21 Contenido Contenido... 2 1.Ingreso al Sistema... 3 2.Uso del Menú... 6 3.Visualizar Novedades del Sistema...
Más detallesEjercicios - Persistencia en Android: ficheros y SQLite
Ejercicios - Persistencia en Android: ficheros y SQLite Índice 1 Uso de ficheros (0.5 puntos)...2 2 Persistencia con ficheros (0.5 puntos)...3 3 Base de datos: SQLiteOpenHelper (0.5 puntos)... 3 4 Base
Más detallesINTRODUCCIÓN N A LAS APLICACIONES WEB Y TECNOLOGÍA A JAVA
INTRODUCCIÓN N A LAS APLICACIONES WEB Y TECNOLOGÍA A JAVA Jaime Fernández ndez Mayo 2006 Índice Java Aplicaciones web Servlets JSP Servidores de aplicaciones IDE`s Ejemplo Historia Java Lenguaje orientado
Más detallesUniversidad Tecnológica del Valle del Mezquital. Desarrollo de Aplicaciones Web. Manual JSP
Universidad Tecnológica del Valle del Mezquital Desarrollo de Aplicaciones Web Manual JSP Presentado por: Amellaly Perez Ramirez Ana Maday Perez Montoya Eduardo Perez Ignacio Jairo Mohedano Mejia Maricela
Más detallesAccede a su DISCO Virtual del mismo modo como lo Hace a su disco duro, a través de:
Gemelo Backup Online DESKTOP Manual DISCO VIRTUAL Es un Disco que se encuentra en su PC junto a las unidades de discos locales. La información aquí existente es la misma que usted ha respaldado con su
Más detallesGUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII
GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII GUIA DISPONIBLE EN: http://preparadorivan.blogspot.com/ - http://preparadormssi.50webs.com/inicio.html La World Wide Web o la Web, es una de las múltiples
Más detallesMANUAL DE USUARIO CMS- PLONE www.trabajo.gob.hn
MANUAL DE USUARIO CMS- PLONE www.trabajo.gob.hn Tegucigalpa M. D. C., Junio de 2009 Que es un CMS Un sistema de administración de contenido (CMS por sus siglas en ingles) es un programa para organizar
Más detallesMANUAL 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 detallesEdición de Ofertas Excel Manual de Usuario
Edición de Ofertas Excel Manual de Usuario Alfonso XI, 6 28014 Madrid F(+34) 91 524 03 96 www.omie.es Ref. MU_OfertasExcel.docx Versión 4.0 Fecha: 2012-11-26 ÍNDICE 1 INTRODUCCIÓN 3 2 CONSIDERACIONES DE
Más detallesAviso Legal El presente libro electrónico se distribuye bajo Attribution-NonCommercial- NoDerivs 3.0 Unported
PROGRAMACIÓN ORIENTADA A OBJETOS APLICADA A BASES DE DATOS Por LAURA NOUSSAN LETTRY BrowserSQL MySQL Workbench en Linux (Abril 2015, Mendoza) Aviso Legal El presente libro electrónico se distribuye bajo
Más detallesProgramación de páginas web dinámicas con CGIs
Programación de páginas web dinámicas con CGIs Esquema Webs estáticas o dinámicas. CGIs: Que son y como funcionan Formularios para enviar información CGIs en perl Webs estáticas o dinámicas Una (página)
Más detallesRedes de área local: Aplicaciones y servicios WINDOWS
Redes de área local: Aplicaciones y servicios WINDOWS 4. Servidor DNS 1 Índice Definición de Servidor DNS... 3 Instalación del Servidor DNS... 5 Configuración del Servidor DNS... 8 2 Definición de Servidor
Más detallesMANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS
MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS En este manual aprenderemos a introducir un Ticket de Soporte (Incidencia Informática) y ver todo el proceso hasta que se resuelve. Para poder escribir Tickets
Más detallesModulo 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 detallesJava Servlets. Luis Fernando Llana Díaz. 17 de abril de 2006. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid de abril de 00 input, output En pascal input, output program holamundo (input, output); var nombre : String; begin
Más detallesAutor: Microsoft Licencia: Cita Fuente: Ayuda de Windows
Qué es Recuperación? Recuperación del Panel de control proporciona varias opciones que pueden ayudarle a recuperar el equipo de un error grave. Nota Antes de usar Recuperación, puede probar primero uno
Más detallesCurso de Java POO: Programación orientada a objetos
Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos
Más detallesImplantar Microsoft Software Updates Service (SUS)
Implantar Microsoft Software Updates Service (SUS) Guía rápida de instalación Versión: 1.0 Autor: Paulino Insausti Barrenetxea Fecha: 15 de Junio de 2005 Licencia: CreativeCommons - ShareAlike Indice 1.Introducción...
Más detallesLaboratorio de Aplicaciones Telemáticas (Curso 2009/2010)
Servlets Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010) Jesús Arias Fisteus & Andrés Marín López {jaf, amarin}@it.uc3m.es Servlets p. 1 Introducción Servlet: Programa Java que se ejecuta en
Más detallesAplicaciones Cliente - Servidor
Aplicaciones Cliente - Cliente Presentación + Lógica aplicación SQL Acceso remoto a información a través de red. Un servidor - múltiples clientes. Almacenamiento datos es esperan peticiones: protocolos
Más detallesCurso de PHP con MySQL Gratis
Curso de PHP con MySQL Gratis Introducción Este mini curso o mini tutorial de PHP le ayudará a realizar cualquier sistema para que pueda insertar uno o varios registros a una base de datos con MySQL, este
Más detallesAPI de java. (http://download.oracle.com/javase/6/docs/api/) Guía de alumno Laboratorio 9. Recursos disponibles en moodle para este día.
PROGRAMACIÓN Laboratorio 9 Guía del Alumno 1 LABORATORIO 9: JAVA.IO - ENTRADA/SALIDA JAVA.NET - URL Versión:2013-05- 20 Conocimientos previos Temario visto en las clases de teoría. Se recomienda haber
Más detallesIntroducción a las Redes de Computadoras. Obligatorio 2 2011
Introducción a las Redes de Computadoras Obligatorio 2 2011 Facultad de Ingeniería Instituto de Computación Departamento de Arquitectura de Sistemas Nota previa - IMPORTANTE Se debe cumplir íntegramente
Más detallesMANUAL 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 detallesPRÁCTICA 10. Configuración de Correo y Publicar en la Web
PRÁCTICA 10. Configuración de Correo y Publicar en la Web INFORMÁTICA BÁSICA Publicidad y Relaciones Públicas y Periodismo. Curso 2006/2007 1. Configuración del correo Gestores de correo en la máquina
Más detallesGESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD
GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD Manual de usuario 1 - ÍNDICE 1 - ÍNDICE... 2 2 - INTRODUCCIÓN... 3 3 - SELECCIÓN CARPETA TRABAJO... 4 3.1 CÓMO CAMBIAR DE EMPRESA O DE CARPETA DE TRABAJO?...
Más detallesELABORACIÓN DE PÁGINAS WEB. CBTIS No. 02 ISC. RICARDO GARCÍA LÓPEZ
CBTIS No. 02 ISC. RICARDO GARCÍA LÓPEZ Página1 CREACIÓN DE LA BASE DE DATOS EN MySQL REGISTRO DE USUARIOS UTILIZANDO PHP CON MYSQL Una vez instalada nuestro servidor local de Apache, procedemos a crear
Más detallesGuía Rápida de Inicio
Guía Rápida de Inicio 1. Acerca de esta Guía Esta guía le ayudará a instalar y dar los primeros pasos con BitDefender Security for SharePoint. Para disponer de instrucciones detalladas, por favor, diríjase
Más detallesPropuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA
Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Documento de trabajo elaborado para la Red Temática DocenWeb: Red Temática de Docencia en Control mediante Web (DPI2002-11505-E)
Más detallesCOPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA
COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA Autor: Carlos Javier Martín González. Licenciado en Física Teórica por la Universidad Autónoma de Madrid. Analista programador y funcional. Desarrollador
Más detallesObjetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.
Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero. Uso de Ficheros Todas las estructuras de datos vistas hasta ahora utilizan la
Más detallesCrear un servidor Web en IIS
Crear un servidor Web en IIS Qué es un servidor web? Un servidor web es un programa que se ejecuta continuamente en un computador, manteniéndose a la espera de peticiones de ejecución que le hará un cliente
Más detallesMANUAL DE USUARIO DE CUENTAS DE CORREO
MANUAL DE USUARIO DE CUENTAS DE CORREO Existen dos formas de consultar el correo, por Interfaz Web (Webmail), la cual se realiza desde un navegador de Internet, o mediante un cliente de Correo, tal como
Más detallesGuía N 1: Fundamentos básicos(i)
1 Guía N 1: Fundamentos básicos(i) Objetivos Generales: Ver una breve descripción de las capacidades más comunes de Excel Objetivos específicos: Descripción de los elementos de un libro: Hojas, iconos,
Más detallesManual de JSP con MySQL
Contenido Introducción... 2 Requerimientos... 2 Requerimiento #1: IDE Eclipse... 2 Requerimiento #2: Apache Tomcat, Jboss y MySQL... 2 Desarrollo... 3 Paso #1: Ejecutar Eclipse... 3 Paso #2: WorkSpace...
Más detallesjavax.servlet.genericservlet javax.servlet.http.httpservlet MiServlet
Lectura 14. Servlets Un Servlet es un programa que se ejecuta en un servidor Web. Los clientes pueden invocarlo utilizando el protocolo HTTP. Comparativamente, así como los applet son ejecutados y cargados
Más detallesEl Internet tuvo origen en los Estados Unidos de Norte América cuando en un proyecto
2 Marco teórico 2.1 Internet 2.1.1 Breve historia El Internet tuvo origen en los Estados Unidos de Norte América cuando en un proyecto realizado por la Agencia de Investigación Avanzados de Defensa (DARPA)
Más detalles