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.

  • 📢 Diretiva definida: Uma mensagem para o contêiner JSP fornecendo instruções de tradução globais para toda a página.
  • 🧭 Três tipos: Diretivas page, include e taglib, todas escritas dentro de tags <%@ %>.
  • 📄 Diretiva de página: Define o idioma, a importação, o tipo de conteúdo, a sessão, o buffer, a página de erro e outros atributos da página.
  • 📎 Diretiva Incluir: Incorpora outro arquivo (HTML, JSP ou texto) à página no momento da tradução.
  • 🏷️ Diretiva Taglib: Declara uma biblioteca de tags com um URI e um prefixo para habilitar tags personalizadas.

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 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

Diretiva de página JSP

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:

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:

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

Perguntas Frequentes

A diretiva `include` mescla um arquivo no momento da tradução, portanto, as alterações precisam ser recompiladas. A ação `jsp:include` inclui a resposta de um arquivo no momento da requisição, sendo mais adequada para conteúdo dinâmico e que muda com frequência.

O atributo de importação informa ao contêiner qual Java Classes, interfaces ou pacotes a serem importados ao gerar o código do servlet, de forma semelhante às instruções de importação em um arquivo .servlet regular. Java classe, portanto seus métodos estão disponíveis na página.

As diretivas JSP são processadas no momento da tradução, quando a página JSP é convertida em um servlet. Elas afetam a forma como o servlet é gerado, em vez de produzir a saída durante cada requisição.

A IA pode sugerir a página, o include ou a diretiva taglib correta com os atributos adequados a partir de uma descrição em linguagem simples, explicar cada atributo e sinalizar erros comuns, ajudando no processo de criação de conteúdo.ping Iniciantes conseguem configurar páginas JSP de forma mais rápida e precisa.

Sim. A IA pode analisar arquivos JSP para detectar valores de atributos inválidos, configurações conflitantes como `buffer none` com `autoFlush false`, páginas de erro ausentes e diretivas duplicadas, além de ajudar no gerenciamento do tráfego.ping Os desenvolvedores detectam problemas de configuração antes da implantação.

Resuma esta postagem com: