JSTL (JSP Standard Tag Library) Tutorial: Core & Exemplos de tags personalizadas

Índice:

Anonim

JSTL é uma biblioteca de tags padrão do JSP. Aqui, veremos como o uso de diferentes tags JSTL tornará a codificação JSP mais fácil.

Neste tutorial, você aprenderá-

  • O que é JSTL
  • JSTL Core
  • Tags personalizadas JSP

O que é JSTL?

JSTL significa biblioteca de tags padrão de páginas de servidor Java e é uma coleção de bibliotecas de tags JSP personalizadas que fornecem funcionalidade de desenvolvimento web comum.

Vantagens do JSTL

  1. Tag padrão : fornece uma camada rica de funcionalidade portátil de páginas JSP. É fácil para um desenvolvedor entender o código.
  2. Código limpo e organizado : Como os scriplets confundem o desenvolvedor, o uso de JSTL torna o código limpo e organizado.
  3. Suporte automático para JavabeansInterospection : tem uma vantagem de JSTL sobre scriptlets JSP. A linguagem JSTL Expression trata o código JavaBean com muita facilidade. Não precisamos fazer downcast dos objetos, que foram recuperados como atributos com escopo definido. Usar o código de scriptlets JSP será complicado e o JSTL simplificou esse propósito.
  4. Mais fácil de ler para humanos : JSTL é baseado em XML, que é muito semelhante ao HTML. Portanto, é fácil para os desenvolvedores entenderem.
  5. Mais fácil para os computadores entenderem : ferramentas como Dreamweaver e página inicial estão gerando cada vez mais código HTML. As ferramentas HTML fazem um ótimo trabalho de formatação de código HTML. O código HTML é misturado com o código do scriplet. Como JSTL é expresso como tags compatíveis com XML, é fácil para a geração de HTML analisar o código JSTL dentro do documento.

JSTL Core

As tags principais são tags usadas com mais frequência em JSP. Eles fornecem suporte para

  • Iteração
  • Lógica condicional
  • Pegar exceção
  • url para a frente
  • Redirecionar, etc.

Para usar as tags principais, precisamos primeiro definir a biblioteca de tags e abaixo está a sintaxe para incluir uma biblioteca de tags.

Sintaxe:

<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core%>

Aqui,

  • prefixo pode ser usado para definir todas as tags principais e
  • uri é a biblioteca de taglib da qual é importado

Vamos ver algumas das tags principais em detalhes,

1. Fora:

  • O resultado da expressão é exibido na tag de saída
  • Ele pode escapar diretamente das tags XML. Portanto, eles não são avaliados como tags reais

Sintaxe:

  • Aqui, o valor representa informações para a saída e é obrigatório
  • O padrão é falha na saída de informações e não é obrigatório
  • escapeXML - é verdadeiro se escapar caracteres XML.

Exemplo:

Coretag_jsp1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Core Tag JSP1 

Explicação do código:

Linha de código 3: Este prefixo taglib é necessário para todas as tags e o prefixo adicionado é 'c'. Portanto, ele pode ser usado como um prefixo para todas as corretags.

Linha de código 12: Aqui estamos usando coretag out com o prefixo "c" e isso imprimirá o valor na tag de expressão. Portanto, a saída será o nome

Ao executar o código acima, você obtém a seguinte saída:

Resultado:

  • Estamos obtendo o valor como um nome da tag principal "out", que será impressa no fluxo de saída.

2. Pegar

  • Ele captura qualquer exceção lançável que ocorre no corpo e mostra como saída.
  • É usado para tratar os erros e detectá-los.

Sintaxe:

Aqui, var representa o nome da variável, que conterá uma exceção que pode ser lançada.

Exemplo:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Core Tag JSP2 <% int num = 10/0; %>A exceção é: $ {guruException}

Explicação do código:

Linha de código 3: Este prefixo taglib é necessário para todas as tags e o prefixo adicionado é 'c', portanto, pode ser usado como um prefixo para todas as corretags

Linha de código 11-13: Coretag catch é usado para capturar a exceção e imprimir a exceção. Aqui, a exceção é gerada quando 10/0 e essa exceção tem o nome "guruException".

Linha de código 14: Estamos imprimindo a "guruException".

Ao executar o código, você obterá a seguinte saída:

Resultado:

  • Estamos obtendo a exceção aritmética como / por zero e é impressa na saída usando a variável "guruException"

