Post on 07-Apr-2016
http://www.lsi.dsc.ufcg.edu.br/
Curso de JSP Básico
Camilo Porto Nunes
SUMÁRIOSUMÁ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
• 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ÇÃOINTRODUÇÃO
• O esquema de páginas da aplicação é o seguinte:
INTRODUÇÃOINTRODUÇÃ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ÇÃOINTRODUÇÃ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ÇÃOINTRODUÇÃO
• EXEMPLO JSP:...<%String helloMsg =
request.getParameter(“helloMsg”);%><b>Hello World! <%=helloMsg%> </b>
INTRODUÇÃOINTRODUÇÃO
ESTRUTURA DA PÁGINAESTRUTURA 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ÁGINAESTRUTURA 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ÁGINAESTRUTURA 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ÁGINAESTRUTURA 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ÁGINAESTRUTURA DA PÁGINA
ESTRUTURA DA PÁGINAESTRUTURA 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ÁGINAESTRUTURA DA PÁGINA
• Diretiva TAGLIB• Insere uma tag customizada (definida
pelo programador) para ser acessível na página.
ESTRUTURA DA PÁGINAESTRUTURA 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ÁGINAESTRUTURA 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ÁGINAESTRUTURA 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 ACTIONSSTANDARD ACTIONS
STANDARD ACTIONSSTANDARD 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
• É 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 ACTIONSSTANDARD ACTIONS
STANDARD ACTIONSSTANDARD ACTIONS
• <jsp:useBean>• Equivalente a new Object()• Syntax:• <jsp:useBean param1=“value1”...>
STANDARD ACTIONSSTANDARD 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 ACTIONSSTANDARD ACTIONS
• Type: tipo a ser tratado o objeto (especifica um CAST para o tipo definido). Pode gerar ClassCastException
STANDARD ACTIONSSTANDARD 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 ACTIONSSTANDARD ACTIONS
• GetProperty (Principais parâmetros)• Name: nome do bean (id do useBean,
não confundir com <useBean.. name=””/>).
• Property: nome da propriedade.
STANDARD ACTIONSSTANDARD 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 ACTIONSSTANDARD 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 atribuído na propriedade
acima?
STANDARD ACTIONSSTANDARD 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 ACTIONSSTANDARD 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 ACTIONSSTANDARD 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 ACTIONSSTANDARD ACTIONS
• Exemplos <jsp:include> e <jsp:forward><html>....<body>....<jsp:include page=”navigBar.html” /></body></html>
STANDARD ACTIONSSTANDARD 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 ACTIONSSTANDARD ACTIONS
• Exemplo <jsp:forward>
...
String login, senha
...
<%
if(!login.equals(“loginCorreto”) || !senha.equals(“senhaCorreta”)) {
%><jsp:forward page=”login.jsp”/>
<%
else .....
STANDARD ACTIONSSTANDARD ACTIONS
OBJETOS IMPLÍCITOSOBJETOS 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ÍCITOSOBJETOS IMPLÍCITOS
• REQUEST:• Encapsula todos os dados/metadados
contidos numa requisição http.• O que contém, basicamente, uma
requisição http?
OBJETOS IMPLÍCITOSOBJETOS 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ÍCITOSOBJETOS IMPLÍCITOS
• Exemplo de URL:• http://domain.com?
login=camilo&name=”Camilo Porto”PARÂMETRO VALORlogin camiloname Camilo Porto
OBJETOS IMPLÍCITOSOBJETOS IMPLÍCITOS
• REQUEST (Métodos básicos):• String getParameter(String paramName);• Object getAttribute(String attribName);• Void setAttribute(String attribName, Object
attrib);
OBJETOS IMPLÍCITOSOBJETOS 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ÍCITOSOBJETOS 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ÍCITOSOBJETOS 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ÍCITOSOBJETOS 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ÍCITOSOBJETOS IMPLÍCITOS
• APPLICATION (Métodos Básicos):• ServletContext getServletContext();• Object getAttribute(String attribName);• Void setAttribute(String attribName, Object
attrib);
OBJETOS IMPLÍCITOSOBJETOS 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.
OBJETOS IMPLÍCITOSOBJETOS IMPLÍCITOS
TRATAMENTO DE FORMSTRATAMENTO 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 FORMSTRATAMENTO 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 FORMSTRATAMENTO 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 FORMSTRATAMENTO DE FORMS
• trataForm.jsp...<%String nome = request.getParameter(“nome”);String sobrenome =
request.getParameter(“sobreNome”);%>Seu nome é: <%= nome %> <BR>Seu sobrenome é: <%=sobrenome %>.....
TRATAMENTO DE FORMSTRATAMENTO DE FORMS
ESTUDO DE CASOESTUDO 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.
ESTUDO DE CASOESTUDO DE CASO
• HOLDEN, Mac. Professional Java Server Programming J2EE Edition, 2ed, Wrox.
• DAMON, Hougland. Core JSP. 1 ed, Prentice Hall.
BIBLIOGRAFÍABIBLIOGRAFÍA
OBRIGADO!OBRIGADO!