Você está na página 1de 61

Carlos Renato Alves Gouveia

cgouveia@fes.br
 Utilizar ambientes de desenvolvimento integrados e
produtivos;
 Utilizar uma metodologia que permita dividir a
aplicação em camadas lógicas;
 Utilizar, de forma organizada, uma aplicação no
modelo de três camadas na Internet;
 Utilizar frameworks para desenvolvimento de
aplicações;
 Pesquisar e utilizar componentes para agilizar e
organizar o desenvolvimento de uma aplicação
Internet.
 1º Bimestre:
◦ PR1 – Trabalho prático
◦ OA1 – Trabalho prático
◦ MB1 = PR1*0.7 + OA1*0.3
 
 2º Bimestre:
◦ PR2 – Trabalho prático
◦ OA2 – Trabalho prático
◦ MB2 = PR2*0.7 + OA2*0.3
 
 Média Final = (MB1 + MB2)/2

 Prova Substitutiva (PS): substitui a menor nota de Prova (PR1


ou PR2) alcançada pelo aluno ou de Prova não realizada.
 BOND, M. et All. Teach Yourself J2EE in 21Days. Ed.
SAMS, Indiana – USA, 2002. (dia 1)
 JENDROCK, E. et All. The Java™ EE 5 Tutorial. Edição 3,
Sun Microsystems Inc. 2006.
 McGovern, J. et All. Java™ 2 Enterprise Edition 1.4 Bible.
Wiley Publishing Inc. 2003.

4
 Uma nova realidade de mercado é o desenvolvimento de
sistemas n-tier;
◦t tier: separação física (diferentes máquinas)
◦l layer: camada lógica (mesma máquina)

 Atualmente existem várias servidores de aplicação e


frameworks que auxiliam no desenvolvimento de
aplicações multicamdas;

 O desenvolvimento web em Java envolve muito destes


conceitos;

6
 Toda a aplicação é executada em uma única máquina;

 Sistemas típicos de mainframes ou computadores


standalone;

 No mesmo código são encontrados:


◦ Inputs de usuário
◦ Validação
◦ lógica de negócios
◦ acesso a dados;

7
8
 Problemas:
◦ Alta taxa de manutenção.
◦ Mudanças em trechos de código podem afetar outros trechos;
◦ Pequenas alterações exigem re-compilação de todo código;
◦ Atualizações mais complexas;

9
 Nasceu do desejo de se compartilhar dados de aplicações
instaladas em várias máquinas;

 A solução foi separar o banco de dados em uma máquina


separada;

10
11
 Problemas:
◦ A aplicação cliente permanece:
 Com toda lógica de negócios (thick client);
 Necessita conhecer o local da base de dados;
◦ Atualização problemática;
◦ Aplicação cliente continua com todo o seu código em um único
médulo executável;
◦ Grande consumo de banda (dependendo da regra de negócio);
◦ Segurança para acesso externo;

12
 Com a evolução da Internet ocorreu um movimento para
separar a lógica de negócios da interface com o usuário;
 O camada de interface com o usuário passou a ser
chamada de thin client;
 Sistemas web:
◦ Interface com o usuário -> Web Browser
◦ Regra de Negócios -> Web Server
◦ Acesso a dados -> Database Server

13
14
 Vantagens:
◦ Possibilidade de diferentes interfaces com usuário utilizando
as mesmas regras de negócio;
◦ Menor tráfego na rede (dependendo da regra de negócio);
◦ Separação da equipe de desenvolvimento por habilidades;
◦ Maior escalabilidade;

PDA

GUI
Servidor de Servidor de
Banco de Aplicação
Dados

Browser
 A Web utiliza um conjunto de protocolos que
mapeiam as ações dos usuários;
 O mais comum é o HTTP :
◦ Trabalha com pedidos e respostas

Protocolo HTTP :
GET, POST, HEAD…..

Protocolo HTTP :
200, 304, 401…..
 GET
◦ Forma como o browser chama o servidor quando se digita a
URL;
◦ Os parâmetros devem ser codificados nessa solicitação;

www.exemplo.com/portal/consulta.jsp?parametro=Java
%20Servlet
Cabeçalho GET de pacote HTTP:

GET /portal/consulta.jsp?parametro=Java%20Servlet HTTP/1.1


Host: www.exemplo.com
User-Agent: Mozilla/5.0 (Windows; U; Windos XP; pt-BR; rv:
1.8.0.4) Gecko/20070929 Firefox/2.0.0.6
Connection: Keep-Alive
 POST
◦ Contém um corpo no qual seus parâmetros de solicitação já
são codificados;
<FORM ACTION="portal/consulta.jsp" METHOD=POST>
<INPUT TYPE=submit NAME=“empresa” VALUE="">
<INPUT TYPE=submit NAME=“nome” VALUE="">
...
</FORM>

