Slide 1 - Google Sites

Propaganda
1
Programação para
Web em Java II
Prof. Maurício Rodrigues de Morais
[email protected]
2
Aula 2 e 3
Principais elementos
na camada Web
3
Conteúdo
Principais elementos da camada Web
Programando para a web
Uma visão mais detalhada de Servlets
JSPs na prática
Usando taglibs
4
Programando para a Web
 A criação de aplicativos web utilizando Java faz uso
maciço dos conceitos de orientação a objetos.
Naturalmente distribuídas, as aplicações web
necessitam que a arquitetura componentizada seja
bem definida.
 Um modelo muito utilizado é o de camadas, no qual
são separados elementos de visualização, controle e
modelo. Esse é um padrão de projeto conhecido
como MVC (Model, View, Controller)
5
Programando para a Web
Um aplicativo web com java
6
Programando para a Web
 Em um aplicativo java para a web, o servido de
aplicações tem um papel fundamental. É ele quem
faz a ligação entre os elementos criados pelo
programador e as solicitações dos usuários.
 Para que isso funcione, é necessário que a aplicação
seja disponibilizada, dentro do servidor de aplicações,
em uma estrutura de diretórios padronizada. Além
disso, é necessário que se escreva um arquivo de
configuração - a ser lido pelo servidor - que descreva
a forma como este vai interagir com a aplicação.
 A tarefa de publicar uma aplicação java em um
servidor é chamada de Deploy.
7
Programando para a Web
 O deploy dever ser feito da seguinte forma:
1. Criar um diretório que deverá ter o nome da
aplicação. Este diretório deverá estar dentro da
pasta $<tomcat_home>\webapps
2. Dentro desse diretório, deverá ser criada uma pasta
WEB-INF e, dentro dessa, uma pasta classes e
outra lib. A pasta WEB-INF\classes conterá as
classe java compiladas da aplicação. Já a pasta
WEB-INF\lib
conterá
eventuais
bibliotecas
utilizadas
3. Ainda dentro do diretório WEB-INF, deverá ser criado
um
arquivo
web.xml,
também
chamado
deployment
descriptor,
que
conterá
as
configurações da aplicação para publicação no
servidor (container)
8
Tecnologias para o desenvolvimento web
Estrutura de pastas no Tomcat
9
Tecnologias para o desenvolvimento web
Exemplo de arquivo de deploy (web.xml)
10
Programando para a Web
 Uma vez instalado o aplicativo no tomcat, ele poderá
ser acessado a partir de um browser, utilizando-se
como URL o endereço IP da máquina, a porta padrão
8080 e o nome da aplicação.
 Por
exemplo:
aplicação>
http://localhost:8080/<nome
11
da
Uma visão mais detalhada de Servlets
 Como já foi dito, as servlets são componentes
instalados no servidor de aplicação e que são
acionados por este em resposta a uma requisição do
usuário. A definição sobre qual servlet responderá a
qual requisição é feita no arquivo de deploy
(web.xml).
 As classes servlet são providas pelos pacotes
javax.servlet
e
javax.servlet.http
(ambos
da
distribuição JEE). Esses pacotes contem as classes e
interfaces necessárias para a criação de aplicativos
web.
12
Tecnologias para o desenvolvimento web
Pacotes Java para servlets
13
Uma visão mais detalhada de Servlets
 A interface javax.servlet.Servlet é que provê o padrão
da programação Servlet, fazendo o papel de
abstração geral da tecnologia. Todo servlet acaba
por implementar essa interface, ainda que
indiretamente.
 A interface possui 5 métodos importantes:
–
init (ServletConfig conf) – chamado pelo servidor de
aplicação para iniciar o servlet
–
service( ServletRequest req, ServletResponse res) –
chamado em resposta a requisições repassadas pelo
servidor de aplicação.
–
destroy() - chamado pelo servidor de aplicação para a
destruição do servlet.
–
ServletConfig getServletConfig() - retorna um objeto de
configurações do servlet
–
String getServletInfo() - quando chamado, deve retornar
14
informações sobre o servlet.
Uma visão mais detalhada de Servlets
 O ciclo de vida do servlet inicia-se quando o
servidor de aplicação carrega o servlet em
sua iniciação. Nesse momento, é chamado o
método init().
 Durante o tempo em que o servidor de
aplicação estiver no ar, qualquer chamada
que for redirecionada ao servlet acionará o
método service(), que contém a lógica interna
do aplicativo.
 Quando for solicitado o desligamento do
servidor de aplicação, este chamará o
método destroy do servlet, a fim de liberar
eventuais recursos que tenham sido alocados.
15
Uma visão mais detalhada de Servlets
 O método service é onde a magia da servlet