3. Importar

  • Podemos importar o conteúdo de outro arquivo para uma página JSP como fizemos na ação de inclusão JSP.
  • Aqui também podemos incluir o URL e o conteúdo será exibido nessa página.

Sintaxe:

Aqui, var é um nome de variável que é um identificador, que conterá o nome do arquivo / uri.

uri é o nome do arquivo ou uriname relativo.

coretag_jsp31.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Core Tag JSP 31 

Coretag_jsp32.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Insira o título aqui  O arquivo é exibido após a importação 

Explicação do código:

Coretag_jsp31.jsp

Linha de código 3: Este prefixo taglib é necessário para todas as tags e o prefixo adicionado é 'c', portanto, pode ser usado como um prefixo para todas as corretags

Linha de código 11-12: Aqui estamos importando o arquivo coretag_jsp32.jsp para este arquivo usando a tag de importação

Linha de código 13: Aqui estamos imprimindo o arquivo coretag_jsp32.jsp usando a tag out.

Ao executar o código acima, você obtém a seguinte saída.

Resultado:

  • Coretag_jsp32 é impresso na saída porque este arquivo foi importado em coretag_jsp31.jsp.

4. forEach

  • É usado para iterar o número de elementos em uma série de instruções.
  • É o mesmo que um forloop Java.

Sintaxe:

  • Aqui, var representa o nome da variável que conterá o nome do contador
  • Begin representa o valor inicial do contador
  • Fim representará seu valor final

Exemplo:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Core Tag JSP4 

Explicação do código:

Linha de código 3: Este prefixo taglib é necessário para todas as tags e o prefixo adicionado é 'c', portanto, pode ser usado como um prefixo para todas as corretags

Linha de código 11-13: Aqui usamos o loop "forEach" em que o nome da variável é "gurucount", que começou a contar como 5 e terminou como 10. Estamos imprimindo a variável gurucount que tem números começando de 5 a 10.

Ao executar o código, você obtém a seguinte saída

Resultado:

  • O resultado que estamos obtendo está começando de 5 a 10.

5. Se

  • É usado para condições de teste.
  • Se a tag for usada para testar uma condição se ela é verdadeira ou não com base nisso, o bloco de código será executado.

Sintaxe:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Core Tag JSP5 

Explicação do código:

Linha de código 3: Este prefixo taglib é necessário para todas as tags e o prefixo adicionado é 'c', portanto, pode ser usado como um prefixo para todas as corretags

Linha de código 11: aqui estamos definindo a variável nomeada como contagem para 100

Linha de código 12-14: Aqui estamos usando "se condição", em que verificamos se a contagem é igual a 100. Se for igual a 100, obtemos a saída como "A contagem é 100".

Ao executar o código acima, você obtém a seguinte saída

Resultado:

  • Como a condição "se" é verdadeira, obtemos a saída como "A contagem é 100".

6. redirecionar:

  • É usado para redirecionar a página atual para outro URL, fornecendo o URL relativo dessa tag.
  • Suporta URLs relativos ao contexto

Sintaxe:

Aqui, url é a url relativa para a qual deve ser redirecionada e o nome do contexto do aplicativo da web local.

Exemplo:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Core Tag JSP6 

Explicação do código:

Linha de código 3: Este prefixo taglib é necessário para todas as tags e o prefixo adicionado é 'c', portanto, pode ser usado como um prefixo para todas as corretags

Linha de código 11: Aqui usamos "tag de redirecionamento", onde estamos especificando o urlname, e quando clicamos nessa página, ele redireciona para o site que foi fornecido para redirecionamento.

Ao executar o código acima, você obtém a seguinte saída;

Resultado:

  • Obtemos o URL de saída guru99.com que é redirecionado por coretag_jsp6.jsp

Tags personalizadas JSP

  • É um elemento de linguagem JSP definido pelo usuário.
  • Quando JSP é traduzido em um servlet, a tag customizada é convertida em uma classe que executa uma ação em um objeto e é chamada como um manipulador de tag.
  • Essas ações quando o servlet é executado são chamadas pelo contêiner da web.
  • Para criar a tag personalizada definida pelo usuário, precisamos criar o manipulador de tag que estenderá o SimpleTagSupport e terá que substituir o método doTag ().
  • Precisamos criar TLD onde precisamos mapear o arquivo de classe no TLD.

