Visão geral dos elementos de sintaxe JSP
Primeiro, para tornar as coisas mais claras, aqui está uma breve visão geral dos elementos de sintaxe JSP :
- Diretivas : Elas transmitem informações sobre a página JSP como um todo.
- Elementos de script : são elementos de codificação Java, como declarações, expressões, scriptlets e comentários.
- Objetos e escopos : os objetos JSP podem ser criados explícita ou implicitamente e são acessíveis em um determinado escopo, como em qualquer lugar da página JSP ou da sessão.
- Ações : Elas criam objetos ou afetam o fluxo de saída na resposta JSP (ou ambas).
Como o conteúdo é incluído no JSP
Existem vários mecanismos para reutilizar o conteúdo em um arquivo JSP.
Os 4 mecanismos a seguir para incluir conteúdo no JSP podem ser categorizados como reutilização direta :
(para os 3 primeiros mecanismos citados em "Head First Servlets and JSP" )
1) A diretiva include :
<%@ include file="header.html" %>
Estático : adiciona o conteúdo do valor do atributo de arquivo à página atual no momento da tradução . A diretiva foi originalmente projetada para modelos de layout estático, como cabeçalhos HTML.
2) A <jsp:include>
ação padrão :
<jsp:include page="header.jsp" />
Dinâmico : adiciona o conteúdo do valor do atributo da página à página atual no momento da solicitação . Destina-se mais ao conteúdo dinâmico proveniente de JSPs.
3) A <c:import>
tag JSTL:
<c:import url=”http://www.example.com/foo/bar.html” />
Dinâmico : adiciona o conteúdo do valor do atributo URL à página atual, no momento da solicitação . Funciona muito
<jsp:include>
, mas é mais poderoso e flexível: ao contrário das outras duas inclusões, o <c:import>
URL pode ser de fora da Web Container !
4) Prelúdios e codas:
Estático : prelúdios e codas podem ser aplicados apenas no início e no final das páginas .
Você pode incluir implicitamente prelúdios (também chamados de cabeçalhos) e codas
(também chamados de rodapés) para um grupo de páginas JSP, adicionando
<include-prelude>
e <include-coda>
elementos, respectivamente, dentro de um <jsp-property-group>
elemento na aplicação Web web.xml descritor de implementação. Leia mais aqui:
• Configurando inclusões implícitas no início e no final das JSPs
• Definindo inclusões implícitas
O Tag File é um método indireto de reutilização de conteúdo, a maneira de encapsular conteúdo reutilizável . Um arquivo de tag é um arquivo de origem que contém um fragmento de código JSP que pode ser reutilizado como uma tag customizada .
O PROPÓSITO de inclusões e arquivos de tags é diferente.
O arquivo de tags (um conceito introduzido no JSP 2.0) é uma das opções para criar tags personalizadas . É uma maneira mais rápida e fácil de criar tags personalizadas .
Tags customizadas , também conhecidas como extensões de tag, são elementos JSP que permitem que lógica e saída customizadas fornecidas por outros componentes Java sejam inseridas nas páginas JSP. A lógica fornecida por meio de uma tag customizada é implementada por um objeto Java conhecido como manipulador de tags .
Alguns exemplos de tarefas que podem ser executadas por tags personalizadas incluem operação em objetos implícitos, formulários de processamento, acesso a bancos de dados e outros serviços corporativos, como email e diretórios, e implementação de controle de fluxo.
Em relação à sua edição
Talvez no seu exemplo (no seu Edit ), não haja diferença entre o uso de inclusão direta e um arquivo de tag. Mas as tags personalizadas têm um rico conjunto de recursos . Eles podem
Seja customizado por meio de atributos transmitidos da página de chamada.
Passe as variáveis de volta para a página de chamada.
Acesse todos os objetos disponíveis nas páginas JSP.
Comunicar uns com os outros. Você pode criar e inicializar um componente JavaBeans, criar uma variável pública EL que se refere a esse bean em uma tag e, em seguida, usar o bean em outra tag.
Estar aninhados um no outro e se comunicar por meio de variáveis privadas.
Leia também isso em "Pro JSP 2": Noções básicas sobre tags personalizadas JSP .
Leitura útil.
Conclusão
Use as ferramentas certas para cada tarefa.
Use Arquivos de tags como uma maneira rápida e fácil de criar tags personalizadas que podem ajudá-lo a encapsular conteúdo reutilizável .
Quanto ao conteúdo incluso no JSP (citação aqui ):
- Use a diretiva de inclusão se o arquivo mudar raramente . É o mecanismo mais rápido. Se o seu contêiner não detectar alterações automaticamente, você poderá forçar as alterações, excluindo o arquivo de classe da página principal.
- Use a ação de inclusão apenas para conteúdo que muda frequentemente e se a página a incluir não pode ser decidida até que a página principal seja solicitada.
*
) na diretiva de inclusão.<jsp:include>
é uma ação de inclusão padrão ,<%@ include file="" %>
é a diretiva de inclusão . Leia a última seção (na caixa cinza) que descreve as vantagens (ou seja, recomendações sobre quando escolher uma ou outra). Verifique também este artigo para obter uma descrição detalhada. Espero que isto ajude.Possível pergunta duplicada
<@include>
- A tag diretiva instrui o compilador JSP a mesclar o conteúdo do arquivo incluído no JSP antes de criar o código do servlet gerado. É o equivalente a recortar e colar o texto da sua página de inclusão diretamente no seu JSP.<jsp:include>
- A tag JSP Action, por outro lado, instrui o contêiner a pausar a execução desta página, executar a página incluída e mesclar a saída dessa página na saída desta página.fonte
<t:mytag><h1>Hello World</h1></t:mytag>
:? Isso não é uma inclusão, é o uso normal de uma tag (como<jsp:useBean>
ou<c:if>
).A principal vantagem do
<jsp:include />
excesso<%@ include >
é:<jsp:include />
permite passar parâmetroso que não é possível em
<%@include file="somefile.jsp" %>
fonte
<%@include file="somefile.jsp?menu=value" %>
? Isso também é restrito?Todas as três opções de modelo -
<%@include>
,<jsp:include>
e<%@tag>
são válidas, e todas as três abrangem diferentes casos de uso.Com
<@include>
, o analisador JSP alinha o conteúdo do arquivo incluído no JSP antes da compilação (semelhante a um C#include
). Você usaria essa opção com conteúdo simples e estático: por exemplo, se desejasse incluir elementos de cabeçalho, rodapé ou navegação em todas as páginas do aplicativo da web. O conteúdo incluído se torna parte do JSP compilado e não há custo extra no tempo de execução.<jsp:include>
(e JSTLs<c:import>
, que é semelhante e ainda mais poderoso) são mais adequados para conteúdo dinâmico. Use-os quando precisar incluir conteúdo de outro URL, local ou remoto; quando o recurso que você está incluindo é dinâmico; ou quando o conteúdo incluído usa variáveis ou definições de bean que entram em conflito com a página de inclusão.<c:import>
também permite armazenar o texto incluído em uma variável, que você pode manipular ou reutilizar. Ambos incorrem em um custo de tempo de execução adicional para o envio: isso é mínimo, mas você deve estar ciente de que a inclusão dinâmica não é "gratuita".Use arquivos de tags quando desejar criar componentes reutilizáveis da interface do usuário. Se você tem uma Lista de Widgets, digamos, e deseja iterar sobre os Widgets e exibir as propriedades de cada um (em uma tabela ou em um formulário), criaria uma tag. As tags podem receber argumentos, usando
<%@tag attribute>
e esses argumentos podem ser obrigatórios ou opcionais - um pouco como os parâmetros do método.Os arquivos de tag são um mecanismo mais simples, baseado em JSP, de escrever bibliotecas de tags, que (antes do JSP 2.0) você precisava escrever usando o código Java. É muito mais limpo gravar arquivos de tag JSP quando há muita renderização na tag: você não precisa misturar código Java e HTML como faria se escrevesse suas tags em Java.
fonte
De acordo com: Java Revisitado
Os recursos incluídos pela diretiva include são carregados durante o tempo de conversão jsp, enquanto os recursos incluídos pela ação include são carregados durante o tempo de solicitação.
Qualquer alteração nos recursos incluídos não será visível no caso da diretiva include até que o arquivo jsp seja compilado novamente. Enquanto em caso de ação de inclusão, qualquer alteração no recurso incluído será visível na próxima solicitação.
A diretiva Include é uma importação estática, enquanto a ação include é uma importação dinâmica.
A diretiva Include usa o atributo file para especificar os recursos a serem incluídos, enquanto a ação include usa o atributo page para o mesmo objetivo.
fonte