acontece. Esse método recebe dois parâmetros
essenciais dos ServletRequest e o ServletResponse, um
representando a requisição e o outro a resposta http.
 A classe ServletRequest possui uma série de métodos
que possibilitam a extração dos dados enviados pelo
usuário e que deverão ser processadas pelo servlet.
 A classe ServletResponse possibilita uma forma de
comunicação com o cliente, seja disponibilizando
dados que deverão ser exibidos, ou mesmo o próprio
código HTML da resposta.
16
Tecnologias para o desenvolvimento web
Exemplo de um servlet simples
17
Uma visão mais detalhada de Servlets
 No pacote javax.servlet.http estão os componentes
servlet voltados especificamente para o protocolo
HTTP. Normalmente, são essas que utilizamos para
aplicativos web.
 Assim, o conjunto de classes a ser utilizado passa a ser
HttpServlet, HttpServletRequest e HttpServletResponse.
 Em atendimento as especificidades do protocolo HTTP,
a classe HttpServlet permite a implementação de
alguns métodos específicos, de acordo com os
métodos HTTP. São eles: doGet(), doPost(), doHead(),
doPut(), doDelete(), doTrace() e doOptions(). Todos
esses método são chamados a partir do método
service().
18
Tecnologias para o desenvolvimento web
Exemplo de um HttpServlet
19
Tecnologias para o desenvolvimento web
 Para se testar um servlet como esse, seria possível
utilizar uma página como:
 Um clique no link “Chamar TesteServlet via GET”
acionaria o método doGet(), enquanto um clique no
botão “Chamar via POST” acionaria o método
doPost().
20
Uma visão mais detalhada de Servlets
 O acesso às informações enviadas pelo usuário na
requisição é feito por uma série de métodos da classe
HttpServletRequest. Existem 6 métodos importantes:
21
Uma visão mais detalhada de Servlets
 A devolução de dados ao usuário é feita a partir da classe
HttpServletResponse. Existem 9 métodos importantes:
22
Uma visão mais detalhada de Servlets
 Em alguns casos, é necessário apresentar ao usuário
uma página HTML ou JSP já existente. Esse envio é
chamado de dispatch e utiliza uma classe chamada
RequestDispatcher. Exemplo:
23
Uma visão mais detalhada de Servlets
 Quando, em resposta a solicitação, se deseja enviar
dados ao usuário (normalmente para uso por um JSP),
é utilizado um método específico da classe
HttpServletRequest:
–
void setAttribute(String nome, Object valor) –
Adiciona o objeto valor à sessão,
associando-se ao nome informado.
 Para ser recuperado o dado, o JSP utiliza um outro
método da classe HTTPServletRequest:
–
Object getAttribute(String nome) – Busca na
sessão um objeto que seja referenciado pelo
nome informado.
24
JSP na prática
 Uma página JSP permite mesclar códigos HTML e
códigos Java. Normalmente, são utilizadas para a
criação de páginas dinâmicas a partir de informações
processadas e enviadas por servlets.
 Os blocos de código Java existentes nas páginas JSP
são chamados de scriptlets e são demarcados por
tags bem definidas <% e %>.
 Desse modo, é possível retirar o código HTML de
dentro do servlet (que, de outro modo, teria que ser
enviado por lá) e tornar a edição das páginas mais
amigável.
 Cada JSP, ao ser compilada pelo servidor de
aplicação, torna-se uma servlet. Mas, tudo isso ocorre
de maneira transparente para o programador.
25
Uma visão mais detalhada de Servlets
 Exemplo de um JSP simples:
26
Uma visão mais detalhada de Servlets
 O JSP apresentado seria equivalente ao seguinte
servlet:
27
JSP na prática
 Os scriptlets podem ser usados de duas formas:
–
Para a inclusão de código java puro:
<%
String nome = “Maria Madalena”;
out.println(nome);
%>
–
Para a exibição do valor de uma variável já
declarada:
<%=nome%>
28
JSP na prática
 Tal como na programação Java convencional, ao ser
necessária a utilização de alguma classe, deverá ser
feito um import da mesma. Para isso, é utilizada um
diretiva logo no início do arquivo JSP com a seguinte
sintaxe:
–
<%@ page language=”java” import=”java.util.Date” %>
 Outra diretiva permite que se componha a página JSP
com a inclusão de outros blocos JSP ou HTML. Para
isso, é utilizada a diretiva include:
<%@ include file=”outraPagina.html” %>
 Há ainda mais uma diretiva útil, que permite a
configuração de uma página padrão para o
tratamento de erros:
<%@ page errorPage=”erro.jsp” %>
29
JSP na prática
 Páginas JSP possuem acesso a objetos implícitos