Cabeçalho POST de pacote HTTP:

POST /portal/consulta.jsp HTTP/1.1


Host: www.exemplo.com
User-Agent: Mozilla/5.0 (Windows; U; Windos XP; pt-BR; rv:
1.8.0.4) Gecko/20070929 Firefox/2.0.0.6
ContentType: application/x-www.form-urlencoded
Content-Lenght: 57
Connection: Keep-Alive
empresa=Uniderp&nome=Alexandre%20Rosa%20Camy
 200
2 (OK)
◦ Confirmação de que a requisição foi respondida com
sucesso.
Pacote de resposta de uma solicitação HTTP:

HTTP/1.1 200 OK
Date: Sat, 28 Sep 2007 08:02:23 GMT
ContentType: text/html; charset=ISSO-8859-1
Content-Lenght: 2541
<html>
<head>
<title>
Disciplina de Servlets e JSP
</title>
</head>
<body>
...
 304
3 (NOT MODIFIED)
◦ Os recursos não foram modificados desde a última vez em
que foi feita a solicitação;

 401
4 (UNAUTHORIZED)
◦ Cliente não tem permissão para acessar área requisitada;

 403
4 (FORBIDDEN)
◦ Acesso à área requisitada falhou;

 404
4 (NOT FOUND)
◦ Não encontrado.
 Por volta de 1998 a Sun atualizou a especificação
Java para a versão 1.2 com o acompanhamento de
bibliotecas;
 Java deixou de ser apenas uma linguagem para ser
tornar uma plataforma – J2SE – Java 2 Standard
Edition;
 J2SE passou a incorporar bibliotecas para:
◦ GUI
◦ Rede
◦ Acesso a Banco de Dados
◦ .....

 É a base para outras plataformas Java.


 J2SE era o suficiente para o desenvolvimento de
aplicações stand-alone;
 Muitas características importantes ainda estavam
indefinidas:
◦ Persistência
◦ Gerenciamento de Transação
◦ Segurança
◦ Dentre outros

 Em 1998 a Sun definiu uma arquitetura multi-


camadas para Sistemas enterprise – J2EE;
 Atualmente a J2EE encontra-se na versão 6;
 Melhorias:
◦ Compatível com todas as novas características introduzidas
pela J2SE 5: Generics, Autoboxing, Melhorias em loops, Tipo
Enumeration, importação estática, varargs and metadata
annotations;

◦ Algumas configurações em arquivos XML são opcionais;


 O recurso annotation pode ser utilizado para configuração;

◦ Facilidade em injeção de dependência;

◦ Surgimento da Java Persistence API – JPA;


 A plataforma J2EE utiliza o modelo de aplicação
multicamadas distribuída para aplicações enterprise;

Tier
 Enterprise
E Java Beans (EJB)
 Java Servlet
 Java Server Pages – JSP
 Java Server Pages Standard Tag Library - JSTL
 Java Server Faces
 Java Message Service API
 JavaMail API
 Java API for XML Processing – JAXP
 Java API for XML webServices – JAX-WS
 Java Database Conectivity API – JDBC
 Java Persistence API – JPA
 Java Autentication and Authorization Service - JAAS
 Sem os Containers, o desenvolvimento de aplicações
em 3 camadas seria muito difícil:
◦ Codificação complexa;
◦ Controle de transação;
◦ Gerenciamento de Estado;
◦ Multithreading;

 O surgimento de Containers facilitou em muito o


desenvolvimento em 3 camadas;
 O desenvolvedor tornou-se livre para se preocupar
com o desenvolvimento de regras de negócio;
 Realiza o trabalho por de trás do métodos e objetos
fornecidos pelas APIs J2EE;
 Premissa: “develop once, deploy anywhere”;

 J2EE Compatibility Test Suite (CTS) é uma suíte de


testes que um Container deve passar antes de obter
uma “Certificação J2EE”;

 O CTS consiste dos seguintes tipos de teste:


◦ Signature tests;
◦ API tests;
◦ End-to-end integration tests;
 BEA WebLogic
http://www.bea.com/products/weblogic/server
 Borland Enterprise Server
http://www.borland.com/besappserver
 IBM WebSphere
http://www.ibm.com/software/webservers/appserv/was
 JBoss
http://www.jboss.org
 Oracle 9iAS
http://www.oracle.com/
 Orion Application Server
http://www.orionserver.com
 Sun ONE
http://wwws.sun.com/software/products/appsrvr/appsrvr_download.html
 Jetty
http://www.mortbay.org/
 Apache Tomcat
http://jakarta.apache.org/tomcat
 Resin
http://www.caucho.com/resin
 ServletExec
