Tecnologías de Programación Web Dr. Diego C. Martínez © DCM-DCIC-UNS Universidad Nacional de Catamarca Noviembre de 2009 1 Tecnologías de Programación Web Dr. Diego C. Martínez Universidad Nacional de Catamarca Noviembre de 2009 Server Side Includes Server Side Includes <!--#set var="cost" value="\$100" --> Los Server Side Includes (SSI) son directivas que se incluyen en las páginas HTML, dirigidas al servidor para algún procesamiento específico antes de retornar ese documento al cliente. <!--#if expr="test_condition" --> <!--#elif expr="test_condition" --> <!--#else --> <!--#endif --> La idea es incluir alguna información dinámica en una página creada estáticamente. La estructura de una directiva es: <!--#directiva parametro=valor parametro=valor --> Debe indicarse específicamente qué archivos seran preprocesados en búsqueda de tags SSI. La extensión habitual es shtml. En Apache puede utilizarse XBitHack para independizarse de la extensión. Algunas directivas comunes: <!--#echo var="DATE_LOCAL" --> No todos los servidores aceptan SSI. <!--#config timefmt="%A %B %d, %Y" --> Hoy es <!--#echo var="DATE_LOCAL" --> Aunque es tecnología vieja, todavia se usa con frecuencia cuando el balance estático-dinámico en la página lo justifica. Ultima modificacion: <!--#flastmod file="index.html" --> <!--#include virtual="/footer.html" --> <!--#printenv --> © Diego C. Martínez - DCIC-UNS © DCM-DCIC-UNS 7 © Diego C. Martínez - DCIC-UNS 8 2 Tecnologías de Programación Web Dr. Diego C. Martínez Universidad Nacional de Catamarca Noviembre de 2009 CGI Scripts CGI (Common Gateway Interface) es un estándar que establece una interfaz entre aplicaciones externas y servidores de información, como HTTP o FTP. Básicamente es un mecanismo que permite a todo el mundo ejecutar un programa determinado, residente en un servidor de información. Por este hecho se les suele denominar aplicación CGI, o scripts CGI. Bob McCool Esto requiere algunas consideraciones de seguridad. Por ejemplo, las aplicaciones a ejecutarse se mantienen en directorios fuera del alcance normal. Como es un estándar de interfaz, cualquier programa puede ejecutarse como aplicación CGI: puede ser implementado en C, C++, Fortran, PERL, Unix Shell, etc. La particularidad es que no utiliza la línea de comandos para recibir información, sino variables de entorno... QUERY_STRING es todo lo que sigue luego del primer ? del URL. PATH_INFO es la ruta para información adicional que puede requerir la aplicación. © Diego C. Martínez - DCIC-UNS 9 CGI CGI Scripts - Perl La aplicacion CGI recibe los datos en forma de variables de entorno y simplemente escribe sus resultados en la salida estándar. Uno de los lenguajes más populares para la implementación de aplicaciones CGI es Perl, creado en 1987 por Larry Wall. Sin embargo, debe hacerlo sabiendo que el receptor directo es el servidor. Esto implica que debe escribir unos headers antes: Por ejemplo, para enviar HTML debe escribirse: El nombre Perl es una derivación de pearl (perla en inglés). Mateo 13:45-46 El Reino de los Cielos se parece también a un negociante que se dedicaba a buscar perlas finas; y al encontrar una de gran valor, fue a vender todo lo que tenía y la compró. Content-type: text/html <HTML><HEAD> <TITLE>Titulo</TITLE> </HEAD><BODY> ... </BODY></HTML> a.k.a PERL -- Practical Extraction and Report Language Es un lenguaje de programación dinámico, y el que mayoritariamente contribuyó al titulo de scripts que suelen tener las aplicaciones CGI. http://www.perl.org/ Por ejemplo, para redireccionar a otro documento Content-type: text/html Location: http://otrohost.org <HTML><HEAD><TITLE>Oops..</TITLE> </HEAD><BODY> ... </BODY></HTML> © Diego C. Martínez - DCIC-UNS © DCM-DCIC-UNS Larry Wall La sintaxis es similar a la del lenguaje C, pero con claras diferencias por la necesidad de ser dinámico. 11 © Diego C. Martínez - DCIC-UNS 12 3 Tecnologías de Programación Web Dr. Diego C. Martínez Universidad Nacional de Catamarca Noviembre de 2009 CGI – Perl - ejemplos CGI - Perl HTML <form method="post" action="http://localhost/cgi-bin/mostrar.pl" > Texto: <input type="text" name="mitexto"><br> <input type="submit" value="Enviar"> <input type="reset" value="Limpiar"> </form> Algunas características generales de Perl: ● ● ● #!c:\Program Files\Perl\bin\perl.exe $inputlength=$ENV{'CONTENT_LENGTH'}; read(STDIN,$formdata,$inputlength); ($name,$value)=split /=/,$formdata; print "Content-type: text/html\n"; print "\n"; print " <HTML> <HEAD> <TITLE>Resultados:</TITLE> </HEAD> <BODY> <H1>Esto es lo que se ha ingresado:</H1> <BR> $name = $value </BODY> </HTML>"; ● ● ● ● ● ● Perl es Open Source (GPL). Al ser dinámico no requiere declaración de variables, aunque es admisible esa forma de programar (strict) Puede realizar entrada y salida estándar o comunicarse con un servidor via la interfaz CGI (usando filehandles, como STDIN). Las variables comienzan con el símbolo $ (eventualmente tambien % o @) . Es fácil definir arreglos y tablas hash simples. Provee librerias para el acceso a bases de datos Admite muchas características de la orientación a objetos. Posee buen soporte para la utilización de expresiones regulares. Mucho soporte, libros, tutoriales. Script CGI (PERL) © Diego C. Martínez - DCIC-UNS 13 CGI y Java © Diego C. Martínez - DCIC-UNS Programación del lado servidor – otro modelo El estándar CGI sugiere que cualquier aplicación escrita en cualquier lenguaje puede actuar como script CGI. El estándar CGI establece el vínculo entre el servidor web y una aplicación externa que recibe y procesa datos. Algunos lenguajes pueden presentar obstáculos, como en Java: ● Las aplicaciones Java no pueden ejecutarse como cualquier otra aplicación. ● Java no tiene acceso general al entorno. El uso popular de Perl y la técnica de SSI derivaron con el tiempo en nuevas tecnologías para la programación del lado servidor. Otra aproximación para lograr dinamismo en las páginas web es incluir el intérprete en el servidor (a la manera de Perl) y procesar documentos con tags incrustados en su contenido (a la manera de SSI). Una forma de solucionar esto es construir un shell script que administre la interacción Java – WebServer: recolecta los datos de entorno y se los envía a la aplicación Java. <HTML> <HEAD> <TITLE>Pagina</TITLE> </HEAD> <BODY> <H1>Encabezado</H1> <BR> Bla bla bla <tagespecial ..codigo en algun lenguaje... tagespecial> </BODY> </HTML> Sin embargo, es contraproducente. Java propone una arquitectura aparte para sus aplicaciones del lado servidor y ésa debería usarse. © Diego C. Martínez - DCIC-UNS © DCM-DCIC-UNS 14 15 © Diego C. Martínez - DCIC-UNS 16 4 Tecnologías de Programación Web Dr. Diego C. Martínez © DCM-DCIC-UNS Universidad Nacional de Catamarca Noviembre de 2009 5