similares aos utilizados explicitamente em servlets. Esses
objetos permitem a interação com informações
importantes da requisição e resposta:
30
JSP na prática
 Exercícios (crie novas versões do programas feitos no
módulo anterior para uma versão web)
–
Crie um programa que escreva na tela a frase “Olá
Mundo”
–
Crie um programa que leia uma mensagem do usuário e
escreva de volta esta mesma mensagem
–
Crie um programa que leia do usuário 2 números inteiros
e devolva o valor da soma dos mesmos
–
Crie um programa que leia do usuário 2 números inteiros
e o símbolo de uma das quatro operações aritiméticas,
efetue a operação e devolva o resultado
–
Crie um programa que preencha um vetor de 10
posições, exiba-o, ordene-o e exiba-o novamente já
ordenado.
31
Usando TagLibs
 A tecnologia JSP permite que se crie facilmente páginas
dinâmicas. Mas, pode trazer problemas:
–
Dificuldade em construir páginas bem organizadas
–
Páginas JSP com muito código Java
–
Webdesigners se assustam com scriptlets
–
Problemas na interação entre programadores e
webdesigners
 Em contrapartida, o que seria ideal:
–
Criar páginas dinâmicas complexas e sem scriptlets
–
Utilizar tags que minimizem e simplifiquem a construção
–
Facilitar a interação entre programadores e
webdesigners
 A solução é usar TAGLIBs
32
Usando TagLibs
 Existem vários pacotes de tags criados por várias
pessoas ou comunidades. Porém a arquitetura padrão
de Java já provê alguns pacotes que tornam a escrita
de JSPs muito mais simples. Esse conjunto de tags é
chamado JSTL (JSP Standard Tag Library).
 JSTL é uma coleção de bibliotecas, com propósitos
bem definidos, que permitem escrever páginas JSP
sem código Java, tornando o código mais legível e
evitando
problemas
de
comunicação
entre
programadores e webdesigners.
 Cada tag realiza um determinado processamento,
que seria equivalente a um scriptlet. Cada tag está
ligada a uma biblioteca e é possível utilizar mais de
uma biblioteca no mesmo JSP.
33
Usando TagLibs
 Exemplo de uma página JSP com JSTL:
34
Usando TagLibs
 No exemplo
atenção:
apresentado,
4
linhas
chamam
a
<%@ taglib prefix=”fmt”
uri=”http://java.sun.com/jsp/jstl/fmt” %>
Utilizado para declarar a biblioteca a ser usada;
–
<jsp:useBean id=”agora” class=”java.util.Date” />
Utilizado para a criação de um objeto ou o uso de um
que esteja em algum escopo (request ou session)
–
<fmt:formatDate value=”${agora}” />
Utilizado para formatar a informação do tipo Date
–
<fmt:formatDate value=”${agora}”
dateStyle=”full”/>
Utilizado para formatar a informação do tipo Date,
utilizando o formato longo.
–
35
Usando TagLibs
 Nas últimas duas linhas é apresentada também uma
construção ainda desconhecida:
${agora}
 Esse tipo de construção (EL – Expression Language)
permite que se acesse o valor de qualquer expressão,
inclusive com o uso de alguns operadores:
36
Usando TagLibs
 Exemplos de E-L
37
Usando TagLibs
 As bibliotecas padrão da tecnologia JSTL são:
38
Usando TagLibs
 Taglibs mais utilizadas:
–
Tag <c:forEach>
Permite a execução de loops (iteração) similar
aos comandos for e while.
–
Tag <c:forTokens>
–
Permite quebrar uma String maior em várias
substrings separadas por um delimitador.
Além disso, percorre a lista de substrings.
–
Tag <c:if>
–
Permite a execução de desvios condicionais,
similares ao comando If.
39
Usando TagLibs
 Taglibs mais utilizadas:
–
Tag <c:import>
Permite a importação de páginas web já prontas.
–
Tag <c:set>
Permite alterar o valor de uma variável
armazenada em memória (request ou
session).
–
–
Tag <c:if>
Permite a execução de desvios condicionais,
similares ao comando If.
40
Usando TagLibs
 A lista completa de tags proporciona ainda mais
funcionalidades:
41
Usando TagLibs
 Exercícios (crie novas versões do programas feitos
anteriormente, utilizando JSTL)
–
–
–
–
Crie um programa que leia uma mensagem do
usuário e escreva de volta esta mesma
mensagem
Crie um programa que leia do usuário 2 números
inteiros e devolva o valor da soma dos mesmos
Crie um programa que leia do usuário 2 números
inteiros e o símbolo de uma das quatro operações
aritiméticas, efetue a operação e devolva o
resultado
Crie um programa que preencha um vetor de 10
posições, exiba-o, ordene-o e exiba-o novamente
já ordenado.
42
Download