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:

  1. Diretiva de pรกgina
  2. Incluir diretiva
  3. 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:

  1. Lรญngua
  2. Estende
  3. Importar
  4. tipo de conteรบdo
  5. info
  6. Sessรฃo
  7. isThreadSafe
  8. autolimpeza
  9. amortecer
  10. IsErrorPage
  11. codificaรงรฃo de pรกgina
  12. pรกgina de erro
  13. 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

Diretiva de pรกgina JSP

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:

Diretiva de inclusรฃo JSP

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

Resuma esta postagem com: