Você está na página 1de 57

Curso de JSP Bsico

Camilo Porto Nunes

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

SUMRIO
Introduo Estrutura de uma pgina JSP Diretivas Scripting elements Standard Actions Implicit Objects Tratamento de parmetros e formulrios Estudo de caso

INTRODUO
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>

ESTRUTURA DA PGINA

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
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

STANDARD ACTIONS
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
<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>

STANDARD ACTIONS
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
... String login, senha ... <% if(!login.equals(loginCorreto) || !senha.equals(senhaCorreta)) { %> <jsp:forward page=login.jsp/> <% else ..... Exemplo <jsp:forward>

OBJETOS IMPLCITOS

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 login name VALOR camilo 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.

TRATAMENTO DE FORMS

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 %> .....

ESTUDO DE CASO

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.

BIBLIOGRAFA
HOLDEN, Mac. Professional Java Server Programming J2EE Edition, 2ed, Wrox. DAMON, Hougland. Core JSP. 1 ed, Prentice Hall.

OBRIGADO!

Você também pode gostar