Por que eu devo ler este artigo: Hoje daremos início aos nossos artigos sobre Java. Então resolvi abordar em tema que causa certa confusão para quem começa a desenvolver páginas web, que são as Diretivas JSPs.

O que são essas diretivas? Para que elas servem? De que forma se utiliza tais diretivas? Entre outras perguntas.

Para podermos compreender melhor sobre páginas em JSP é preciso conhecermos um pouco sobre a sua história.

JavaServer Pages ou simplesmente JSP é baseada na linguagem Java, que serve para dar dinamismo à páginas HTML. Criada para poder rodar no lado servidor, elas são arquivos de texto tendo como extensão .jsp.

Ela foi criada, tendo como referência as pricncipais linguagens da época, mais diretamente a linguagen ASP (Active Server Pages) da Microsoft, possui características que se assemelham, como a forma de escrever seus scripts, utilizando os sinais de menor que (<) e maior que (>). Mas para por aí. Por ser uma linguagem baseada em Java ela é totalmente orientada a objetos.

Não vou me alongar muito nos detalhes. Para mais informações sobre JSP aconselho o livro Desenvolvendo na Web com JavaServer Pages, da editora Manning.

Estando de posse dessas informações, quero trazer a sua atenção para uma dúvida que intriga aqueles que iniciam nesta linguagem. Da mesma forma que JSP utiliza uma sintaxe semelhante ao ASP, ela também é baseada em XML.

Bem se não ficou claro o que acabei de dizer, vou explica melhor. Se por um lado existe uma sintaxe semelhante ao ASP para se declarar as sintaxes da JSP, existe uma correspondente baseada em XML que pode ser usada. E qual é a melhor, então? Isso vai de programador para programador.

Agora, falando mais diretamente sobre diretivas JSPs, elas são códigos que demonstram ao container JSO (que pode ser o Tomcat, Jboss ou qualquer outro), informações especiais de processamento concernentes à página. Traduzindo, ela pode ser usada para incluir o conteúdo de uma outra página, especificar que está utilizando bibliotecas de tags personalizadas, para dizer qual a linguagem de geração de scripts, entre outras coisas.

Diretivas Page

O que torna esta diretiva um pouco complicada é que ela possui onze atributos diferentes. Vamos desbravar cada uma delas. Observe primeiro como é a sua sintaxe:

<%@ page atributo1=”valor1” atributo2=”valor2” atributo3=”valor3” ... %> 

ou

<jsp:directive.page atributo1=”valor1” atributo2=”valor2” atributo3=”valor3” ... /> 

Por possuir múltiplos atributos a linguagem JSO permite que se declare várias diretivas numa mesma página, porém a único atributo que pode ser repetido é o import, que veremos mais a diante.

  • Atributo Info

    Usado para inserir informações sumarizadas da página, não havendo restrições ao seu tamanho. Exemplo:

    <%@ page info=”Estudo sobre Diretivas JSP, Prof. Cristiano Neves, 2006” %> 
  • Atributo Language

    Usado, em geral, para especificar Java como a linguagem de criação de script para a página. Exemplo:

    <%@ page language=”java” %> 
  • Atributo ContentType

    Este atributo indica qual o tipo MIME (Multipurpose Internet Mail Extensions) da resposta está sendo gerada pela JSP. Os tipos mais comuns são: “text/plain”, “text/html”, “text/xml”. Logo abaixo segue o exemplo usado como padrão para as JSPs.

    <%@ page contentType=”text/html” %> 
  • Atributo Extends

    Serve para indicar a super classe que será usada pelo container JSO no momento de tradução da página em um Servlet Java. Exemplo:

    <%@ page extends=”com.taglib.jsp.primeirapagina” %> 
  • Atributo Import

    Com o atribuo import, diferente do extends, é capaz de estender um conjunto de classes Java que poderão ser usadas nas páginas JSPs. Esta forma é mais econômica de se digitar código, sendo mais prático. Exemplo:

    <%@ page import=”java.util.List” %> 
  • Atributo Session

    Session é do tipo boolean, indica se a página está participando do gerenciamento de sessão. Por exemplo, se quisermos dizer que uma página é parte de uma sessão, utiliza-se a seguinte sintaxe:

    <%@ page session=”true” %> 
  • Atributo Buffer

    Responsável por controlar a saída bufferizada para uma página JSP. Se for ajustado para “none” o conteúdo de uma JSP é passado instantaneamente à resposta HTTP. O tamanho do buffer é descrito em kilobytes. Exemplo:

    <%@ page buffer=”12kb” %< ou >%@ page buffer=”none” %> 
  • Atributo AutoFlush

    Semelhante ao Buffer, também é responsável por controlar a saída buferizada, mais exatamente o comportamento do container JSP quando já esteja cheio o Buffer de saída. Neste caso é esvaziado automaticamente o Buffer de saída e o conteúd0o enviado para o servidor HTTP que transmite para o Browser responsável pela solicitação. Sendo do tipo boolean, sua sintaxe é dada abaixo:

    <%@ page autoFlush=”true” %> 
  • Atributo isThreadSafe

    Quando uma página JSP é compilada em um Servlet, ela deve ser capaz de atender a múltiplas solicitações. Para isso devemos utilizar o atributo isThreadSafe, caso contrário é necessário defini-lo como “false”. Exemplo:

    <%@ page isThreadSafe=”false” %> 
  • Atributo errorPage

    ErrorPage indica uma página alternativa que será exibida caso aconteça um erro não previsto durante o processamento de uma página JSP no container. Exemplo:

    <%@ page errorPage=”/trabalho/paginas/erro.jsp” %> 
  • Atributo isErrorPage

    Responsável por define uma página JSP que servirá como a página de erro padrão para um grupo de páginas JSP. Sendo do tipo boolean, sua sintaxe é descrita abaixo:

    <%@ page isErrorPage=”true”%> 

Diretiva Include

Coloca o conteúdo de um arquivo em outro. Não há limites para inclusões, podendo ter várias em uma mesma página. A diretiva se substitui pelo conteúdo indicado. Sua sintaxe é:

<%@ include file=”URLdoArquivo” %> ou <jsp:directive.include file=”URLdo Arquivo” /> 

Diretiva Taglib

Se usarmos esta diretiva em uma página, um conjunto de tags personalizadas estará a sua disposição, que poderá ser usadas num sistema de página à página. Podendo ser declaradas, também, de duas formas:

<%@ taglib uri=”URLdaBibliotecadeTags” prefix=”PrefixodaTag” %> 

ou

<jsp:directive.taglib uri=”URLdaBibliotecadeTags” prefix=”PrefixodaTag” /> 

Considerações Finais

Espero que seja bastante útil este artigo e tenha tirado algumas dúvidas sobre as Diretivas JSP.