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 ?!