http://www.newatlanta.com/products/servletexec
 Existem 2 tipos de aplicações web:
◦ Orientadas à apresentação;
◦ Orientadas à serviço.

 No J2EE, os componentes web são a extensão dinâmica


dos servidores web:
◦ Servlets
◦ JSP
◦ Webservices

37
38
39
 No início Java fornecia interatividade na Internet
através de Applets;

 Problemas com Applets:


◦ Inviabilidade no tempo de download;
◦ Incompatibilidade com browsers;

 Tais problemas levaram ao desenvolvimento de uma


tecnologia que rodasse no lado do servidor: Servlets;

41
 São classes escritas em Java;
 Não possuem Interface Gráfica;
 Trabalham no lado do servidor;
 Suporta o modelo request/response
 Herda todas as características do Java;
◦ JDBC;
◦ Gerenciamento de Memória
◦ Portabilidade

42
 init(): é executado somente no momento em que o
servlet é carregado na memória.
◦ O que pode ser feito:
 Conexão com o banco de dados;
 Ler dados de configuração do disco;
 Escrever informações no Log.

 service(), doGet(). doPost(): executam a cada


requisição do cliente;
◦ São chamados toda vez que o servidor Web receber solicitação
para o servlet em questão.

43
 destroy: é executado quando o servlet é finalizado;
◦ Realiza operações de fechamento da execução do servlet,
como:
 Liberação de recursos.

◦ Programadores não devem se preocupar em “quando” o Servlet


morre;
 Deve-se forcar no que pode ser feito quando este momento chega;

44
45
 As ferramentas para utilização de um servlet
encontram-se no pacote:

javax.servlet.*
 Interface Servlet
◦ Todo servlet implementa a interface Servlet;
◦ Utilizaremos herança da classe HttpServlet, que implementa o
servlet utilizando o protocolo HTTP;

46
47
 javax.servlet.*
 javax.servlet.http.*

◦ http://java.sun.com/products/servlet/2.5/docs/servlet-2_5-mr2/index.html

Vejamos o Exemplo 1

48
 Teve origem no JServ da Sun;

 Servidor de Referência para as tecnologias Servlet e


JSP;

 É desenvolvido por uma comunidade aberta e


participativa e liberado pela Apache Software
License;

 Site: http://tomcat.apache.org/

50
 São necessários dois passos para mapear uma servlet para uma
url:
◦ Definir o nome e classe da servlet
◦ Usando o nome da servlet, definir a url

nome
classe

url

 Agora a servlet pode ser acessada através da url:


◦ http://localhost:8080/nomesite/Exemplo1Servlet
51
 O objeto response tem por função retornar algo ao
cliente;

 Principais ferramentas:
◦ OutputStream: mais utilizado para arquivos
 OutputStream stream = response.getOutputStream();

◦ PrintWriter: mais utilizado para textos


 PrintWriter writer = response.getWriter();

◦ Redirecionamento;
 response.sendRedirect(“novaURL”);

53
 O objeto request tem por função obter informações do
cliente que está solicitando alguma coisa;

 Através dele é possível obter:


◦ Parâmetros enviados por url
◦ Dados enviados por formulários
◦ Cookies armazenados em clientes
◦ Dados de sessão
◦MMuitas outras informações (consulte a API)

54
 Toda requisição pode vir acompanhada de parâmetros;
 Método get
◦ Comum ter uma url que termine com: “?parametro=valor”

 Método post
◦ É possível enviar todos os parâmetros através de um
formulário;

55
 Independente do método chamado, eles podem ser
retornados com o seguinte código:
◦ request.getParameter(“nomeParametro");

56
• Existe muita confusão entre os conceitos de JavaBeans
e Enterprise Java Beans (EJB).
• EJBs
– São java beans com características mais avançadas para a
persistência de dados;

• JavaBeans
– Normalmente as classes de modelo de dados da nossa
aplicação costumam ser Javabeans.
– Estas classes administram:
• As propriedades da classe

58
– Os métodos públicos que dão acesso às propriedades;
• Os métodos devem estar de acordo com determinadas convenções;
– Para cada propriedade legível, o bean deve ter uma método no formato:

– Para cada propriedade gravável, o bean deve ter uma método no


formato:

59
– Além dos métodos das propriedades, um bean deve definir um construtor
que não tenha parâmetros;

• Cada JavaBean de uma aplicação pode ser criado para


representar tabelas em um banco de dados relacional;
• A tecnologia Javabeans é muito grande;
– Mais informações sobre essa vasta área pode ser encontrada
em:
• http://java.sun.com/products/javabeans

60
 Criação de um Projeto Web
 Configuração bibliotecas para desenvolvimento;
 Como rodar uma aplicação web de forma
convencional;

61

Você também pode gostar