Escolar Documentos
Profissional Documentos
Cultura Documentos
JSP
JavaServer Pages
●
Introdução
●
JSP
●
Primeiro Exemplo
●
Tags Especiais
●
Taglibs (JSTL)
Introdução
●
Até agora, vimos que podemos escrever
conteúdo dinâmico através de Servlets.
●
A tecnologia dos Servlets permite criar página
dinâmicas dentro do servidor e enviar como
resposta para o cliente.
●
Entretanto, criar HTML com Código JAVA é
um pouco massante e trabalhoso.
●
A legibilidade do nosso código seria um
problema, pois sempre aparece código Java
misturado com código HTML.
Introdução
●
Para não termos que criar todos os nossos
conteúdos dinâmicos dentro de classes,
precisamos usar uma tecnologia que envolva o
HTML de forma direta, e que também vá
possibilitar a utilização do Java.
●
É uma abordagem que separa a lógica de
apresentação da lógica de negócios.
●
Se Servlet é muito Java com pouco HTML... JSP
é muito HTML com pouco Java.
JSP
●
Uma página JSP nada mais é que um arquivo
baseado em HTML, com a extensão “.jsp”.
●
Nele é possível incorporar trechos de código
Java dentro de tags especiais, onde o código
Java é executado no servidor antes do
conteúdo ser enviado ao navegador do
cliente.
●
Scriptlet é o código escrito entre <% e %>
Primeiro Exemplo
pagina01.jsp
Código Java
dentro do HTML
Primeiro Exemplo
pagina01.jsp
Primeiro Exemplo
Importando objetos
●
Existem várias tags especiais no JSP que servem para diferentes
propósitos.
●
<% ... %>: Tag de scriptlet
●
Permite a inserção de código Java no corpo da tag.
●
Usada para realizar cálculos ou execução de lógica de negócios.
●
<%= ... %>: Tag de expressão
●
Avalia uma expressão Java e insere seu valor diretamente no HTML.
●
Geralmente usada para exibir valores de variáveis ou resultados de
cálculos.
●
<%! ... %>: Tag de declaração
●
Permite a definição de métodos ou variáveis que podem ser usados em
outras partes do JSP.
●
Geralmente usada para definir métodos de utilidade ou variáveis globais.
EXEMPLO
pagina02.jsp
EXEMPLO
pagina02.jsp
Tags Especiais
PARTE 02
●
<%-- ... --%>: Comentário em JSP.
●
<%@ ... %>: Tag de diretiva
●
Define informações de configuração para a página
JSP.
●
Pode ser usada para importar classes, especificar
a codificação, definir bibliotecas de tags
personalizadas, etc.
EXEMPLO
●
Nesse exemplo vamos criar um objeto com um
ArrayList de contatos simulando que os
contatos vem de um banco de dados.
●
Vamos usar dentro do JSP uma estrutura de
repetição “for” para listar todos os contatos.
EXEMPLO
Class ListaContatos.java
EXEMPLO
pagina03.jsp
EXEMPLO
pagina03.jsp
EXEMPLO
pagina04.jsp
●
Vamos usar uma estrutura de condicional para
excluir uma das linhas da nossa tabela.
●
A linha escolhida é a que tem a variável “nome”
com valor “Daniel”.
EXEMPLO
pagina04.jsp
EXEMPLO
pagina04.jsp
Taglibs
●
O código JAVA dentro do HTML tira um pouco a
característica de linguagem de Tags.
●
Para melhorar a legibilidade do código a Sun
criou mais tags que permitem fazer o que se faz
com código JAVA.
●
Ou seja, tags que fazem loops, condicionais,
instanciação de objetos, etc.
●
A Sun criou a biblioteca JSTL (JavaServer Pages
Standard Tag Library).
●
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
Tags Especiais
●
<c:forEach>: Looping
●
Permite a execução de loops em coleções (como
Listas) e outros tipos de dados.
●
<c:if>: Estrutura condicional
●
Permite a execução de instruções condicionais.
●
<c:choose>, <c:when>, <c:otherwise>:
Estruturas de escolha
●
Tags da biblioteca JSTL para implementar lógica
condicional complexa.
Tags Especiais
●
<jsp:useBean>: Possibilita instanciar objetos.
●
Podemos imprimir o nome do contato com
●
${contato.nome}
Tags Especiais
pagina05.jsp
Tags Especiais
pagina06.jsp
Tags Especiais
pagina06.jsp
<c:forEach>
●
Iterar sobre uma coleção (ArrayList, List, etc.):
●
Nesse caso, a tag <c:forEach> itera sobre cada
elemento da coleção ${collection} e atribui cada
elemento à variável ${item}.
●
O conteúdo dentro da tag será executado para
cada item.
<c:forEach>
●
Iterar sobre um Map:
●
Aqui, a tag <c:forEach> itera sobre cada
entrada no Map ${map} e atribui cada entrada
ao objeto ${entry}.
●
Você pode acessar a chave e o valor dentro do
loop.
<c:forEach>
●
Iterar com índice:
●
Usando o atributo varStatus, você pode acessar
informações sobre o loop, como o índice atual
(${loop.index}), contagem total de iterações ($
{loop.count}), se é o primeiro ou último item ($
{loop.first} e ${loop.last}), entre outros.
<c:forEach>
●
Loop por um número específico de vezes:
●
Neste caso, a tag <c:forEach> criará um loop
que itera cinco vezes (0 a 4).
<c:if>
●
Condição simples:
●
Substitua ${condicao} por uma expressão
booleana que você deseja avaliar. O conteúdo
dentro da tag será executado somente se a
condição for verdadeira.
<c:choose>
●
Estrutura de condicional com else.
●
Use <c:choose>, <c:when> e <c:otherwise> para criar uma
estrutura condicional mais complexa com alternativas.
●
O <c:when> é usado para testar uma condição adicional,
enquanto o <c:otherwise> é executado se nenhuma das
condições anteriores for verdadeira.
<c:set>
●
Você pode usar <c:set> para definir variáveis
com valores específicos.
●
Isso é útil quando você deseja armazenar um
valor que será usado várias vezes no mesmo
JSP:
Outras Tags do JSTL
●
Formatting Tags (<fmt:...>):
●
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
●
<fmt:formatDate>: Formata datas.
●
<fmt:formatNumber>: Formata números.
●
<fmt:message>: Exibe mensagens internacionalizadas.
●
Functions (<fn:...>):
●
<fn:length>: Retorna o comprimento de uma string ou tamanho de
uma coleção.
●
<fn:startsWith>, <fn:endsWith>: Verifica se uma string começa ou
termina com um valor específico.
●
URL Tags (<c:url> e <c:param>):
●
<c:url>: Constrói URLs.
●
<c:param>: Define parâmetros em URLs.
Sessão
●
Uma "sessão" refere-se a um mecanismo que permite
manter o estado do usuário entre várias solicitações
HTTP.
●
A sessão geralmente é identificada por um
identificador exclusivo que permite associar dados
específicos.
●
O tempo de vida de uma sessão pode ser configurado
e varia de acordo com a implementação específica.
Pode ser mantida até que o navegador seja fechado
(sessão de sessão única), expirar após um período
inativo, ou seguir outras políticas definidas pelo
desenvolvedor.
Como implementar uma sessão?
●
Importar a biblioteca de sessão no servlet
import jakarta.servlet.http.HttpSession;
●
Na função onde a sessão vai guardar dados
deve:
HttpSession session = request.getSession();
session.setAttribute("ID", objeto);
Como implementar uma sessão?
●
Importar a biblioteca de sessão no servlet
import jakarta.servlet.http.HttpSession;
●
Na função onde a sessão vai devolver os
dados deve:
HttpSession session = request.getSession();
Objeto obj = (Objeto) session.getAttribute("ID");
Como implementar uma sessão?
●
Para armazenar uma lista de um objeto deve
fazer os seguintes passo:
●
Buscar na sessão a lista
●
Verificar se o que chegou é nulo
●
Se for nulo deve criar uma lista nova
●
Adicionar na lista o objeto
Como implementar uma sessão?
Códigos de Exemplo
●
AULA_06 [JSP].zip
DÚVIDAS
REFERÊNCIAS BIBLIOGRÁFICAS
●
K.FIELDS, Duane - Desenvolvendo na
Web com Java Server Pages. São Paulo:
Ciência Moderna, 2000.
●
LUCKOW, D. H e MELO, A. Programação
Java Para a Web. São Paulo. Editora
Novatec, 2010.
REFERÊNCIAS BIBLIOGRÁFICAS
●
EVANDS, Tim. Minute Guideto HTML 3.2.
Second Edition. Prentice Hall. E Rocha, A.
●
ZORZO, D., SOUZA, R. e ROCHA, A.
Desenvolvimento de Aplicações Web em
Java. UAB-UFSCar. São Carlos. 2016.
Disponível em:
http://livresaber.sead.ufscar.br:8080/jspui/bit
stream/123456789/2667/1/SI_Zorzo_Aplicac
oesWebJava.pdf
REFERÊNCIAS BIBLIOGRÁFICAS
●
Tutoriais do W3schools. Disponível em: <
https://www.w3schools.com/ >; Último
Acesso: 02/09/2023.