Buscar

Aula 08 - JSP e Bean (1)

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

*
Linguagem III
Ana Patrícia F. Magalhães Mascarenhas
anapatriciamagalhaes@gmail.com
2014.2
JSP
*
JSP
*
Introdução à JSP
*
Java Server Pages
JSP (Java Server Pages) é uma combinação de linguagem de markup (HTML ou XML) com código Java para produzir uma página Web dinâmica
Cada página é automaticamente compilada para um Servlet
Atividades são divididas: 
O desenvolvedor implementa componentes customizados e o designer da página faz a montagem da mesma.
*
Processamento de Páginas JSP
A página JSP é somente uma página XML ou HTML com alguns elementos especiais. Páginas JSP devem ter a extensão .jsp, que dizem ao servidor (JSP) que a página tem que ser processada por um container JSP. Sem isso o servirdor mandará a página JSP não processada no formato textual para o Browser.
*
Criando Páginas JSP
Tudo que você precisa para criar um página JSP, é um editor de texto. Já existe um número de editores que suportam orientação à sintaxe do JSP e HTML. Já existem também ferramentas para construção de páginas Web que suportam JSP. Todavia inicialmente é melhor que você trabalhe com as páginas textuais para aprender como JSP funciona. 
*
Funcionamento do JSP
Faculdade Ruy Barbosa
Cliente
Web Server
Request
BD
Solicita Página JSP
Envia Request ao Servidor
Localiza e envia ação p/ página
Verifica ocorrência mudança
Cria Java Servlet
Compila Servlet e gera bytecode (.class). 
Durante a montagem pode fazer solicitação ao BD (se necessário)
Gera página HTML (transforma tags personalizadas em comuns)
Envia página HTML ao cliente
Pagina HTML
*
Requisição do usuário
Servidor Web / Servlet Container
JSP Handler Servlet
Arquivo modificado?
Criar arquivo fonte
Compilar para um Servlet
Executar o novo Servlet
Verificar se o arquivo foi modificado desde a última compilação
Sim
Resposta para o usuário
Não, execute o Servlet existente
*
<%@page contentType="text/html"%>
<html>
<head><title>JSP Page</title></head>
<body>
 <%
 for (int i=1;i<6;i++){
 out.println("<h" + i + ">verifique como ficou a pagina html deste teste</h" + i + ">"); }
 %>
 </body>
 </html>
Primeiro Exemplo
*
<html>
<head><title>JSP Page</title></head>
<body>
 <h1>verifique como ficou a pagina html deste teste</h1>
<h2>verifique como ficou a pagina html deste teste</h2>
<h3>verifique como ficou a pagina html deste teste</h3>
<h4>verifique como ficou a pagina html deste teste</h4>
<h5>verifique como ficou a pagina html deste teste</h5>
 </body>
 </html>
*
Outro Exemplo
<!--File jsp001.jsp
 02/05/00
 -->
 
 <html>
 <body>
 <H1>My First JSP Page</H1>
 <H2>Hello, JSP world!</H2>
 
 <% for (int i=0; i<11; i++) { %>
 <br> 
 <%= i %>
 <% }//end for loop %>
 
 <H3>Isn't this fun</H3>
 
 </body>
 </html>
*
Saída no Browser
My First JSP Page
Hello, JSP world!
 0 1 2 3 4 5 6 7 8 9 10 
Isn't this fun
*
Diretivas de página 
Páginas JSP começa, tipicamente com um diretiva que especifica a linguagem e o tipo de conteúdo da página:
<%@ page language="java" contentType="text/html" %>
Uma diretiva começa com o identificador de começo <%@ seguido do nome da diretiva (ex. page), pares atributo/valor, e o identificador de fim %> . Uma diretiva contém um ou mais pares atributo/valor (ex. language="java"). 
Uma diretiva de página pode conter muitos atributos, no nosso exemplo usamos dois: language e contentType.
*
Diretiva include - Atributos (1)
<%@include file="url" %>
A URL especificada é normalmente interpretada de modo relativo a página JSP que usa a diretiva
Pode-se usar endereços absolutos através da inclusão de uma / no início da URL 
<HTML>
<HEAD>
<TITLE>Usando diretivas include</TITLE>
<BODY>
<%@ include file="/navbar.html" %>
<!-- Part specific to this page ... -->
</BODY>
</HTML>
*
Declarações JSP
A sintaxe da declarações JSP seguem o seguinte formato : 
<% declarations %> 
Aqui estão alguns exemplos: 
<% int a = 100, b = 2; %> 
<% java.util.Date myDate = new java.util.Date(); %> 
*
Expressões
Tem o formato:
<%= expression %> 
Expressões são: 
- Avaliadas
- Convertidas em String 
- Inseridas no texto HTML da página 
*
No nosso Segundo Exemplo
<!--File jsp001.jsp
 02/05/00
 -->
 
 <html>
 <body>
 <H1>My First JSP Page</H1>
 <H2>Hello, JSP world!</H2>
 
 <% for (int i=0; i<11; i++) { %>
 <br> 
 <%= i %>
 <% }//end for loop %>
 
 <H3>Isn't this fun</H3>
 
 </body>
 </html>
*
Comentários Explícitos
Comentário que será visto na página HTML produzida pelo servidor JSP:
<!-- comentário explícito [ <%= expressão %> ] --> 
*
Comentários Implícitos
Comentário que não será visto na página HTML produzida pelo servidor JSP:
<%-- comentário escodido --%> 
*
Controle de Formulários (1)
request.getParameter(“campo”)
Recebe o conteúdo do campo do formulário de origem
Ex.: String nome = request.getParameter(“nome”);
Faculdade Ruy Barbosa
*
Controle de Formulários (2)
Ex.:Criar um formulário para cadastro de filmes. Quando clicar no botão cadastrar, chamar uma página JSP. Esta página deverá apenas capturar os dados e apresenta-los na tela.
Faculdade Ruy Barbosa
<html>
<head><title>Cadastro de Filmes</title></head>
<body>
<form name="cadFilme" action="./cadFilme.jsp" method="post">
………
*
Controle de Formulários (3)
<html>
<head><title>Realiza processamento na pagina JSP</title>
</head>
<body>
<%
String NomeFilme=request.getParameter("titulo");
String Ator=request.getParameter("estrela");
String cat[] = {"comédia","Aventura","Ação","Drama"};
int indice=Integer.parseInt(request.getParameter("categoria"))-1;
String dur=request.getParameter("duracao");
int Lanc=Integer.parseInt(request.getParameter("lancamento"));
out.println("O filme informado foi: " + NomeFilme+"<br>");
out.println("A estrela do filme é: "+Ator+"<br>");
out.println("Trata-se de um filme de "+cat[indice]+"<br>");
if (Lanc==1)
 out.println("Lançamento, aproveite!");
%>
</body>
</html> 
Faculdade Ruy Barbosa
*
Passagem de Parâmetros usando sessão (1)
Muitas vezes é necessário guardar um valor para ser utilizado em páginas subsequentes.
Ex.: Login e senha
Faculdade Ruy Barbosa
*
Passagem de Parâmetros usando sessão (2)
Gravar Sessão
session.setAttribute(“nomeSessao”,”valorSessao”);
Para obter o valor armazenado
tipoCampo nomeVariavel = (tipoCampo)session.getAttribute(“nomeSessao”);
Faculdade Ruy Barbosa
*
Passagem de Parâmetros usando sessão (3)
Métodos Importantes
invalidate() - destroi todas as sessões criadas
setMaxInactiveInterval(seg) - Emilina a sessão caso o cliente se mantena inativo por seg segundos.
Faculdade Ruy Barbosa
*
Exemplo d uso de sessão (1)
<html>
<body>
<form action="./gravaSessao.jsp" method="post">
Informe seu nome:<input name="nome"><br><br>
<input type="submit" value="Enviar">
</form>
</body>
</html>
Faculdade Ruy Barbosa
<html><head><title> Pagina de gravacao da sessao</title></head>
<body>
<p>Pagina de gravacao da sessao com o valor do campo NOME informado</p>
<%
session.setAttribute("nome",request.getParameter("nome"));
%>
<p>Sessao gravado</p>
<input type="button" onClick="javaScript:window.location.href='mostraSessao.jsp'" value="Visualizar Sessao"
</body>
</html>
*
Exemplo d uso de sessão (2)
Faculdade Ruy Barbosa
<html><body><title> pagina que captura o valor da sessao </title>
<%
String acheiSessao=(String)session.getAttribute("nome");
if(acheiSessao == null)
 out.println("sessao não localizada");
else
 out.println("Sessao encontrada. Seu nome é "+acheiSessao);
%>
</body>
</html> 
*
Exercícios
Faculdade Ruy Barbosa
JSP – Parte I
*
Java Beans
*
JavaBeans (1)
Uma das tags de JSP possibilita a chamada
a componentes reutilizáveis chamados JavaBeans.
JavaBean é uma classe Java que tem as seguintes caraterísticas: 
Classe Pública;
Construtor Público sem argumentos;
Métodos get e set públicos para simular propriedades. 
o componente JavaBean é importado pelo programa a ser utilizado, suas propriedades são configuradas e seus métodos são chamados. 
*
JavaBeans (2)
Na maioria das vezes, os beans são usados para encapsular elementos visuais e não visuais de uma GUI. 
JavaBeans podem ser utilizados dentro de arquivos JSP para ajudar a separar a apresentação e a lógica de suas partes componentes.
*
Exemplo de Classe Bean (1)
Package exemplo;
public class Conta {
 private float valor;
 private float percentual;
 public Conta() {
 this(0.0,0.0);
 } 
 public Conta(float valor, float percentual) {
 this.setValor(valor);
 this.setPercentual(percentual);
 }
 public void setValor(float valor){
 this.valor = valor;
 };
 public void setPercentual(float percentual){
 this.percentual = percentual;
 };
 public float getGorjeta(){
 return this.valor * this.percentual;
 }
}
*
Como usar o javaBean no JSP? Usando Ações
Ações são usadas para controlar o comportamento do Servlet/JSP engine
jsp:include
jsp:useBean
jsp:setProperty
jsp:getProperty
*
Sintaxe básica
<jsp:useBean id = “name” class=“package.class” />
<jsp:useBean id = “conta” class=“exemplo.Conta” />
<% exemplo.Conta conta = new exemplo.Conta(); %>
equivale a 
*
Um Exemplo mais Completo
*
Hora e Data
<%@ page language="java" contentType="text/html" %>
<html>
 <body bgcolor="white">
 
 <jsp:useBean id="clock" class="java.util.Date" />
 
 The current time at the server is:
 <ul>
 <li>Date: <jsp:getProperty name="clock" property="date" />
 <li>Month: <jsp:getProperty name="clock" property="month" />
 <li>Year: <jsp:getProperty name="clock" property="year" />
 <li>Hours: <jsp:getProperty name="clock" property="hours" />
 <li>Minutes: <jsp:getProperty name="clock" property="minutes" />
 </ul>
 
 </body>
</html>
*
*
Ações - jsp:useBean
jsp:useBean - Instancia um objeto da classe especificada por class e o associa a variável com o nome especificado por id, caso este objeto não exista. Se existir usa este objeto
<jsp:useBean id="clock" class="java.util.Date" />
id - apresenta o nome do bean
class - usado para descrever o nome completamente qualificado da classe do bean
scope - indica o contexto no qual o bean será disponibilizado (padrão: page) Permite que o bean esteja associado a mais do que uma única página.
type - especifica o tipo da variável que irá se referir ao objeto
beanName - Dá um nome de bean, que será usado no instante da criação do bean.
<jsp:useBean id="cd" class="music.CD" />
*
Ações - jsp:setProperty (1)
jsp:setProperty é usado para atribuir valores as propriedades de um bean que foi referenciado previamente
<jsp:useBean id="cd" class="music.CD" >
 <jsp:setProperty name="cd" 			property="nome" value="Encore" />
</jsp:useBean>
<jsp:useBean id="cd" class="music.CD" />
...
<jsp:setProperty name="cd" property="*"/>
*
Ações - jsp:setProperty (2)
name - atributo obrigatório, indica o bean cujas propriedades serão alteradas
property - atributo obrigatório, indica a propriedade que será alterada. Um valor "*" significa que todos os parâmetros na variável request cujos nomes correspondam a nomes de propriedades serão enviados para os métodos setter correspondentes
value - atributo opcional, especifica o valor para a propriedade
param - indica um parâmetro da variável request que irá gerar o valor para a propriedade. Se o parâmetro não existir nada acontece.
*
Ações - jsp:getProperty
Usado para recuperar o valor de uma propriedade do bean, convertê-la para string e inserí-la na saída (PrintWriter)
Possui dois atributos obrigatórios
name - indica o bean cuja propriedade será inspecionada
property - indica a propriedade que será inspecionada. 
<jsp:useBean id="cd" class="music.CD" scope="session"/>
<H1> CD: <jsp:getProperty name="cd" property="nome" /> </H1> 
*
Mais um exemplo
*
Formulario
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>JSP Page</title>
 </head>
 <body>
 <form name="form1" action="./Pagina2.jsp" method="post">
 <h1>JSP Page</h1>
 nome:<input type="text" name="nome">
 <input type="submit" value="enviar">
 </body>
 </form>
</html>
*
Formulario
<%@ page language="java" %>
<jsp:useBean id="TestaBean" scope = "page" class="Testa.Testa"/>
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>JSP Page</title>
 </head>
 <body>
 <h1>JSP Page</h1>
<jsp:setProperty name="TestaBean" property="*"/>
<br>nome capturado da classe: <jsp:getProperty name="TestaBean" property="nome" />
 </body>
</html>
package Testa;
public class Testa {
 private String nome;
 public Testa() {
 }
 public void setNome(String n){
 nome = n;
 }
 public String getNome(){
 return nome;
 } 
}
*
Tecnologia JSP / JavaBeans
*
Optando por Servlets ou JSP (1)
Use servlets quando:
Precise implementar serviços
Usualmente servlets são componentes não visuais
Útil para executar serviços do tipo: segurança, log, controle de aplicação
Precisar implementar controladores 
Controladores MVC na camada WEB
Precise gerar saídas binárias
Usando o OutputStream do ServletResponse
*
Optando por Servlets ou JSP (2)
Use JSP quando:
For realizar apresentação de dados
Conteúdo parcialmente fixo, com personalização gerada dinamicamente
Precise gerar conteúdo XML
Precise gerar conteúdo textual não estruturado
Precise gerar saídas a partir de múltiplas fontes
Usando a estrutura de frames e tags de inclusão
*
Exercícios
Faculdade Ruy Barbosa
JSP – Bean

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais