Você está na página 1de 52

JAVA

Marcio de Carvalho Victorino


1
Servlets

2
Plataforma WEB
• Baseada em HTTP (RFC 2068):
– Protocolo simples de transferência de arquivos
– Sem estado (não mantém sessão aberta)
• Funcionamento (simplificado):

3
Cliente e Servidor HTTP
• Servidor HTTP:
– Gerencia sistema virtual de arquivos e diretórios
– Mapeia pastas do sistema de arquivos local (ex:c:\htdocs) a
diretórios virtuais (ex:/) acessíveis remotamente
• Papel do servidor HTTP:
– Interpretar requisições HTTP do cliente (métodos
GET,POST,...)
– Devolver resposta HTTP à saída padrão
• Papel do cliente HTTP:
– Enviar requisições HTTP (GET,POST,...) a um servidor
– Processar respostas HTTP recebidas (interpretar cabeçalhos,...)

4
Principais métodos HTTP
• GET - pede ao servidor um arquivo (informado
sua URI) absoluta (relativa à raiz do servidor)
– GET pode enviar dados através da URI (tamanho
limitado) <uri>?dados
• POST - envia dados ao servidor (como fluxo de
bytes)

5
API Servlet
• API independente de plataforma e praticamente
independente de fabricante
• Componentes são escritos em Java
• Rodam dentro do servidor, mas através de uma Máquina
Virtual Java
• Disponível como ‘plug-in’ ou conector para servidores
que não o suportam diretamente
• Nativo em servidores
– Sun,
– IBM,
– ... 6
Execução de Servlets e JSP
• Para executar Servlets e JSP é preciso implantá-los
em um Web Container
• Um Web Container pode estar executando como
parte de um servidor HTTP que o repassa as
requisições destinadas a Servlets e JSP
• O Tomcat é um exemplo de Web Container, que
pode tanto funcionar conectado a outro servidor
como usar seu próprio servidor Web
• O Tomcat ocupará a porta 8080

7
Estrutura do Tomcat

8
Ciclo de Vida

9
Ciclo de Vida

10
Servlets HTTP

11
Servlets HTTP

12
Exemplo de um Servlet
import java. io.*;
import javax. servlet.*;
import javax. servlet. http.*;
public class SimpleServlet extends HttpServlet {
public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
PrintWriter out;
response.setContentType(" text/ html");
out = response.getWriter();
String user = request.getParameter("usuario");
if (user == null)
user = "World";
out.println("< HTML>< HEAD>< TITLE>");
out.println(" Simple Servlet Output");
out.println("</ TITLE></ HEAD>< BODY>");
out.println("< H1> Simple Servlet Output</ H1>");
out.println("< P> Hello, " + user);
out.println("</ BODY></ HTML>");
out.close();
} 13
}
Página recebida no Browser
• Url da requisição:
– http://servidor/servlet/SimpleServlet?usuario=Rex
– http://servidor/hello.jsp?usuario=Rex
• Código fonte visto no cliente
<HTML>
<HEAD>
<TITLE>Simple Servlet Output</TITLE>
</HEAD>
<BODY>
<H1>Simple Servlet Output</H1>
<P>Hello,World
</BODY>
</HTML>
14
Servlets HTTP

15
Métodos doGet() e doPost()

16
Estrutura de uma aplicação
Web

17
Exemplo de web.xml

18
Exemplo de web.xml

19
JavaServer Pages

20
JavaServer Pages

21
Servlet x JSP

22
JavaServer Pages

23
JavaServer Pages

24
JavaServer Pages

25
Sintaxe

26
Sintaxe

27
Diretiva

28
Declaração

29
Expressões e Scriplets

30
Enterprise Java Beans (EJB)

31
Enterprise Java Beans (EJB)

• Aplicações corporativas são naturalmente


distribuídas
– Exemplos: aplicações bancárias, comércio eletrônico,
folha de pagamentos.
• Necessidade de uma infraestrutura comum
Middleware com serviços complexos
Application Servers
• As organizações podem preocupar-se apenas com a
lógica de negócio.

