Carlos Renato Alves Gouveia
[email protected]
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