Você está na página 1de 57

http://www.lsi.dsc.ufcg.edu.

br/
Curso de JSP Bsico
Camilo Porto Nunes
SUMRIO
Introduo
Estrutura de uma pgina JSP
Diretivas
Scripting elements
Standard Actions
Implicit Objects
Tratamento de parmetros e
formulrios
Estudo de caso



Explicao baseado em uma aplicao
simples de cadastro de livros.
Aplicao permite inserir/pesquisar/remover
livros em um banco de dados.
Esquema do banco de dados:
Livro (
isbn NUMBER(12) PRIMARY KEY,
titulo VARCHAR2(70) NOT NULL,
autor VARCHAR2(70) NOT NULL,
categoria VARCHAR2(70) NOT NULL
);
INTRODUO
O esquema de pginas da aplicao o
seguinte:
INTRODUO
JSP = Java Server Pages
Tecnologia para criao de pginas web
dinmicas.
O que uma pgina web dinmica?
- So pginas que geram o seu contedo
HTML dinamicamente, de acordo com
alguma entrada recebida.
Exemplos?
INTRODUO
Como isso feito com JSP?
Semelhante um programa comum, ESCRITO
EM PURO JAVA (recebe uma entrada, e produz
sadas, possivelmente diferentes, baseado nas
entradas recebidas).
Exemplo:
...
String helloMsg = in.readLine();
System.out.println(Hello World! +helloMsg);
...
INTRODUO
EXEMPLO JSP:
...
<%
String helloMsg =
request.getParameter(helloMsg);
%>
<b>Hello World! <%=helloMsg%> </b>
INTRODUO
ESTRUTURA DA PGINA
Uma pgina JSP pode ser dividida,
basicamente, nas seguintes partes:
Cabecalho: inclui diretivas que informam
alguns atributos da pgina bem como
algumas configuraes (imports,
contentType, pgina de erro...)
Declaraes: inclui declaraes de
mtodos, atributos, constantes, etc.
Corpo da pgina: inclui o cdigo que ir
gerar o html dinmico
ESTRUTURA DA PGINA
O corpo da pgina pode combinar:
HTML esttico;
Cdigo JAVA puro, ou scriptlets: <%...%>
Diretivas: <%@.....%>
Expresses: <%=.......%>)
Actions: <jsp:include../> dentre outras...
Qualquer outro tipo de contedo esttico:
(JavaScript, SVG, XML, etc...).
Iremos nos aprofundar nos elementos
estruturais da pgina ao longo do curso.
ESTRUTURA DA PGINA
DIRETIVAS:
Page
Define alguns atributos importantes para a
pgina
Language: Linguagem de script a ser utilizada (default
= JAVA)
Extends: pouco usado...
Import: Lista de classes importadas a serem utilizadas
na pgina
Session: (true/false) especifica se a pgina faz parte
da sesso do usurio (objeto session disponvel ou
no)
ESTRUTURA DA PGINA
Diretiva Page (cont...)
Buffer: tamanho do buffer a ser utilizado
(default 8Kb)
errorPage: especifica uma URL para uma
pgina de tratamento de erros.
isErrorPage: informa se a pgina de
tratamento de erro ou no.
contentType: define o contentType da
pgina (XML, text, HTML, etc..)
Dentre outros....
ESTRUTURA DA PGINA
ESTRUTURA DA PGINA
Diretiva INCLUDE:
Inclui o contedo de um arquivo no
local da definio da diretiva
....
<%@ include file=file.html %>
...
Isso ocorre na primeira vez que a
pgina for requisitada.
ESTRUTURA DA PGINA
Diretiva TAGLIB
Insere uma tag customizada (definida
pelo programador) para ser acessvel
na pgina.
ESTRUTURA DA PGINA
Scripting Elements
DECLARAES:
Bloco de cdigo JAVA que define variveis,
constantes e mtodos referentes a pgina.
definido entre os smbolos <%! e %>
Exemplo:
<%!
int numTimes=0;
public String sayHello(String name) {
return Hello +name+!;
}
%>
ESTRUTURA DA PGINA
Scriptlets
Bloco de cdigo JAVA que ser executado
durante a requisio pgina.
Exemplo:
<% for (int i=0; i<10; i++)
out.println(<b> i= +i+</b><br>);
%>
ESTRUTURA DA PGINA
Expresses
Notao simples para scriptlets que sero
avaliados e retornaro seus valores ao cliente.
Exemplo:
...
int numTimes;
...
<b> Esta pgina foi acessada
<%=numTimes++%> </b>
STANDARD ACTIONS
STANDARD ACTIONS
So tags XML que afetam o
comportamento de tempo de execuo
da pgina, e oferecem outra alternativa
de implementar tarefas freqentemente
executadas (Bean Access).
Mais importantes:
Include, forward, useBean, getProperty,
setProperty
uma boa opo para separar cdigo
Java da apresentao.
Pode-se elaborar uma pgina JSP inteira
apenas com tags XML, sem precisar
escrever uma nica linha de cdigo em
Java...
STANDARD ACTIONS
STANDARD ACTIONS
<jsp:useBean>
Equivalente a new Object()
Syntax:
<jsp:useBean param1=value1...>