32
Enterprise Java Beans (EJB)
• Uma aplicação deve ser composta de componentes.
• Um único componente pode ser reutilizado em diversas
aplicações.

• Características:
– Portabilidade entre servidores de aplicação.
– Desenvolvimento acelerado.
– Padrão de mercado.

Atenção! EJB não é apropriado para todos os cenários.


33
Enterprise Java Beans (EJB 2.0)

• Session Beans
– “Verbos”. Modelam processos de negócio, como
autorização de cartão de crédito, engine de cálculo de
preços, etc.
• Entity Beans
– “Substantivos”. Modelam dados como produto, pedido,
empregado.
• Message Driven Beans
– São semelhantes aos Session Beans, entretanto são
invocados apenas por meio de mensagens.

34
Enterprise Java Beans (EJB 3.0)

• Antes da versão 3.0 a persistência era parte da


plataforma EJB.
• Na EJB 3.0, a persistência possui sua própria
especificação chamada “Java Persistence”.
• A API Java Persitence define uma maneira de mapear
objetos simples (POJO) para um Banco de Dados
(JDBC).
• Entidades Java Persistence não precisam implementar
interfaces ou estender classes definidas com uma
especificação especial.
35
Enterprise Java Beans (EJB)

• Um cliente NUNCA invoca os métodos de um Bean


diretamente.

• Um EJBObject intercepta as chamadas e as delega para a


instância do Bean.

• O EJBObject fornece serviços para a gerência de


transações, segurança, persistência, gerência de recursos
e outros.
36
Enterprise Java Beans (EJB)

37
Enterprise Java Beans (EJB)
• Componente EJB:

1. Escrever os arquivos .java que compõem o Bean.


2. Escrever o deployment descriptor.
3. Compilar os arquivos .java do passo 1 em arquivos .class.
4. Criar o arquivo ejb-jar, contendo o deployment descriptor e os
arquivos .class.
5. Implantar o arquivo ejb-jar no servidor de aplicação.
6. Configurar o servidor EJB, caso necessário.
7. Iniciar o servidor EJB e executar uma aplicação cliente para testar
o Bean implantado.
38
Enterprise Java Beans (EJB)

39
Enterprise Java Beans (EJB)

40
Session Beans
• Podem possuir:
– Interface Remota(javax.ejb.EJBObject).
– Interface Local(javax.ejb.EJBLocalObject).
– Interface Home(javax.ejb.EJBHome).
– Interface Home Local(javax.ejb.EJBLocalHome).
– Implementar a interface SessionBean(javax.ejb.SessionBean).

• Tipos:
– Stateless Session Beans:
• Não mantém estado entre invocações de métodos.
• Após cada chamada de método o Container pode escolher entre destruir o Bean,
recriá-lo ou mesmo mantê-lo. O algoritmo é específico do Container.
– Stateful Session Beans:
• Mantém seu estado entre chamadas de métodos.
• Projetados para situações que requerem várias requisições simultâneas ou
transações. 41
Session Beans (Stateless)

42
Session Beans (Statefull)

43
Entity Beans

• Podem possui:
– Interface Remota(javax.ejb.EJBObject).
– Interface Local(javax.ejb.EJBLocalObject).
– Interface Home(javax.ejb.EJBHome).
– Interface Home Local(javax.ejb.EJBLocalHome).
– Implementar a interface EntityBean(javax.ejb.EntityBean).
– A persistência pode ser gerenciada pelo próprio Bean (BMP)
ou pelo container (CMP).

44
MessageDrivenBean

• Devem:
– Implementar a interface MessageDrivenBean
(javax.ejb.MessageDrivenBean).
– Implementar a interface MessageListener
(javax.jms.MessageListener).
– MDBs não possuem interfaces (home, local, localHome e
remote).
– MDBs têm um único método de negócio (onMessage()).
– MDBs não retornam valores nem tampouco lançam exceções
aos clientes.
– São stateless.
45
Arquitetura em Camadas

46
Componentes da Camada Cliente

47
Componentes da Camada Web

48
Componentes da Camada de Negócio

49
Enterprise JavaBeans

50
Enterprise JavaBeans

51
Fim

52

Você também pode gostar