Vantagens das tags personalizadas em JSP:

  • Portátil - uma ação descrita em uma biblioteca de tags deve ser utilizável em qualquer contêiner JSP.
  • Simples - usuários não sofisticados devem ser capazes de compreender e usar esse mecanismo. Os fornecedores da funcionalidade JSP devem achar fácil disponibilizá-los como ações.
  • Expressivo - O mecanismo deve suportar uma ampla gama de ações, incluindo ações aninhadas, elementos de script dentro de corpos de ação, criação, uso e atualização de variáveis ​​de script.
  • Pode ser usado em diferentes linguagens de script - embora a especificação JSP atualmente defina apenas a semântica para scripts na linguagem de programação Java, queremos deixar em aberto a possibilidade de outras linguagens de script.
  • Construído sobre conceitos e máquinas existentes - Não queremos reinventar o que existe em outro lugar. Além disso, queremos evitar conflitos futuros sempre que pudermos prevê-los

Sintaxe:

Considere que estamos criando a tag testGuru e podemos usar a classe de usetaghandlertestTag, que sobrescreverá o método doTag ().

Class testTag extends SimpleTagSupport{ public void doTag()}

Além disso, teremos que mapear esta classe testTag no TLD (Tag Library Descriptor), pois o container JSP criará automaticamente um mapeamento entre o arquivo de classe e o uri que foi mencionado no arquivo TLD.

Interface de tag JSP

  • Esta classe terá que estender a classe SimpleTagSupport.
  • Esta classe terá que sobrescrever o método doTag () que faz parte da classe SimpleTagSupport (sobrescrever é um método que é herdado da classe pai).
  • Esta interface é uma subinterface da interface JSPTag.
  • Ele fornece métodos para executar no início e no final da tag.
  • Além disso, precisamos mapear essa classe no TLD, ou seja, no descritor de biblioteca de tags

Estamos considerando no exemplo abaixo

Método de interface de tag

  • doTag () é um método que precisamos sobrescrever e que terá o conteúdo da tag.
  • Ele pega o contexto JSP atual usando getJSPContext ()

Exemplo:

Customtag_jsp1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "ex" uri = "WEB-INF / custom.tld"%> Tag personalizada 

Custom.tld

 1.0  2.0  TLD de teste  guruTag  demotest.guruTag  vazio 

guruTag.java (TagHandler)

pacote demotest;import javax.servlet.jsp.tagext. *;import javax.servlet.jsp. *;import java.io. *;public class guruTag extends SimpleTagSupport {public void doTag () lança JspException, IOException{JspWriter out = getJspContext (). GetOut ();out.println ("Tag Guru");}}

Explicação do código:

guruTag.java (TagHandler)

Linha de código 6: a classe guruTag está estendendo a classe SimpleTagSupport que está presente no jar javax.servlet.JSP

Linha de código 7: aqui estamos substituindo o método doTag () que lança JspException e IOException.

Linha de código 9-10: Neste método, o código será incorporado à tag personalizada que será chamada. Estamos pegando um objeto de JspWriter, e isso imprimirá "Guru Tag".

Custom.tld

Linha de código 6: aqui, o nome da tag personalizada é "guruTag".

Linha de código 7: a classe da tag é taghandlerclass, ou seja, guruTag.java. Ele pega o caminho completo do arquivo manipulador, que inclui o caminho do diretório da localização do arquivo.

Customtag_jsp1.jsp

Linha de código 3 : Este prefixo taglib é necessário para todas as tags e o prefixo adicionado é 'ex', portanto, pode ser usado como um prefixo para todas as coretags e uri é custom.tld que mapeia o manipulador de tags.

Linha de código 11: Aqui estamos definindo a tag personalizada "guruTag", que chamará o método doTag () da classe manipuladora e o código dentro dela será executado.

Ao executar o código acima, você obtém a seguinte saída

Resultado:

  • Obtemos a saída como "GuruTag" de guruTag.java, ou seja, TagHandler, que substitui o método doTag () e imprime "Guru Tag" como uma saída.

Resumo:

  • Nesta seção, aprendemos sobre a biblioteca de tags padrão JSP, na qual criamos tags principais e tags personalizadas.
  • As tags principais incluem tags para, se, redirecionar, importar e capturar, que eram tags usadas para fins básicos em JSP.
  • Além disso, fizemos tags personalizadas nas quais podemos definir as tags e usá-las em JSP