PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M - PDF
Download "PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M"
Henrique Manoel da Fonseca Ferrão
1 JAVA Marcio de Carvalho Victorino 1 Servlets 2 1
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 2
3 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,
4 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 Estrutura do Tomcat 8 4
5 Ciclo de Vida 9 Ciclo de Vida 10 5
6 Servlets HTTP 11 Servlets HTTP 12 6
7 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: 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 7
8 Servlets HTTP 15 Métodos doget() e dopost() 16 8
9 Estrutura de uma aplicação Web 17 Exemplo de web.xml 18 9
10 Exemplo de web.xml 19 JavaServer Pages 20 10
11 JavaServer Pages 21 Servlet x JSP 22 11
12 JavaServer Pages 23 JavaServer Pages 24 12
13 JavaServer Pages 25 Sintaxe 26 13
14 Sintaxe 27 Diretiva 28 14
15 Declaração 29 Expressões e Scriplets 30 15
16 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
17 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
18 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
19 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
20 Enterprise Java Beans (EJB) 39 Enterprise Java Beans (EJB) 40 20
21 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 21
22 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)
23 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 23