Aula 07 - IME-USP

Propaganda
Programação Distribuída em
Java
Aula 09 - JSP
Na aula passada vimos:
• Aspectos gerais de segurança em Java
• policytool
• Instalação de políticas de segurança
• A classe SecurityManager
Na aula de hoje veremos:
• TomCat
• JSP... uma introdução
TomCat... O que é?
• Servidor de aplicações Java para web.
• Instalação e configuração:
– Vide (excelente) tutorial on-line no site de Márcio D’Ávila em:
– http://www.mhavila.com.br/topicos/java/tomcat.html
• Criação de contextos de aplicação
– Veja o tutorial acima citado
Observar a estrutura de diretórios
JSP
• Java Server Pages
• Características
– Permite a inserção de código Java em páginas HTML
– Permite a exibição de conteúdo dinamicamente
– Semelhante a ASP... Com a vantagem da portabilidade
JSP
• Expressões
–
–
–
–
Código Java inserido em páginas HTML usando-se:
<%= java_code %>
O código Java é avaliado em tempo de execução
Comentários são da forma <%-- comments --%>
• Exemplo
– Hora certa: <% = new java.util.Date() %>
– Atente para o uso do sinal ‘ = ‘
expressao.jsp
Scriptlets
• São blocos de código Java dentro da JSP
• Diferem das expressões por não usar ‘ = ‘
• Exemplo:
– <% // Tudo aqui dentro deve ser tratado como se estivesse
–
// sendo escrito em uma classe Java qualquer
–
System.out.println(“Instancia um objeto Date”);
–
java.util.Date data = new Date();
– %>
• A partir do trecho anterior teremos a
variável data disponível para toda a JSP
• Poderíamos escrever então:
–
–
–
–
...
A hora atual é <% = data.getTime() %>
...
Hoje, dia <% = data.getDay() %>
• Podemos... Mas queremos?
scriptlet.jsp
• Um scriptlet não gera conteúdo HTML
• Se for necessário imprimir de dentro de
um scriptlet, usar a variável predefinida
“out”, que é da classe JspWriter
• Exemplo
– <% // Esse scriptlet gera saída HTML diretamente
–
System.out.println(“Instancia um objeto Date”);
–
java.util.Date data = new Date();
–
out.println(String.valueOf(data));
– %>
Misturando Java com HTML
• O uso repetitivo de ‘out’ torna o código
complicado
• É possível aplicar-se as estruturas de
controle do Java ao código HTML
misturando.jsp
Diretivas
• Para importar pacotes usamos “Diretivas”
• Existem várias diretivas
• Uso: <% @ directive %>
• Exemplo:
– <%@ page import = “java.util.*”
diretivas.jsp
%>
Declarações
• Escrever uma JSP é equivalente a definir
uma classe
• Fazemos declarações de variáveis e/ou
métodos dentro de uma JSP usando a
estrutura: <% ! declaration %>
• Exemplo
– <%! String nome;
–
String sobremone;
–
void printName() {
–
String out = nome + sobrenome;
–
System.out.println(out);
–
}
– %>
• Note que nesse caso a avaliação das
variáveis declaradas é feita apenas no
carregamento da JSP
declaracao.jsp
• Em resumo
• Variáveis declaradas em <% __%>
(scriptlet’s)
– São locais
– Tudo bem usar
• Variáveis declaradas em <%!__%>
(JSP declaration style)
– São “globais” e vão ser compartilhadas com outras threads
dessa instância
– Em geral não é uma boa idéia pois exige sincronismo, o que
piora a performance
Tags JSP
• Não usam <%, e sim <...> semelhante ao
HTML
• Convenção de sintaxe usada por XML
• Podem ser de dois tipos
– Carregadas de biblioteca externa
– Predefinidas
• Tags predefinidas começam com jsp:
• Ex. <jsp: include ...>
tags.jsp
Sessões
• Objeto associado a cada visitante do site
• Cada sessão recebe dados associados a
um cliente que podem ser recuperados
como fazemos em uma Hashtable
• Usuários distintos que acessarem a
mesma página simultaneamente terão
sessões diferentes
getName.htm
Processamento de formulários
HTML
• Defina uma classe que tenha um campo
correspondente a cada campo do
formulário (exatamente o mesmo nome)
• Crie getters e setters para todos os
campos.
• Coloque seu arq.class no local apropriado
de acordo com a versão do Tomcat que
estiver utilizando (classpath do servidor)
• Na JSP incluir:
– <jsp:useBean id=“var" class=“MinhaClasse" scope="session"/>
A tag useBean cria uma instância “var” de
MinhaClasse ou atualiza se a mesma já existir...
Essa instância é chamada “bean”
– <jsp:setProperty name=“var" property="*"/>
A tag setProperty coleta os dados de entrada,
compara com os campos do “bean” e atribui os
valores coletados usando os setters apropriados.
• A partir daí, os campos do objeto “var” da
classe “MinhaClasse” podem ser
acessados através dos seus getters
getData.html and
zellerAlgorithm.jsp
O que você precisa saber:
• Instalar e configurar um ServletContainer
• Compreender as características principais
de uma JSP
• Diferenciar as estruturas da JSP e
perceber o melhor momento de se utilizar
de cada uma delas
• Ter noção de “o que são beans”
Na próxima aula veremos
• Java Servlets
Download