Você está na página 1de 44

DESENVOLVIMENTO WEB

JSP
JavaServer Pages

Professor: Daniel dos Anjos Costa


E-mail: daniel.anjos@ifba.edu.br
ROTEIRO


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

Observe, que temos de indicar os


caminhos completos das classes,
como Date, precisou ser precedida
por java.util.
Primeiro Exemplo
Importando objetos
Tags Especiais
PARTE 01


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.

<jsp:useBean id="contato" class="objetos.Contato"/>


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.

Você também pode gostar