STANDARD ACTIONS
useBean Parmetros
Id: identificador da instncia do objeto.
Scope: visibilidade do objeto
Class: nome completo da classe da instncia
beanName: define o nome para referenciar o
bean atravs do mtodo instatiate() da classe
java.beans.Beans.
STANDARD ACTIONS
Type: tipo a ser tratado o objeto
(especifica um CAST para o tipo
definido). Pode gerar
ClassCastException
STANDARD ACTIONS
<jsp:getProperty>, <jsp:setProperty>
Semelhante a mtodos getXX() e
setXX() de um objeto Java.
Recuperam/Alteram valores das
propriedades de Beans.
Podem ser usada em conjunto com
<jsp:useBean> para iniciar as
propriedades do Bean
STANDARD ACTIONS
GetProperty (Principais parmetros)
Name: nome do bean (id do useBean,
no confundir com <useBean..
name=/>).
Property: nome da propriedade.
STANDARD ACTIONS
SetProperty (Principais Parmetros)
Name: nome do Bean (id do useBean)
Property: propriedade a ser alterada.
Value: novo valor da propriedade
Param: associa o valor do parmetro da
requisio especificado ao valor da
propriedade
STANDARD ACTIONS
Exemplos de useBean +
get/setProperty.
...
<jsp:useBean id=myBean
class=org.MyBean>
<jsp:setProperty name=myBean
property=nome value=Camilo
Porto>
</jsp:useBean>
Exemplos de useBean + get/setProperty.
...
<jsp:useBean id=myBean
class=org.MyBean>
<jsp:setProperty name=myBean
property=nome>
</jsp:useBean>
* Qual o valor atribudo na propriedade
acima?
STANDARD ACTIONS
Exemplos de useBean + get/setProperty.
...
<jsp:useBean id=myBean
class=org.MyBean>
<jsp:setProperty name=myBean
property=*>
</jsp:useBean>

