Diretivas JSP
⚡ Resumo Inteligente
As diretivas JSP são mensagens enviadas ao contêiner JSP que fornecem informações globais sobre uma página inteira e o instruem durante a tradução para o código do servlet. Existem três tipos de diretivas: page, include e taglib, cada uma escrita dentro de tags especiais.
O que são diretivas JSP?
- As diretivas JSP são as mensagens para o contêiner JSP. Eles fornecem informações globais sobre uma página JSP inteira.
- As diretivas JSP são usadas para fornecer instruções especiais a um contêiner para tradução de JSP em código servlet.
- Na fase do ciclo de vida JSP, o JSP deve ser convertido em um servlet que é a fase de tradução.
- Eles fornecem instruções ao contêiner sobre como lidar com certos aspectos do processamento JSP
- As diretivas podem ter muitos atributos separados por vírgula como pares de valores-chave.
- Em JSP, a diretiva é descrita em
<%@ %>Tag.
Sintaxe da Diretiva:
<%@ directive attribute="" %>
Tipos de diretivas em JSP
Existem três tipos de diretivas em JSP:
- Diretiva de página
- Incluir diretiva
- Diretiva Taglib
Cada um deles é descrito detalhadamente a seguir com exemplos:
1) Diretiva de página JSP
Sintaxe da diretiva Page:
<%@ page…%>
- Ele fornece atributos que são aplicados a toda a página JSP.
- Ele define atributos dependentes da página, como linguagem de script, página de erro e requisitos de buffer.
- É usado para fornecer instruções a um contêiner que pertence à página JSP atual.
A seguir está a lista de atributos associados à diretiva de página:
- Língua
- Estende
- Importar
- tipo de conteúdo
- info
- Sessão
- isThreadSafe
- autolimpeza
- amortecer
- IsErrorPage
- codificação de página
- página de erro
- isELIgonored
Mais detalhes sobre cada atributo
1) idioma: Define o linguagem de programação (idioma subjacente) sendo usado na página.
Sintaxe da linguagem:
<%@ page language="value" %>
Aqui o valor é a linguagem de programação (linguagem subjacente)
Exemplo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Explicação do código: No exemplo acima, o valor do idioma do atributo é Java que é o idioma subjacente neste caso. Conseqüentemente, o código nas tags de expressão seria compilado usando o compilador java.
2) Estende: Este atributo é usado para estender (herdar) a classe, como faz o Java.
Sintaxe de extensões:
<%@ page extends="value" %>
Aqui o valor representa a classe da qual deve ser herdado.
Exemplo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page extends="demotest.DemoClass" %>
Explicação do código: No código acima, JSP está estendendo DemoClass que está dentro do pacote demotest e estenderá todos os recursos da classe.
3) Importar: Este atributo é o mais utilizado em atributos de diretivas de página. Ele serve para instruir o contêiner a importar outras classes Java, interfaces, enums, etc., durante a geração do código do servlet. É similar às declarações de importação em classes e interfaces Java.
Sintaxe de importação:
<%@ page import="value" %>
Aqui o valor indica as classes que devem ser importadas.
Exemplo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" import="java.util.Date" pageEncoding="ISO-8859-1"%>
Explicação do código:
No código acima, estamos importando a classe Date do pacote java.util (todas as classes de utilitários) e ele pode usar todos os métodos da classe a seguir.
4) Tipo de conteúdo:
- Define o esquema de codificação de caracteres, ou seja, é usado para definir o tipo de conteúdo e o conjunto de caracteres da resposta
- O tipo padrão de contentType é
"text/html; charset=ISO-8859-1".
Sintaxe do contentType:
<%@ page contentType="value" %>
Exemplo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Explicação do código:
No código acima, o tipo de conteúdo é definido como text/html, ele define a codificação de caracteres para JSP e para a página de resposta gerada.
5) informações
- Ele define uma string que pode ser acessada pelo método getServletInfo().
- Este atributo é usado para definir a descrição do servlet.
Sintaxe da informação:
<%@ page info="value" %>
Aqui, o valor representa as informações do servlet.
Exemplo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" info="Guru Directive JSP" pageEncoding="ISO-8859-1"%>
Explicação do código:
No código acima, a string “Guru A diretiva "JSP" pode ser recuperada pela interface do servlet usando getServletInfo().
6) Sessão
- A página JSP cria sessão por padrão.
- Às vezes, não precisamos que uma sessão seja criada em JSP e, portanto, podemos definir esse atributo como false nesse caso. O valor padrão do atributo session é true e a sessão é criada. Quando ele é definido como false, podemos indicar ao compilador para não criar a sessão por padrão.
Sintaxe da sessão:
<%@ page session="true/false"%>
Aqui, neste caso, o atributo de sessão pode ser definido como verdadeiro ou falso
Exemplo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" session="false"%>
Explicação do código:
No exemplo acima, o atributo session está definido como “false”, portanto estamos indicando que não queremos criar nenhuma sessão neste JSP
7) isThreadSafe:
- Ele define o modelo de threading para o servlet gerado.
- Indica o nível de segurança do thread implementado na página.
- Seu valor padrão é verdadeiro, então simultâneo
- Podemos usar este atributo para implementar a interface SingleThreadModel no servlet gerado.
- Se definirmos como falso, ele implementará SingleThreadModel e poderá acessar qualquer objeto compartilhado e gerar inconsistência.
Sintaxe de isThreadSafe:
<% @ page isThreadSafe="true/false" %>
Aqui, verdadeiro ou falso representa se há sincronização, então defina como verdadeiro e defina-o como falso.
Exemplo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isThreadSafe="true"%>
Explicação do código:
No código acima, isThreadSafe está definido como “true”, portanto, a sincronização será feita e vários threads podem ser usados.
8) Autolavagem:
Este atributo especifica se a saída em buffer deve ser liberada automaticamente ou não e o valor padrão desse atributo é true. Se o valor for definido como false, o buffer não será liberado automaticamente e, se estiver cheio, obteremos uma exceção. Quando o buffer é none, então false é ilegítimo e não há buffering, então ele será liberado automaticamente.
Sintaxe do autoFlush:
<% @ page autoFlush="true/false" %>
Aqui verdadeiro/falso representa se o buffer deve ser feito ou não
Exemplo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" autoFlush="false"%>
Explicação do código:
No código acima, o autoflush está definido como falso e, portanto, o buffer não será feito e a saída será liberada manualmente.
9) Buffer:
- Usando este atributo, o objeto de resposta de saída pode ser armazenado em buffer.
- Podemos definir o tamanho do buffer a ser feito usando este atributo e o tamanho padrão é 8 KB.
- Ele orienta o servlet a gravar o buffer antes de gravar no objeto de resposta.
Sintaxe do buffer:
<%@ page buffer="value" %>
Aqui o valor representa o tamanho do buffer que deve ser definido. Se não houver buffer, podemos escrever como nenhum, e se não mencionarmos nenhum valor, o padrão é 8 KB
Exemplo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" buffer="16KB"%>
Explicação do código:
No código acima, o tamanho do buffer é mencionado como 16 KB, onde o buffer seria desse tamanho
10) isErrorPage:
- Indica que a página JSP que possui uma errorPage será verificada em outra página JSP
- Qualquer arquivo JSP declarado com o atributo “isErrorPage” é então capaz de receber exceções de outras páginas JSP que possuem páginas de erro.
- Exceções estão disponíveis apenas para essas páginas.
- O valor padrão é falso.
Sintaxe de isErrorPage:
<%@ page isErrorPage="true/false"%>
Exemplo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isErrorPage="true"%>
Explicação do código:
No código acima, isErrorPage é definido como verdadeiro. Conseqüentemente, ele verificará se qualquer outro JSPs possui o atributo errorPage (descrito no próximo atributo) definido e pode lidar com exceções.
11) Codificação de página:
O atributo “pageEncoding” define a codificação de caracteres para a página JSP. O padrão é especificado como “ISO-8859-1” se nenhum outro for especificado.
Sintaxe de pageEncoding:
<%@ page pageEncoding="vaue" %>
Aqui o valor especifica o valor do conjunto de caracteres para JSP
Exemplo:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isErrorPage="true"%>
Explicação do código:
No código acima, “pageEncoding” foi definido para o conjunto de caracteres padrão ISO-8859-1
12) página de erro:
Este atributo é usado para definir a página de erro da página JSP se o JSP lançar uma exceção e então redirecionar para a página de exceção.
Sintaxe da página de erro:
<%@ page errorPage="value" %>
Aqui o valor representa o valor da página JSP de erro
Exemplo:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" errorPage="errorHandler.jsp"%>
Explicação do código:
No código acima, para tratar exceções temos errroHandler.jsp
13) éELIgnorado:
- IsELIgnored é um atributo de sinalização onde temos que decidir se ignoramos as tags EL ou não.
- Seu tipo de dados é java enum e o valor padrão é falso, portanto, EL está habilitado por padrão.
Sintaxe de isELIgnored:
<%@ page isELIgnored="true/false" %>
Aqui, verdadeiro/falso representa o valor de EL, quer deva ser ignorado ou não.
Exemplo:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isELIgnored="true"%>
Explicação do código:
No código acima, isELIgnored é verdadeiro e, portanto, Linguagem de expressão (EL) é ignorado aqui. No exemplo abaixo, estamos usando quatro atributos (linhas de código 1-2).
Exemplo com quatro atributos
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isELIgnored="false"%> <%@page import="java.util.Date" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Directive Guru JSP1</title> </head> <body> <a>Date is:</a> <%= new java.util.Date() %> </body> </html>
Explicação do código:
Code Linha 1-2: Aqui definimos quatro atributos, ou seja
- Idioma: É definido como Java como linguagem de programação
- contentType: definido como text/html para informar ao compilador que o html deve ser formatado
- pageEncoding: conjunto de caracteres padrão é definido neste atributo
- isELIgnored: A tag de expressão é falsa, portanto não é ignorada
Code Linha 3: Aqui usamos o atributo import e estamos importando a “classe de data” que é de Java pacote util, e estamos tentando exibir a data atual no código.
Ao executar o código acima, você obterá a seguinte saída
Saída:
- A data é: data atual usando o método date da classe date
2) Diretiva Include do JSP
- A diretiva “include” do JSP (linha de código 8) é usada para incluir um arquivo em outro arquivo.
- O arquivo incluído pode ser HTML, JSP, arquivo de texto, etc.
- Também é útil para criar modelos com as visualizações do usuário e dividir as páginas em ações de cabeçalho, rodapé e barra lateral.
- Inclui arquivo durante a fase de tradução
Sintaxe da diretiva include:
<%@ include….%>
Exemplo:
Directive_jsp2.jsp (Arquivo principal)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ include file="directive_header_jsp3.jsp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Directive JSP2</title> </head> <body> <a>This is the main file</a> </body> </html>
Directiva_header_jsp3.jsp (que está incluído no arquivo principal)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </head> <body> <a>Header file : </a> <%int count =1; count++; out.println(count);%> : </body> </html>
Explicação do código:
Diretiva_jsp2.jsp:
Code Linha 3: Neste código, usamos tags de inclusão para incluir o arquivo directive_header_jsp3.jsp no arquivo principal (_jsp2.jsp) e obter a saída tanto do arquivo principal quanto do arquivo incluído.
Diretiva_header_jsp3.jsp:
Code Linha 11-12: Criamos uma variável de contagem inicializada com o valor 1 e, em seguida, a incrementamos. Isso produzirá a saída no arquivo principal conforme mostrado abaixo.
Ao executar o código acima você obtém a seguinte saída:
Saída:
- A saída é arquivo de cabeçalho: 2: este é o arquivo principal
- A saída é executada a partir do arquivo directiva_jsp2.jsp enquanto o arquivo incluído directiva_header_jsp3.jsp será compilado primeiro.
- Após a conclusão do arquivo incluído, o arquivo principal é executado e a saída será do arquivo principal “Este é o arquivo principal”. Portanto, você obterá a saída como “Arquivo de cabeçalho: 2” de _jsp3.jsp e “Este é o arquivo principal” de _jsp2.jsp.
3) Diretiva JSP Taglib
- A diretiva JSP taglib é usada para definir a biblioteca de tags com “taglib” como prefixo, que podemos usar em JSP.
- Mais detalhes serão abordados na seção Tags personalizadas JSP
- A diretiva JSP taglib é usada nas páginas JSP usando as bibliotecas de tags padrão JSP
- Ele usa um conjunto de tags customizadas, identifica a localização da biblioteca e fornece meios de identificar tags customizadas na página JSP.
Sintaxe da diretiva taglib:
<%@ taglib uri="uri" prefix="value"%>
Aqui, o atributo “uri” é um identificador exclusivo no descritor da biblioteca de tags e o atributo “prefixo” é um nome de tag.
Exemplo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="gurutag" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Directive JSP</title> <gurutag:hello/> </head> <body> </body> </html>
Explicação do código:
Code Linha 3: Aqui “taglib” é definido com atributos uri e prefixo.
Code Linha 9: “gurutag” é a tag personalizada definida e pode ser usada em qualquer lugar



