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