Curso de JSP Básico

Propaganda
Curso de JSP Básico
Camilo Porto Nunes
http://www.lsi.dsc.ufcg.edu.br/
SUMÁRIO
•
•
•
•
•
•
•
Introdução
Estrutura de uma página JSP
Diretivas
Scripting elements
Standard Actions
Implicit Objects
Tratamento de parâmetros e
formulários
• Estudo de caso
INTRODUÇÃO
• Explicação baseado em uma aplicação
simples de cadastro de livros.
• Aplicação 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
);
INTRODUÇÃO
• O esquema de páginas da aplicação é o
seguinte:
INTRODUÇÃO
• JSP = Java Server Pages
• Tecnologia para criação de páginas web
dinâmicas.
• O que é uma página web dinâmica?
• - “São páginas que geram o seu conteúdo
HTML dinamicamente, de acordo com
alguma entrada recebida”.
• Exemplos?
INTRODUÇÃO
• Como isso é feito com JSP?
• Semelhante à um programa comum, ESCRITO
EM PURO JAVA (recebe uma entrada, e produz
saídas, possivelmente diferentes, baseado nas
entradas recebidas).
• Exemplo:
...
String helloMsg = in.readLine();
System.out.println(“Hello World! ”+helloMsg);
...
INTRODUÇÃO
• EXEMPLO JSP:
...
<%
String helloMsg =
request.getParameter(“helloMsg”);
%>
<b>Hello World! <%=helloMsg%> </b>
ESTRUTURA DA PÁGINA
ESTRUTURA DA PÁGINA
• Uma página JSP pode ser dividida,
basicamente, nas seguintes partes:
• Cabecalho: inclui diretivas que informam
alguns atributos da página bem como
algumas configurações (imports,
contentType, página de erro...)
• Declarações: inclui declarações de
métodos, atributos, constantes, etc.
• Corpo da página: inclui o código que irá
gerar o html dinâmico
ESTRUTURA DA PÁGINA
• O corpo da página pode combinar:
– HTML estático;
– Código JAVA puro, ou scriptlets: <%...%>
– Diretivas: <%@.....%>
– Expressões: <%=.......%>)
– Actions: <jsp:include../> dentre outras...
– Qualquer outro tipo de conteúdo estático:
(JavaScript, SVG, XML, etc...).
• Iremos nos aprofundar nos elementos
estruturais da página ao longo do curso.
ESTRUTURA DA PÁGINA
• DIRETIVAS:
• Page
• Define alguns atributos importantes para a
página
– Language: Linguagem de script a ser utilizada (default
= JAVA)
– Extends: pouco usado...
– Import: Lista de classes importadas a serem utilizadas
na página
– Session: (true/false) especifica se a página faz parte
da sessão do usuário (objeto session disponível ou
não)
ESTRUTURA DA PÁGINA
• Diretiva Page (cont...)
– Buffer: tamanho do buffer a ser utilizado
(default 8Kb)
– errorPage: especifica uma URL para uma
página de tratamento de erros.
– isErrorPage: informa se a página é de
tratamento de erro ou não.
– contentType: define o contentType da
página (XML, text, HTML, etc..)
• Dentre outros....
ESTRUTURA DA PÁGINA
• Diretiva INCLUDE:
• Inclui o conteúdo de um arquivo no
local da definição da diretiva
....
<%@ include file=“file.html” %>
...
• Isso ocorre na primeira vez que a
página for requisitada.
ESTRUTURA DA PÁGINA
• Diretiva TAGLIB
• Insere uma tag customizada (definida
pelo programador) para ser acessível na
página.
ESTRUTURA DA PÁGINA
• Scripting Elements
• DECLARAÇÕES:
• Bloco de código JAVA que define variáveis,
constantes e métodos referentes a página. É
definido entre os símbolos <%! e %>
• Exemplo:
<%!
int numTimes=0;
public String sayHello(String name) {
return “Hello “+name+”!”;
}
%>
ESTRUTURA DA PÁGINA
• Scriptlets
• Bloco de código JAVA que será executado
durante a requisição à página.
• Exemplo:
<% for (int i=0; i<10; i++)
out.println(“<b> i= “+i+”</b><br>”);
%>
ESTRUTURA DA PÁGINA
• Expressões
• Notação simples para scriptlets que serão
avaliados e retornarão seus valores ao cliente.
• Exemplo:
...
int numTimes;
...
<b> Esta página foi acessada
<%=numTimes++%> </b>
STANDARD ACTIONS
STANDARD ACTIONS
• São tags XML que afetam o
comportamento de tempo de execução
da página, e oferecem outra alternativa
de implementar tarefas freqüentemente
executadas (Bean Access).
• Mais importantes:
• Include, forward, useBean, getProperty,
setProperty
STANDARD ACTIONS
• É uma boa opção para separar código
Java da apresentação.
• Pode-se elaborar uma página JSP inteira
apenas com tags XML, sem precisar
escrever uma única linha de código em
Java...
STANDARD ACTIONS
• <jsp:useBean>
• Equivalente a new Object()
• Syntax:
• <jsp:useBean param1=“value1”...>
STANDARD ACTIONS
• useBean – Parâmetros
• Id: identificador da instância do objeto.
• Scope: visibilidade do objeto
• Class: nome completo da classe da instância
• beanName: define o nome para referenciar o
bean através do método 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 métodos 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 parâmetros)
• Name: nome do bean (id do useBean,
não confundir com <useBean..
name=””/>).
• Property: nome da propriedade.
STANDARD ACTIONS
• SetProperty (Principais Parâmetros)
• Name: nome do Bean (id do useBean)
• Property: propriedade a ser alterada.
• Value: novo valor da propriedade
• Param: associa o valor do parâmetro da
requisição 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 atribuído 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 atribuído às propriedades do
bean acima?
STANDARD ACTIONS
• TAGs <jsp:include> e <jsp:forward>
• <jsp:include> - Uso Básico:
– <jsp:include page=”includedPage.jsp” />
Inclui o conteúdo da página “includedPage.jsp” em uma
página JSP.
<%@ include%> VS <jsp:include/>
• <jsp:include/> adiciona o conteúdo da
página em tempo de execução.
• <%@ include%> em tempo de compilação
STANDARD ACTIONS
• TAGs <jsp:include> e <jsp:forward>
• <jsp:forward> - Uso Básico:
– <jsp:forward page=”forwardedPage.jsp” />
Redireciona a requisição atual para a página
“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 .....
OBJETOS IMPLÍCITOS
OBJETOS IMPLÍCITOS
• As páginas JSP oferecem, automaticamente,
instâncias de objetos especiais que estão
prontas para serem referenciadas.
• Os nomes dessas variáveis são padronizados:
• Request, response, out, session, application,
page, pageContext, config.
• Iremos abordar apenas os mais usados...
OBJETOS IMPLÍCITOS
• REQUEST:
• Encapsula todos os dados/metadados
contidos numa requisição http.
• O que contém, basicamente, uma
requisição http?
OBJETOS IMPLÍCITOS
• URL requisitada
• Cookies
• Content Type (texto, XML, html, imagem...)
• Request Type (GET / Post)
• Parâmetros enviados de campos de formulários
ou explícitamente na URL (após o símbolo '?')
OBJETOS IMPLÍCITOS
• Exemplo de URL:
• http://domain.com?login=camilo&name
=”Camilo Porto”
PARÂMETRO
VALOR
login
camilo
name
Camilo Porto
OBJETOS IMPLÍCITOS
• REQUEST (Métodos básicos):
• String getParameter(String
paramName);
• Object getAttribute(String attribName);
• Void setAttribute(String attribName, Object
attrib);
OBJETOS IMPLÍCITOS
• SESSION:
• Representa a sessão iniciada pelo usuário.
• Uma sessão é ativada no instante da primeira
requisição de um usuário à aplicação.
• É terminada explicitamente pela aplicação, ou
por timeout.
Pode-se colocar objetos na sessão para persistir
durante toda a navegação do usuário no site.
OBJETOS IMPLÍCITOS
• SESSION (Cont..)
• O objeto não estará acessível se a
página JSP não fizer parte da sessão
• (diretiva <%@ page session=false
%>)
• Por default, session=true
OBJETOS IMPLÍCITOS
• SESSION (Métodos Básicos):
• Object getAttribute(String attribName);
• Void setAttribute(String attribName, Object
attrib);
Esses objetos estarão disponíveis enquanto a
sessão estiver ativa.
OBJETOS IMPLÍCITOS
• APPLICATION
• Guarda configurações da sua aplicação
WEB, tais como:
• Context path, parâmetros de
inicialização.
• Também pode armazenar atributos, os
quais estarão disponíveis enquanto a
aplicação estiver no ar.
OBJETOS IMPLÍCITOS
• APPLICATION (Métodos Básicos):
• ServletContext getServletContext();
• Object getAttribute(String attribName);
• Void setAttribute(String attribName, Object
attrib);
OBJETOS IMPLÍCITOS
• ESCOPO:
• Page: Acessível em toda a página JSP
• Request: acessível durante toda uma requisição
• Session: acessível durante toda uma sessão
• Application: acessível enquanto a aplicação
estiver rodando.
TRATAMENTO DE FORMS
TRATAMENTO DE FORMS
• Tratamento de formulários são as atividades
mais comuns em páginas dinâmicas.
• O tratamento é feito através da manipulação de
parâmetros enviados na requisição (seja pelo
método POST ou GET)
• Parâmetros também ajudam nas decisões de
processamento da página (controle de login,
senha, sessão, fluxo de páginas etc..)
TRATAMENTO DE FORMS
• Os parâmetros de um formulário são enviados
na requisição HTTP, sendo assim, estarão
acessíveis através do objeto implícito
REQUEST.
• Parâmetros são acessados através dos
métodos:
• getParameter(String paramName);
• getParameterValues(String paramName);
TRATAMENTO DE FORMS
• EXEMPLO BÁSICO: (página que contém 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 código da aplicação
simples de cadastro de livros.
• Poderemos inserir/remover/pesquisar
livros que serão armazenados em uma
tabela simples no banco de dados oracle
10g.
• O fluxo entre as páginas é mostrado
adiante.
BIBLIOGRAFÍA
• HOLDEN, Mac. Professional Java
Server Programming J2EE Edition,
2ed, Wrox.
• DAMON, Hougland. Core JSP. 1 ed,
Prentice Hall.
OBRIGADO!
Download