Diretivas JSP
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 JAVA faz
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 atributo mais usado em atributos de diretiva de pรกgina. ร usado para informar ao contรชiner para importar outras classes java, interfaces, enums, etc. enquanto gera cรณdigo de servlet.
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 Steering 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 (linha 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:
Linha de cรณdigo 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
Linha de cรณdigo 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 JSP Include
- A โdiretiva includeโ JSP (codeline 8) รฉ usada para incluir um arquivo em outro arquivo
- Este arquivo incluรญdo pode ser HTML, JSP, arquivos de texto, etc.
- Tambรฉm รฉ รบtil na criaรงรฃo de modelos com as visualizaรงรตes do usuรกrio e na divisรฃo das 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:
Diretiva_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:
Linha de cรณdigo 3: Neste cรณdigo, usamos tags include onde incluรญmos o arquivo directiva_header_jsp3.jsp no arquivo principal (_jsp2.jsp) e obtemos a saรญda do arquivo principal e do arquivo incluรญdo.
Diretiva_header_jsp3.jsp:
Linha de cรณdigo 11-12: Pegamos uma contagem de variรกvel inicializada em 1 e depois a incrementamos. Isso fornecerรก 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:
Linha de cรณdigo 3: Aqui โtaglibโ รฉ definido com atributos uri e prefixo.
Linha de cรณdigo 9: โgurutagโ รฉ a tag personalizada definida e pode ser usada em qualquer lugar


