Diretivas JSP: Tutorial de página, inclusão e taglib

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 nas tags <%@ %>.

Sintaxe da Diretiva:

<%@ directive attribute="" %>

Existem três tipos de diretivas:

  1. Diretiva de página
  2. Incluir diretiva
  3. Diretiva Taglib

Cada um deles é descrito detalhadamente a seguir com exemplos:

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.

Following está sua lista de atributos associados à diretiva de página:

  1. Língua
  2. Estende
  3. importação
  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 details 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 do seguintewing classe.

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; conjunto de caracteres=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 falso nesse caso. O valor padrão do atributo de sessão é verdadeiro e a sessão é criada. , então 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 simultaneamenteneous
  • 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 que a saída em buffer deve ser liberada automaticamente ou não e o valor padrão desse atributo é verdadeiro.

Se o valor for definido como falso, o buffer não será liberado automaticamente e se estiver cheio, obteremos uma exceção.

Quando o buffer é nenhum, então o falso é ilegítimo e não há buffer, portanto 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) Tampão:

  • 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 ele está importando a “classe de data” que é do pacote utilitário Java, e estamos tentando exibir a data atual no código.

Ao executar o código acima, você obterá o seguintewing saída

Diretiva de página JSP

saída:

  • A data é: data atual usando o método date da classe date

Diretiva de inclusão JSP

  • 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 o seguintewing 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.

Diretiva Taglib JSP

  • 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