JSP - Unifei

Propaganda
Introdução
Diretivas
Scriptlets
Expressões
Declarações
JavaServer Page
Comentários
Pre-definições
Prof. Enzo Seraphim
O que é uma Página JSP?
▼
▼
▼
▼
▼
É uma página HTML com trechos de
programa Java embutidos
Simplificam a geração de conteúdo
dinâmico para Web Designers
A página JSP é automaticamente
transformada em servlet
Permite o desenvolvimento de
aplicações do lado do servidor
Baseado em Java:
– Reutilização de componentes
– Vantagens do Java (segurança,
portabilidade, ...)
JSP versus ASP (ou PHP)
JSPs são interpretados apenas uma
vez (traduzidos para byte-code) e
reinterpretados somente quando o
arquivo é modificado, o que
possibilita melhor desempenho na
média
▼ JSPs executam nos principais
servidores Web
▼ JSPs permitem melhor separação
entre código e dados através de
beans e bibliotecas de tags.
▼
JSP versus CGI
JSP mantém estado no servidor
entre sessões
▼ Cria uma nova thread para cada
requisição
▼ Não precisa ser carregado toda
vez, depois de iniciado
▼ Executa em uma JVM previamente
carregada como uma extensão de
um servidor Web
▼
JSP - JavaServer Pages
JSP é uma tecnologia que permite a
criação de páginas web que exibem
um conteúdo dinâmico.
▼ Uma página JSP usa tags XML e
scripts escritos em Java para
encapsular a lógica que gera o
conteúdo exibido pela página.
▼
– JSP sem entrada de dados
– JSP com entrada de dados
Introdução
Diretivas
Scriptlets
Expressões
Declarações
JavaServer Page
Comentários
Pre-definições
Prof. Enzo Seraphim
Tipos de Diretivas
Existem três tipos de diretivas JSP:
▼ page, para importação de classes,
alteração do tipo do conteúdo, etc.
▼ include, para inclusão de arquivos
durante a execução do JSP
▼ taglib, para definição de tags
próprias usadas em bibliotecas de
tags
▼
Diretiva page
▼
▼
Atributo import
– Usado para importar classes para o
servlet gerado pelo JSP
– Pode aparecer várias vezes no JSP
– Exemplo:
<%@page import = “java.util.*” %>
Atributo contentType
– Usado para alterar o formato MIME ou o
CHARSET do texto de saída
– Exemplo:
<%@page contentType=“text/html”%>
Diretiva page
▼
▼
Atributo isThreadSafe
– Controla o uso de múltiplas threads no
servlet gerado
– O padrão é usar mútithread (true)
– Exemplo:
<%@page isThreadSate=“false”%>
Atributo session
– Indica se a página em questão faz parte
de uma sessão sendo que o seu valor
padrão é true
– Exemplo
<%@page session=“false” %>
Diretiva page
▼
▼
Atributo buffer
– Indica o uso e tamanho do buffer usado
pela variável out.
– Exemplo:
<%@page buffer = “32kb”%>
Atributo autoflush
– Controa o comportamento do buffer
quando ele estiver cheio: true executa
um “flush” automática e false gera uma
exceção
– Exemplo:
<%@page autoflush=“true”%>
Diretiva page
▼
▼
Atributo extends
– Altera a superclasse do servlet gerado
– Exemplo:
<%@page extends=“MeuServ.class”%>
Atributo info
– Define a string de descrição do servlet
gerado que é retornada pelo método
getServletInfo()
– Exemplo:
<%@page info=“descrição”%>
Diretiva page
▼
▼
Atributo errorPage
– Indica o nome da página que deve ser
mostrada em caso de erro
– Exemplo:
<%@page errorPage=“URL relativa”%>
Atributo isErrorPage
– Indica se a página atual pode ser usada
como página de erro
– O valor padrão deste atributo é false
– Exemplo:
<%@page isErrorPage=“true”%>
Diretiva include
Usada para incluir outros arquivos em páginas JSP
▼ A diretiva deve aparecer no ponto em que o arquivo será incluído
▼ Inclusão em tempo de compilação:
<jsp:include page=“URL relativa” flush=“true”%>
▼ Inclusão em tempo de compilação:
<%@include file=“URL relativa”%>
▼
Diretiva plugin
Permite a inclusão de outras
classes Java em JSP, como applets e
beans
▼ Tem uma sintaxe semelhante a da
tag applet do HTML
▼ Exemplo:
▼ <jsp:plugin type=“applet”
code=“Dados.class” width=“200”
height=“100”> </jsp:plugin>
▼
Introdução
Diretivas
Scriptlets
Expressões
Declarações
JavaServer Page
Comentários
Pre-definições
Prof. Enzo Seraphim
Adicionando Scripts ao JSP
▼
▼
▼
▼
Os Scripts são trechos de código
embutidos no código HTML do JSP.
Não são Java Scripts. Os scripts em uma
página JSP são interpretados no
servidor.
As declarações são usadas para definir
trechos de código inseridos em uma
página JSP.
Podem ser inseridos em uma página
HTML
<%
%>
JSP sem entrada de dados
<%@page import="java.util.Random"%>
<%@page contentType="text/html" pageEncoding="UTF­8"%>
<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN"
<html>
<head>
<meta http­equiv="Content­Type" content="text/html; charset=UTF­8">
<title>JSP PAGE</title>
</head>
<body>
<%
Random rd = new Random();
for(int i=0;i<6; i++){
out.println(rd.nextInt(60)+" ");
}
%>
</body>
</html>
Introdução
Diretivas
Scriptlets
Expressões
Declarações
JavaServer Page
Comentários
Pre-definições
Prof. Enzo Seraphim
Expressões
Usadas para inserir valores
diretamente na saída
▼ A expressão é avaliada, convertida
para string e inserida na página
▼ Sintaxe:
<%= expressão java %>
▼ As expressões podem ser qualquer
comando Java que retorne valor
▼ Exemplo:
Data:<%= new java.util.Date() %>
▼
JSP sem entrada de dados
<%@page import="java.util.Date"%>
<%@page contentType="text/html" pageEncoding="UTF­8"%>
<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN"
<html>
<head>
<meta http­equiv="Content­Type" content="text/html; charset=UTF­8">
<title>JSP PAGE</title>
</head>
<body>
Data: <%= new Date()%><br />
Hostname: <%= request.getRemoteHost()%><br />
Session ID: <%= session.getId() %><br />
</body>
</html>
Introdução
Diretivas
Scriptlets
Expressões
Declarações
JavaServer Page
Comentários
Pre-definições
Prof. Enzo Seraphim
Declarações
▼
▼
Permitem a declaração de variáveis e
métodos em uma página
Úteis para declarar:
– Variáveis e métodos de instância
(pertencentes ao servlet)
– variáveis e métodos estáticos
(pertencentes à classe do servlet)
– Classes internas (estáticas e de
instância), blocos static, etc.
Declarações
▼
▼
▼
jspInit() e jspDestroy() permitem maior
controle sobre o ciclo de vida do servlet
Inicialização da página (chamado uma
vez, antes da primeira requisição, após
o instanciamento do servlet)
<%!public void jspInit() { ... } %>
Destruição da página (ocorre quando o
servlet deixa a memória)
<%! public void jspDestroy() { ... } %>
JSP sem entrada de dados
<%@page import="java.util.Calendar"%>
<%@page import="java.util.GregorianCalendar"%>
<%@page contentType="text/html" pageEncoding="UTF­8"%>
<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN"
<html>
<head>
<meta http­equiv="Content­Type" content="text/html; charset=UTF­8">
<title>JSP PAGE</title>
</head>
<body>
<%! public final static String[] meses =
{"jan", "fev", "mar", "abr", "mai", "jun"};
%>
<%! public static String getMes() {
Calendar cal = new GregorianCalendar();
return meses[cal.get(java.util.Calendar.MONTH)];
}%>
<%= getMes() %>
</body>
</html>
Introdução
Diretivas
Scriptlets
Expressões
Declarações
JavaServer Page
Comentários
Pre-definições
Prof. Enzo Seraphim
Comentários
▼
Comentários HTML
<!-- --> não servem para comentar JSP
▼
Comentários JSP
– Podem ser usados para comentar
blocos JSP
<%-- Texto --%>
Introdução
Diretivas
Scriptlets
Expressões
Declarações
JavaServer Page
Comentários
Pre-definições
Prof. Enzo Seraphim
Objetos JSP pre-definidos
▼
▼
▼
▼
▼
▼
▼
▼
▼
request – javax.servlet.ServletRequest
response – javax.servlet.ServletResponse
out – javax.servlet.jsp.JspWriter
session – javax.servlet.http.HttpSession
pageContext – javax.servlet.jsp.PageContext
application – javax.servlet.servletContext
config – javax.servlet.ServletConfig
page – java.lang.Object
exception – java.lang.Throwable
Request
Comandos get - recuperar de
dados
▼ Métodos Principais
▼
–
–
–
–
–
–
–
getCookies
getAuthType
getQueryString
getHeader
getHeaderNames
getServerName
getServerPort
Request
▼
Métodos Principais
–
–
–
–
–
–
–
–
getProtocol
getRequestURI
getMethod
getPathInfo
getPathTranslated
getServletPath
getContentLength
getContenType
Objetos JSP pre-definidos
▼
▼
▼
▼
▼
▼
▼
▼
▼
request – javax.servlet.ServletRequest
response – javax.servlet.ServletResponse
out – javax.servlet.jsp.JspWriter
session – javax.servlet.http.HttpSession
pageContext – javax.servlet.jsp.PageContext
application – javax.servlet.servletContext
config – javax.servlet.ServletConfig
page – java.lang.Object
exception – java.lang.Throwable
Response
Comandos set - enviar dados
▼ Métodos Principais
▼
–
–
–
–
–
–
–
addCookie
setContenLength
setContentType
setStatus
setHeader
sendError
sendRedirect
Cookies
Arquivos texto gravados no cliente
▼ Surgiram no Netscape para
guardar informações persistentes
▼ Somente acessados apenas pelo
domínio que os criou
▼ Podem ser desabilitados pelo
usuário (privacidade)
▼ Usos: Identificação de usuários,
senhas, Customização de sites,
Propaganda dirigida, sessões
▼
Cookies
▼
Para criar cookies:
– Criar objeto da classe Cookie com o
nome da informação e seu conteúdo
– Definir tempo de persistência
– Enviar o objeto para o cliente
▼
Para ler cookies:
– O objeto request contem todos os
cookies associados ao seu domínio.
Criação de Cookies
Nome e valor não podem conter: [ ]
()=,“/?@:;
▼ O método setMaxAge define
quantos segundos durará o cookie
após o termino da seção
▼ Exemplo:
▼
Cookie c=new Cookie("nome","val");
c.setMaxAge(3600);
response.addCookie(c);
Leitura de Cookies
▼
Exemplo:
Cookie c[]= request.getCookies();
for (int i = 0; i < c.length; i++){
String nome = c[i].getName();
String valor = c[i].getValue();
}
Objetos JSP pre-definidos
▼
▼
▼
▼
▼
▼
▼
▼
▼
request – javax.servlet.ServletRequest
response – javax.servlet.ServletResponse
out – javax.servlet.jsp.JspWriter
session – javax.servlet.http.HttpSession
pageContext – javax.servlet.jsp.PageContext
application – javax.servlet.servletContext
config – javax.servlet.ServletConfig
page – java.lang.Object
exception – java.lang.Throwable
out
▼
Utilizado para escrever
informações no browser.
– void print(Object dados)
• Escreve dados no browser
– void println(Object dados)
• Escreve dados no browser inserindo uma
quebra de linha no final.
Cliente
-login:String
-cpf:String
-nome:String
*
Locacao
-id:int
-locacao:Date
-devolucao:Date
Filme
-codigo:int
-nome:String
JavaServer Page
Exemplo
Locadora
Prof. Enzo Seraphim
Classes Modelo e
Classes ControleDAO
br.edu.unifei.ecoe07.modelo
FonteDados
ClienteDao
LocacaoDao
FilmeDao
create
retrieve
update
delete
create
retrieve
update
delete
create
retrieve
update
delete
br.edu.unifei.ecoe07.controle.dao
Cliente
-login:String
-cpf:String
-nome:String
*
Locacao
-id:int
-locacao:Calendar
-devolucao:Calendar
1
Filme
-codigo:int
-nome:String
<%@page contentType="text/html" pageEncoding="UTF­8"%>
<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http­equiv="Content­Type" content="text/html; charset=UTF­8">
<title>HTML PAGE</title>
</head>
<body>
<a href="mensal/formCreateMensal.html">
Inserir Cliente Mensal</a><br />
<a href="diario/formCreateDiario.html">
Inserir Cliente Diário</a><br />
<a href="filme/formCreateFilme.html">
Inserir Filme</a><br />
<a href="locacao/formCreateLocacao.jsp">
Inserir Locação</a><br />
</body>
</html>
<%@page contentType="text/html" pageEncoding="UTF­8"%>
<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http­equiv="Content­Type" content="text/html; charset=UTF­8">
<title>Criação de Cliente Diário</title>
</head>
<body>
<form action="createDiario.jsp" method="get">
<table border="1" width="400" height="200" cellpadding="4" cellspacing="0">
<tr align="left">
<th>Login:</th><th><input type="text" size=30 name="login"></th>
</tr>
<tr align="left">
<th>Nome:</th><th><input type="text" size=30 name="nome"></th>
</tr>
<tr align="left">
<th>CPF:</th><th><input type="text" size=30 name="cpf"></th>
</tr>
<tr align="center">
<th colspan="2"><input type="submit" value="Enviar"></th>
</tr>
</table>
</form>
</body>
</html>
formCreateDiario.html
<%@page contentType="text/html" pageEncoding="UTF­8"%>
<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http­equiv="Content­Type" content="text/html; charset=UTF­8">
<title>Criação de Cliente Diário</title>
</head>
<body>
<form action="createDiario.jsp" method="get">
<table border="1" width="400" height="200" cellpadding="4" cellspacing="0">
<tr align="left">
<th>Login:</th><th><input type="text" size=30 name="login"></th>
</tr>
<tr align="left">
<th>Nome:</th><th><input type="text" size=30 name="nome"></th>
</tr>
<tr align="left">
<th>CPF:</th><th><input type="text" size=30 name="cpf"></th>
</tr>
<tr align="center">
<th colspan="2"><input type="submit" value="Enviar"></th>
</tr>
</table>
</form>
</body>
</html>
formCreateDiario.html
<%@page contentType="text/html" pageEncoding="UTF­8"%>
<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http­equiv="Content­Type" content="text/html; charset=UTF­8">
<title>Criação de Cliente Diário</title>
</head>
<body>
<form action="createDiario.jsp" method="get">
<table border="1" width="400" height="200" cellpadding="4" cellspacing="0">
<tr align="left">
<th>Login:</th><th><input type="text" size=30 name="login"></th>
</tr>
<tr align="left">
<th>Nome:</th><th><input type="text" size=30 name="nome"></th>
</tr>
<tr align="left">
<th>CPF:</th><th><input type="text" size=30 name="cpf"></th>
</tr>
<tr align="center">
<th colspan="2"><input type="submit" value="Enviar"></th>
</tr>
</table>
</form>
</body>
</html>
formCreateDiario.html
<%@page contentType="text/html" pageEncoding="UTF­8"%>
<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN"
<html>
<head>
<meta http­equiv="Content­Type" content="text/html; charset=UTF­8">
<title>Criado cliente Diário </title>
</head>
<body>
<%
try{
Diario obj = new Diario();
obj.setLogin(request.getParameter("login"));
obj.setNome(request.getParameter("nome"));
obj.setCpf(request.getParameter("cpf"));
EntityManager em = FonteDados.createEntityManager();
DiarioDao dao = new DiarioDao(em);
dao.create(obj);
em.close();
out.print("<h1>Cliente Diário Cadastrado</h1><br />");
out.print("<a href=\"../index.html\">clique para inicio</a><br />");
}catch (RollbackException exp){
out.print("<h1>Login já cadastrado</h1><br />");
out.print("<a href=\"formCreateDiario.html\">corrigir</a><br />");
out.print("<a href=\"../index.html\">clique para inicio</a><br />");
} %>
</body>
</html>
createDiario.jsp
<%@page contentType="text/html" pageEncoding="UTF­8"%>
<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http­equiv="Content­Type" content="text/html; charset=UTF­8">
<title>Criação de Cliente Diário</title>
</head>
<body>
<form action="createDiario.jsp" method="get">
<table border="1" width="400" height="200" cellpadding="4" cellspacing="0">
. . . </table>
</form>
</body>
</html>
formCreateLocacao.html
<%
out.println("<select name=\"loginCliente\">");
EntityManager em = FonteDados.createEntityManager();
ClienteDao daoCliente = new ClienteDao(em);
List<Cliente> listCliente=daoCliente.findAllCliente();
for(Cliente c : listCliente){
out.println("<option value=\"" + c.getLogin() +
"\">" + c.getNome() + "</option>");
}
out.println("</select><BR>");
%>
<%
out.println("<select name=\"codigoFilme\">");
FilmeDao daoFilme = new FilmeDao(em);
List<Filme> listFilme = daoFilme.findAllFilme();
for(Filme f : listFilme){
out.println("<option value=\"" + f.getCodigo() + "\">" + f.getNome() + "</option>");
}
out.println("</select><BR>");
%>
formCreateLocacao.html
<%
try{
EntityManager em = FonteDados.createEntityManager();
ClienteDao daoCliente = new ClienteDao(em);
Cliente cliente = daoCliente.findCliente(
request.getParameter("loginCliente"));
FilmeDao daoFilme = new FilmeDao(em);
Filme filme = daoFilme.findFilme(
Integer.parseInt(request.getParameter("codigoFilme")));
SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yyyy");
Date date = sdf.parse(request.getParameter("locacao"));
Calendar cal = Calendar.getInstance();
LocacaoDao daoLocacao = new LocacaoDao(em);
Locacao locacao = new Locacao();
locacao.setCliente(cliente);
locacao.setFilme(filme);
locacao.setLocacao(cal);
cliente.addLocacao(locacao);
daoLocacao.create(locacao);
createLocacao.jsp
em.close();
out.print("<h1>Cliente Mensal Cadastrado</h1><br />");
out.print("<a href=\"../index.html\">clique para inicio</a><br />");
}catch (NumberFormatException exp){
out.print("<h1>Data Inválida</h1><br />");
out.print("<a href=\"formCreateLocacao.html\">clique corrigir Locação</a><br />");
out.print("<a href=\"../index.html\">clique para inicio</a><br />");
}catch (RollbackException exp){
out.print("<h1>Cliente ou Filme não informado</h1><br />");
out.print("<a href=\"formCreateLocacao.html\">clique corrigir Locação</a><br />");
out.print("<a href=\"../index.html\">clique para inicio</a><br />");
}
%>
createLocacao.jsp
Os logotipos, marcas
comerciais e nomes de
produtos citados nesta
publicação tem apenas
o propósitos de
identificação e podem
ser marcas registradas
de suas respectivas
companhias.
JavaServer Page
Prof. Enzo Seraphim
Download