Programação para a Internet II 1. Conceitos base de programação de páginas de conteúdo dinâmico Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt
A internet tal como a vimos até este momento As nossas páginas podem ser acedidas por todas as pessoas que saibam ou que descubram o URL (Uniform Resource Locator) de acesso a elas. Como se processa um pedido O utilizador escreve um determinado URL (ex. www.estgoh.ipc.pt) O browser tenta contactar a máquina a que corresponde o URL inserido Se a ligação for correctamente estabelecida, o computador remoto responde com a página inicial do site (normalmente index.html (servidores Apache), default.htm (servidores IIS)) (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 2
A internet tal como a vimos até este momento (continuação...) Como se processa um pedido (continuação...) Caso a página inicial apresente hiperligações para outras páginas, o processo repete-se, no entanto, agora não será necessário inserir o URL dessas novas páginas, bastará clicar na hiperligação e a página desejada ser-nos-à apresentada (caso existe efectivamente no servidor). O processo basicamente é este... Completamente estático O conteúdo só se altera se alterarmos os ficheiros... É muito complicado manter um site estático de grandes dimensões... (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 3
A outra internet... CGI (Common Gateway Interface) Para processar formulários, interacções com bases de dados, entre outros, é necessário recorrer a programas especiais... Os CGI são pequenos programas escritos em Perl, C, C++, etc... São guardados numa directoria especial do nosso servidor, a directoria cgi-bin Para poderem ser executados, têm que ser chamados <FORM method="post" action=http://www.site.com/cgi-bin/mail.cgi> O utilizador gera um determinado evento que faz chamar o programa, o programa é executado e o resultado vem geralmente na forma de uma página web (ou seja, HTML) (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 4
A outra internet... (continuação...) CGI (Common Gateway Interface) (continuação...) Embora os CGI sejam eventualmente a forma mais robusta de construir páginas dinâmicas, o processo desenvolvimento é muito moroso e as linguagens de programação, Perl por exemplo, são algo complicadas de aprender... (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 5
A outra internet... (continuação...) CGI (Common Gateway Interface) (continuação...) Exemplo em Perl #!/usr/bin/perl w print "Content-type: text/html\n\n"; print "<html><head><title>hello World!! </title></head>\n"; print "<body><h1>hello world</h1></body></html>\n"; Exemplo em C include <iostream.h> void main() { cout << "Content-type: text/html" << endl << endl << "<html>" << endl << "<head>" << endl << "<title>cgi Test</title>" << endl << "</head>" << endl << "<body>" << endl << "<h1>hello, World!</h1>" << endl << "</em></h1>" << endl << "</body></html>"; } (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 6
A outra internet As alternativas aos CGI... Java Servlets PHP JSP ASP CFM... (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 7
Java Servlets package test; import java.io.*; import javax.servlet.http.*; import javax.servlet.*; public class HelloServlet extends HttpServlet { public void doget (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { PrintWriter out = res.getwriter(); out.println "<html><head><title>hello World!! </title></head>\n"; out.println "<body><h1>hello world</h1></body></html>\n"; } } out.close(); (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 8
PHP <html> <head> <title>hello World!!</title> </head> <body> <h1><?php print("hello World")?></h1> </body> </html> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 9
JSP <html> <head> <title>hello World!!</title> </head> <body> <h1><% System.out.println( Hello World ) %></h1> </body> </html> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 10
ASP <html> <head> <title>hello World!!</title> </head> <body> <h1><% document.write( Hello World ) %></h1> </body> </html> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 11
ColdFusion <html> <head> <title>hello World!!</title> </head> <body> <h1><cfoutput>#ucase("hello world")#</cfoutput></h1> </body> </html> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II 12