Buscar

Desenvolvimento Web com Java

Prévia do material em texto

1
JDBC (Java Database Connectivity), utilizado no acesso a bancos
? Servlets, são utilizados para o desenvolvimento de aplicações Web com 
conteúdo dinâmico. 
? JSP (Java Server Pages), uma especialização do servlet que permite que 
conteúdo dinâmico seja facilmente desenvolvido. 
? JTA (Java Transaction API), Uma API que padroniza o tratamento de 
transações dentro de uma aplicação Java. 
? EJBs (Enterprise Java Beans), utilizados no desenvolvimento de 
componentes de software. Eles permitem que o programador se concentre 
nas necessidades do negócio do cliente 
JCA (Java Connector Architecture), Uma API que padroniza a ligação a 
aplicações legadas. 
? JPA (Java Persistence API), Uma API que padroniza o acesso a banco 
de dados através de mapeamento Objeto/Relacional dos Enterprise Java 
Beans. 
? JMS (Java Message Service), Uma API para middleware orientado a 
mensagens. 
Desenvolver aplicações consiste em analisar e construir para:
» Resolver problemas de negócios; 
» Automatização e informatização de processos; 
» Facilitar a consulta a informações e dados; 
Separando em camadas e por responsabilidades
– Cada parte de uma aplicação tem uma responsabilidade 
– Para cada responsabilidade existe uma camada: 
» GUI – Interface com o usuário; 
» Model – Modelo de negócio, classes de negócio; 
» Persistência – Classes que permitem a manipulação dos objetos em 
repositórios de dados; 
» Exceptions – Classes que representam exceções; 
Elementos de uma aplicação web
? Baseado em Request-Response; 
? Cliente abre conexão e envia request para o servidor; 
? Cliente recebe response e fecha conexão; 
? Comunicação sem estado (stateless); 
? Para o servidor cada request é o primeiro request enviado pelo cliente; 
? Cada recurso é identificado por único e exclusivo Uniform 
Resource Identifier (URI); 
? URL (Uniform Resource Locator) são URI’s que especificam 
protocolos (HTTP, FTP,mailto). 
URI
Uma URI pode ser classificado como um localizador (URL) ou um 
nome (URN), ou ainda como ambos; 
O URN define a identidade de um item, enquanto que o URL nos 
dá um método para o encontrar 
O Hypertext Transfer Protocol (HTTP), em português
Protocolo de Transferência de Hipertexto, é um protocolo de 
comunicação (na camada de aplicação conforme o Modelo 
OSI)Base comu WWW 
Http 1 abre conexao 2 http request 3 httresponse 4 fecha conexao
O protocolo HTTP define oito métodos que indicam a ação 
a ser realizada no recurso especificado. 
O método determina o que o servidor deve fazer com o 
URL fornecido no momento da requisição de um recurso. 
Um servidor HTTP deve implementar ao menos os 
métodos GET e HEAD. 
• Envia dados através da URI; • Menos seguro; • Pode navegar dados de 
um site para outro Post 
Envia dados através do fluxo da requisição; Mais seguro; Dados 
navegam somente no mesmo contexto; Orientadas à apresentação 
• Páginas interativas contendo linguagens tais como: 
HTML, XML, DHTML, etc Orientadas a serviços • Web Services 
Componentes web são: • Java Servlets; • Páginas JSP; • Web Services; 
Servlet
É uma classe Java para estender as capacidades de servidores Web; 
? Baseado no modelo request / response; 
? Funciona através de threads, cada chamada executa uma 
thread diferente; 
Funciona através de threads, cada chamada request, executa uma thread 
diferente. 
O ciclo de vida de um Servlet é controlado pelo container; 
A classe HttpServlet fornece métodos para controle do ciclo de vida 
do Servlet pelo container: • init() • destroy() • service() 
2
HttpServletRequest
• Define um objeto que fornece informações do request HTTP para o 
servlet; 
• Provê dados tais como parâmetros e valores enviados pelo browser, 
atributos e 
streams de entrada;informações sobre o protocolo, endereço IP do cliente, 
etc; 
• Estende a interface ServletRequest. 
HttpServletResponse
• Define um objeto que permite ao servlet enviar resposta ao cliente web. 
• Permite definir atributos no header HTTP e criar cookies. 
• Estende a interface ServletResponse 
http request
Procotolo/servidor/porta/contexto/uri/parametros 
A implementação da interface Servlet
(javax.servlet.Servlet) é usada para todos os servlets, 
porque é essa interface encapsula os métodos do ciclo 
de vida do servlet. 
Nesse ciclo, existem os métodos:
? init()
Essa ação somente é completada 
com sucesso depois que o servlet não receber nenhuma 
solicitação. 
Esse método consegue sobrecarregar códigos de 
iniciação que são executados apenas uma vez, antes do 
tratamento de qualquer solicitação por parte do usuário. 
? service() 
Esse método é invocado quando chega a primeira 
solicitação do cliente, ou seja, depois que o método init 
permitir ao servlet responder a uma solicitação. 
O Container inicia uma nova thread ou aloca um thread 
de pool, onde é ativado o método service. 
? destroy()
Esse método tem como objetivo remover o servlet, 
sendo invocado quando todas as sequências dentro do 
método service() forem finalizadas. 
Etapas 
O usuário faz uma solicitação através de um link ou botão do qual o 
servlet faz parte. 
Container verifica se a solicitação é para um servlet, se for, cria-se 
os objetos response (HttpServletResponse) e request 
(HttpServletRequest). 
Container localiza o servlet baseado na solicitação, onde é criada 
ou alocada uma thread para a solicitação, chamando o método 
service() do servlet, que passa como argumento os dois objetos 
request e response. 
O método service() descobre qual método HTTP (GET ou POST) 
do servlet chamar. 
O servlet usa o objeto response para escrever a resposta para o 
cliente, geralmente esse retorno já é a página HTML que vai ser 
exibida. 
Quando invocado o método destroy(), o método service() termina, 
sendo que a thread morre ou retorna um para um pool de threads 
gerenciadas pelo Container. 
As referências dos objetos de solicitação acabam saindo do 
escopo. Com isso, é executado um processo de limpeza da 
memória, que são enviadas para o Garbage Collector 
É usado o objeto ServletConfig. Esse objeto possui os seguintes 
métodos para fazer a recuperação: 
getInitParameterNames() - Não possui argumento e retorna um 
Enumeration, que contém todos os nomes de parâmetro no objeto 
ServletConfig. 
getInitParameter() – Possui como argumento uma string e retorna 
uma string.
Página 1 de 3
28/09/2013about:blank
3
Servlet Filters é um recurso do Java EE para interceptar uma requisição 
web 
antes do recurso final ser atingido, este recurso pode ser um servlet, um 
arquivo, entre outros. 
Filtros são muito úteis quando precisamos configurar o ambiente para o 
recurso a ser atingido, como por exemplo, abrir e fechar a sessão do 
hibernate (openSessionInView), verificar se o usuário está logado ou se tem 
permissão de fazer a requisição, permitindo ou não acessar o recurso. 
Um filtro é um objeto que implementa a clase javax.servlet.Filter e por 
isso 
deve definir três métodos 
Um filtro é um objeto que implementa a clase 
javax.servlet.Filter e por isso deve definir três métodos. 
? void init(FilterConfig config) throws ServletException 
O método init é chamado uma vez antes do filtro entrar em 
operação pela primeira vez. 
Como parâmetro é passado um FilterConfig de onde se 
pode obter o nome do filtro, os parâmetros de inicialização, 
e o ServletContext. 
? void destroy()
O método destroy é chamado para avisar o filtro que ele 
está sendo desativado, e possa liberar eventuais recursos 
alocados. 
? void doFilter(ServletRequest req, ServletResponse res, 
FilterChain chain) throws IOException, ServletException 
O método doFilter é onde é feito todo o processamento do 
filtro. 
A primeira parte é executada antes de que o Servlet seja 
executado. 
A chamada chain.doFilter transfere o controle para o 
próximo filtro. 
A chamada só retorna quando o Servlet já foi processado, 
então, o código posterior a essa chamada será executado.Ao chamar chaind.doFilter passamos como parâmetro um 
request e um response, podemos facilmente alterá-los, 
criando Wrappers em torno de cada um deles. 
Esse Servlet gera um log do tempo que cada requisição 
levou. 
Para ter acesso ao log é preciso guardar o ServletContext, 
através do método init. 
Vale ressaltar também que o request recebido pelo filtro não 
é um HttpServletRequest, e portanto para conseguirmos a 
URI utilizada para chamar o Servlet precisa fazer um cast. 
Isso informa ao servidor que o filtro timerFilter é 
implementado pela classe TimerFilter
4
Um banco de dados é uma coleção organizada de dados. 
● Um sistema de gerenciamento de bancos de dados (database 
management system – DBMS) fornece mecanismos para armazenar, 
organizar, recuperar e modificar dados para muitos usuários. 
● SQL é a linguagem padrão internacional utilizada quase 
universalmente com bancos de dados relacionais para realizar 
consultas e para manipular dados. 
O JDK vem com um RDBMS puro Java chamado Java DB 
— a versão da Sun para o Apache Derby. 
Os programas Java comunicam-se com bancos de dados 
e manipulam seus dados utilizando a Java Database 
Connectivity (JDBC™) API. 
Um banco de dados relacional é uma representação lógica 
de dados que permite que os dados sejam acessados sem 
considerar sua estrutura física. 
● Um banco de dados relacional armazena dados em 
tabelas. 
O método Connection createStatement com dois 
argumentos recebe o tipo e a concorrência do result 
set (conjunto de resultados). 
● O tipo de conjunto de resultados especifica se o 
cursor do ResultSet é capaz de rolar em ambas as 
direções ou apenas encaminhar e se o ResultSet é 
sensível a alterações feitas nos dados subjacentes. 
Se um ResultSet não for sensível a alterações, a 
consulta que produziu o ResultSet deve ser 
novamente executada para refletir qualquer alteração 
feita.
Página 2 de 3
28/09/2013about:blank
5
Java Server Pages 
Tudo o que vale para servlets continua valendo 
para Java Server Pages 
? Um JSP é uma servlet durante a execução 
? Escrever código em JSP é como escrever código 
dentro do doPost() ou doGet() de um servlet com os 
objetos request, response, out, session e outros já 
definidos 
? Um JSP, depois de carregado, é tão veloz quando 
uma servlet (pois um JSP é uma servlet) 
? JSP é mais fácil de codificar e implantar, mas é mais 
difícil de depurar 
Servlets forçam o programador a embutir código 
HTML dentro de código Java 
? Desvantagem se a maior parte do que tem que ser 
gerado é texto ou HTML estático 
? Mistura as coisas, o programador tem que ser um 
bom Designer e se virar sem ferramentas gráficas 
JSP é uma tecnologia padrão, baseada em 
templates para servlets. O mecanismo que a 
traduz é embutido no servidor 
? Exemplo de um código em JSP 
Em um servidor que suporta JSP, a pagina JSP é 
transformada (compilada) em uma servlet 
? A forma mais simples de criar documentos JSP, é: 
? Mudar a extensão de um arquivo HTML para JSP 
? Colocar o documento em um servidor onde suporte JSP 
? Fazendo isso, o servidor gera uma servlet 
? A compilação é feita no primeiro acesso 
? Nos acessos subseqüentes, a requisição é 
redirecionada a servlet gerada 
mapeada para o JSP, o container : 
? Verifica se a servlet correspondente à pagina é mais 
antigo que a pagina (ou se não existe) 
? Se a servlet não existir, ou for mais antiga, a pagina 
JSP será compilada para gerar a nova servlet
Desse ponto em diante o ciclo de vida é similar ao 
das servlets, mas os métodos são diferentes 
? Se a servlet ainda não existir, ela será instanciada, e 
seu método jspInit() é chamado 
? Para cada requisição, seu método _jspService(req,res) 
é chamado 
? No fim da vida, o método jspDestroy() é chamado 
jspInit() e jspDestroy() permitem maior controle 
sobre o ciclo de vida da servlet 
? Ambos são opcionais 
? Úteis para inicializar conexões, obter recursos, etc...
6
Especificação desde o Java EE 5;
-Comunidade ativa e muitos materiais de estudo; 
-Exige pouco conhecimento inicial para construção de interfaces; 
-ntegração com JPA, EJB, Spring; 
-Capacidades interativas com AJAX. 
-Encapsula o HTML, CSS e Javascript; 
Possui duas implementações bem conhecidas:
-Sun Mojarra – implementação de referência 
-MyFaces da Apache 
Ambas, pode-se desenvolver um projeto JSF.
Complexidade para criação de componentes;
-Não tem requisições GET apenas POST, URL’s  - nada amigáveis;  -Não 
tem suporte a Ajax nativo, é necessário 
configuração para utilizar de terceiros; -Permite uso de JSP, scriptlets 
(código java na sua página web, coisa de 1990);-Configurações baseadas 
em XML; 
Paginas
Declaração mais simples de páginas web;
-Suporte nativo a XHTML, recursos e AJAX; 
-Mais eventos, facilitando ações como inicialização 
de página, tratamento pré e pós-validação, 
inicialização de aplicação;
-Suporte à instrução HTTP GET; 
-Integração com a nova especificação Bean 
Validation, facilitando a validação de JavaBeans 
JSP era a tecnologia padrão de Java para Web, 
inclusive no JSF 1.x; 
-Vários conceitos de JSF não são suportados por JSP, e 
conceitos do JSP se tornam desnecessários para JSF. 
Suporte a tag <f:ajax>; 
Inclui duas bibliotecas de componentes básicos: 
-Biblioteca “HTML” (sigla h): possui componentes que representam 
diversos elementos HTML e a biblioteca. 
-Biblioteca “Core” (sigla f): responsável por tarefas comuns no 
desenvolvimento de sistemas, como internacionalização, validação 
e conversão de dados de entrada. 
Existem 4 passos básicos para iniciar o desenvolvimento 
em JSF:
-Criação da classe Bean -Mapeamento da classe Bean (xml / @) -Criação 
da página JSF -Mapeamento da navegação entre páginas. 
(Implícita / Condicional) 
JSF - Backing Bean
-Fornecerá as informações exibidas na página e as operações 
que serão executadas. 
-Para que uma página JSF acesse uma propriedade de um 
Bean, ela precisa ter um método de acesso get. 
O mapeamento pode ser feito de duas formas: 
-Através do arquivo faces-config.xml: Única forma disponível até o JSF 1.2. 
Ciclo
1. Restore view phase (Restaurar Visão)
Esta fase visualiza a geração da página, a ligação de 
componentes para os seus manipuladores de eventos e validadores são 
executados e salvo no objeto FacesContext. 
O FacesContext guarda as visões na propriedade ViewRoot o qual possui 
todos os componentes da visão atual. 
2. Apply request values phase (Aplicar valores de requisição)
Suponha que um campo é obrigado a ser do tipo inteiro, e o valor é 
convertido para um Integer, e se a conversão falhar, então uma 
mensagem de erro associado com o componente é gerada e enfileira no 
FacesContext. 
3. Process validations phase (Processar Validações)
É nesta fase onde ocorrem as validações. Esta validação pode ser criada 
pelo 
desenvolvedor ou “obtida” diretamente do JSF. 
4. Update model values phase (Atualizar valores do modelo)
Esta é a fase onde é atualizado o valor no lado do servidor, 
atualizando a propriedade dentro do seu Backing Bean. 
5. Invoke application phase (Invocar aplicação)
Nesta fase o Controller do JSF invoca a aplicação para manipular o 
envio do form. O valor do componente sempre estará convertido, 
validado e aplicado aos objetos de modelo. 
6. Render response phase (Renderizar resposta)
Esta fase irá exibir a tela com todos os componentes em seu estado atual. 
Página 3 de 3
28/09/2013about:blank

Outros materiais

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes