Servlets, JSP e Web Services Eider Oliveira 13 de junho de 2002 Interação Cliente Servidor na Internet Código cliente: Applets JavaScript Alternativas da Microsoft Código servidor CGI, NSAPI, ISAPI PHP, Coldfusion, ASP, etc Servlets Protocolo HTTP Protocolo sem estado (“stateless”) Solicitações: Get Post Resposta: página HTML Solicitação GET GET /index.html HTTP/1.0 Connection: Keep-Alive User-Agent: Mozilla/4.08 [en] (X11; I; Linux 2.0.36 i586; Nav) Host: silverfish.sd.monash.edu.au:3213 Accept: image/gif, image/jpeg, image/png, */* Accept-Encoding: gzip Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8 Resposta HTTP/1.1 200 OK Date: Mon, 10 May 1999 06:15:49 GMT Server: Apache/1.3.0 (Unix) Connection: close Content-Type: text/html <HTML><HEAD> <meta http-equiv="refresh" content="0; URL=http://bcomp.csse.monash.edu.au/"> </HEAD> Formulário <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> <FORM METHOD=POST ACTION="servlet/Hello"> Qual seu nome? <INPUT TYPE=TEXT NAME="nome"><P> <INPUT TYPE=SUBMIT> </FORM> </BODY> </HTML> Envio de dados: POST POST /servlet/Hello HTTP/1.0 Referer: http://silverfish.sd.monash.edu.au:3213/ Connection: Keep-Alive User-Agent: Mozilla/4.08 [en] (X11; I; Linux 2.0.36 i586; Nav) Host: silverfish.sd.monash.edu.au:3213 Accept: image/gif, image/jpeg, image/pjpeg, image/png, */* Accept-Encoding: gzip Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8 Content-type: application/x-www-form-urlencoded Content-length: 22 nome=Ex+President+Bush Servlets Programas Executam Atendem Atuam em Java exclusivamente no servidor requisições GET e POST conjuntamente com o Servidor Web Servlets Máquina Cliente Máquina Servidora Solicitação e parâmetros Browser Servlet Server Resposta (HTML) Servlet Servlet Servlet Características de uma Servlet Baixo Uma consumo de memória instância atende diversas requisições Possibilita Grande reutilização de recursos caros velocidade de execução Uma Servlet Simples import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class EchoServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); ServletOutputStream out = response.getOutputStream(); out.println("<HTML><BODY>“); out.println("the value of parameter theParameter is “); out.println(request.getParameter("theParameter")); out.println("</BODY></HTML>"); } } Problemas... A interface HTML está difusa dentro do código Java Qualquer alteração visual implica em recompilação da Servlet Quem modifica os fontes: o Webmaster ou o programador? Solução: JSP Java Server Pages Código Java dentro das páginas HTML (Scriptlet) Compilação Uso transparente em Servlets de JavaBeans e Taglibs Exemplo de JSP <HTML> <HEAD> <TITLE>JSP example</TITLE> </HEAD> <BODY> <% out.println(“Good afternoon “+ request.getParameter(“name”)); %> </BODY> </HTML> “E que *&%@!! são Web Services?” SOAP: uma outra forma de RPC? Fundamentalmente: XML: lento e complexo Mas A sim interoperável! mágica dos padrões da indústria… Indo além do arquitetado e alcançando o dinâmico RPC: foi uma boa idéia nos anos 70 e continua sendo uma boa idéia. Web Services... “A” aplicação: Sinergia Onde estão meus distribuidores, cobradores, vendedores. Um sistema de saúde sem redigitação de formulários Uma loja promove leilão do seu saldo de estoque Java Web Services Developer Pack APIs de Web Services e Applicações: Java API for XML Processing (JAXP) , RPC (JAX-RPC), Messaging (JAXM), Registries (JAXR) UDDI-based registry server (Universal Description, Discovery and Integration) The JSP Standard Tag Library Desenvolvimento e testes: A UDDI-based registry server Apache Tomcat Java Secure Socket Extension (JSSE) Apache Ant build tool Documentação Curvas de Adoção Established Applets Deployment Experiments Launch 95 96 97 98 99 00 01 02 Evolução da Computação Distribuída Client-Server Catch Phrase The Network Is the Computer 3/N-Tier Web Apps Objects Legacy to the Web Web Services The Computer Is the Network Next After that Network of Embedded Things Network of Things System Collections Components Scale When/Peak Leaf Protocol(s) 100s 1000s 1000000s 10000000s 100000000s 1000000000s 1984/1987 1990/1993 1996/1999 2001/2003 1998/2004 2004/2007 X X +HTTP +RMI +JVM) Directory(s) NIS, NIS+ + CDS Session RPC, XDR +CORBA + LDAP (*) +XML, +UDDI +CORBA, RMI + SOAP, XML Schematic (A seqüência Gingell) +? +? +? +? +? +? Olhando a frente `Web Services’ é a infraestrutura E o mundo de Java inclui muito mais... Desktops Embedded Real Time Wireless Smart Cards Games ?!