* Qual valor atribudo s propriedades do
bean acima?
STANDARD ACTIONS
TAGs <jsp:include> e <jsp:forward>
<jsp:include> - Uso Bsico:
<jsp:include page=includedPage.jsp />
Inclui o contedo da pgina includedPage.jsp em uma
pgina JSP.
<%@ include%> VS <jsp:include/>
<jsp:include/> adiciona o contedo da
pgina em tempo de execuo.
<%@ include%> em tempo de compilao
STANDARD ACTIONS
TAGs <jsp:include> e <jsp:forward>
<jsp:forward> - Uso Bsico:
<jsp:forward page=forwardedPage.jsp />
Redireciona a requisio atual para a pgina
forwardedPage.jsp
STANDARD ACTIONS
Exemplos <jsp:include> e
<jsp:forward>
<html>....<body>
....
<jsp:include page=navigBar.html
/>
</body></html>
STANDARD ACTIONS
Pagina navigBar.html:
<p><b>
<a href=pagina1.html> pagina1 </a> |
<a href=pagina2.html> pagina2 </a> |
...
<a href=paginaN.html> paginaN </a>
</b></p>
STANDARD ACTIONS
Exemplo <jsp:forward>
...
String login, senha
...
<%
if(!login.equals(loginCorreto) || !senha.equals(senhaCorreta)) {
%>
<jsp:forward page=login.jsp/>
<%
else .....
STANDARD ACTIONS
OBJETOS IMPLCITOS
As pginas JSP oferecem, automaticamente,
instncias de objetos especiais que esto
prontas para serem referenciadas.
Os nomes dessas variveis so padronizados:
Request, response, out, session, application,
page, pageContext, config.
Iremos abordar apenas os mais usados...
OBJETOS IMPLCITOS
REQUEST:
Encapsula todos os dados/metadados
contidos numa requisio http.
O que contm, basicamente, uma
requisio http?
OBJETOS IMPLCITOS
URL requisitada
Cookies
Content Type (texto, XML, html, imagem...)
Request Type (GET / Post)
Parmetros enviados de campos de formulrios
ou explcitamente na URL (aps o smbolo '?')
OBJETOS IMPLCITOS
Exemplo de URL:
http://domain.com?login=camilo&name
=Camilo Porto
PARMETRO VALOR
login camilo
name Camilo Porto
OBJETOS IMPLCITOS
REQUEST (Mtodos bsicos):
String getParameter(String
paramName);
Object getAttribute(String attribName);
Void setAttribute(String attribName, Object
attrib);
OBJETOS IMPLCITOS
SESSION:
Representa a sesso iniciada pelo usurio.
Uma sesso ativada no instante da primeira
requisio de um usurio aplicao.
terminada explicitamente pela aplicao, ou
por timeout.
Pode-se colocar objetos na sesso para persistir
durante toda a navegao do usurio no site.
OBJETOS IMPLCITOS
SESSION (Cont..)
O objeto no estar acessvel se a
pgina JSP no fizer parte da sesso
(diretiva <%@ page session=false
%>)
Por default, session=true
OBJETOS IMPLCITOS
SESSION (Mtodos Bsicos):
Object getAttribute(String attribName);
Void setAttribute(String attribName, Object
attrib);

Esses objetos estaro disponveis enquanto a
sesso estiver ativa.
OBJETOS IMPLCITOS
APPLICATION
Guarda configuraes da sua aplicao
WEB, tais como:
Context path, parmetros de
inicializao.
Tambm pode armazenar atributos, os
quais estaro disponveis enquanto a
aplicao estiver no ar.
OBJETOS IMPLCITOS
APPLICATION (Mtodos Bsicos):
ServletContext getServletContext();
Object getAttribute(String attribName);
Void setAttribute(String attribName, Object
attrib);
OBJETOS IMPLCITOS
ESCOPO:
Page: Acessvel em toda a pgina JSP
Request: acessvel durante toda uma requisio
Session: acessvel durante toda uma sesso
Application: acessvel enquanto a aplicao
estiver rodando.
OBJETOS IMPLCITOS
TRATAMENTO DE FORMS
Tratamento de formulrios so as atividades
mais comuns em pginas dinmicas.
O tratamento feito atravs da manipulao de
parmetros enviados na requisio (seja pelo
mtodo POST ou GET)
Parmetros tambm ajudam nas decises de
processamento da pgina (controle de login,
senha, sesso, fluxo de pginas etc..)
TRATAMENTO DE FORMS
Os parmetros de um formulrio so enviados
na requisio HTTP, sendo assim, estaro
acessveis atravs do objeto implcito
REQUEST.
Parmetros so acessados atravs dos
mtodos:
getParameter(String paramName);
getParameterValues(String paramName);
TRATAMENTO DE FORMS
EXEMPLO BSICO: (pgina que contm o form)
...
<form action=trataForm.jsp method=post>
Nome: <input name=nome type=text>
Sobrenome: <input type=text
name=sobreNome>
<input type=submit value=Enviar>
</form>
TRATAMENTO DE FORMS
trataForm.jsp
...
<%
String nome = request.getParameter(nome);
String sobrenome =
request.getParameter(sobreNome);
%>
Seu nome : <%= nome %> <BR>
Seu sobrenome : <%=sobrenome %>
.....
TRATAMENTO DE FORMS
ESTUDO DE CASO
Vamos analisar o cdigo da aplicao
simples de cadastro de livros.
Poderemos inserir/remover/pesquisar
livros que sero armazenados em uma
tabela simples no banco de dados oracle
10g.
O fluxo entre as pginas mostrado
adiante.
ESTUDO DE CASO
HOLDEN, Mac. Professional Java
Server Programming J2EE Edition,
2ed, Wrox.
DAMON, Hougland. Core JSP. 1 ed,
Prentice Hall.
BIBLIOGRAFA
OBRIGADO!

Você também pode gostar