jsp => extensão do arquivo
jspf => fragmento de um arquivo JSP para ser incluído em outros JSPs.
Os elementos do JSP podem ser estáticos ou dinâmicos e podem ser expressos utilizando o padrão JSP ou então através de XML, porém note que cada arquivo só pode utilizar cada uma dessas sintaxes.
Objetos Implícitos
Fornecem muitas capacidades dos servlets em páginas JSP.
Eles podem ter 4 escopos: Request, Page, Session e Application.
No escopo Application, qualquer JSP do contêiner JSP pode manipular esse objeto application.
Objetos:
javax.servlet.ServletContext application.
No escopo Session, qualquer objeto na sessão de um determinado usuário pode manipular um objeto da sessão.
Objetos:
javax.servlet.http.HTTPSession session.
O escopo Request, que permanecem até o fim da solicitação. Digamos que um servlet ou página tenha que encaminhar uma requisição para outro servlet atender, então os objetos request permanecem também na outra página.
Objetos:
javax.servlet.ServletRequest request.
O escopo Page só existe na página que o define, é o que tem mais objetos.
Objetos:
javax.servlet.ServletResponse response
java.lang.Throwable exception
javax.servlet.jsp.jspWriter out
javax.servlet.jsp.PageContext pageContext ( page é sinônimo de this)
Diretivas
Lembre-se, as Diretivas são processadas em tempo de tradução, diferente das Ações, que são processadas em tempo de solicitação.
1. A diretiva page.
<%@page ... %>
Definindo o tipo de texto a ser enviado
<%@page contentType="text/html" %>
A codificação
<%@page pageEncoding="utf-8"%>
Para saber se o servidor pode enviar várias requisições concorrentes ou não para aquele servlet gerado pelo JSP usamos
<%@page isThreadSafe="true|false" %>
true=> pode mandar, eu me garanto
false=>manda não que eu me embanano
Enviar a execução para outra página quando um erro ocorrer.
<%@page errorPage="erro.jsp"%>
A diretiva
<%@page isErrorPage="true" %> serve para informar que essa página servirá de página de erro padrão para um grupo de outras páginas.
Para informar explicitamente que a linguagem gerada será java.
<%@page language="java">
Para especificar informações sumarizadas da página
<%@page info="Página de exemplo"%>
Para especificar a superclasse que será usado no momento da tradução
<%@page extends="com.taglib.jsp.primeiraPagina"%>
Para importar algo que já existe, como se fosse incluir, então usa-se
<%@page import="java.util.ArrayList" %>
Se for para incluir um arquivo JSP, como a gente faz com o PHP, então usa-se:
<%@page include="arquivo_a_ser_incluido.jsp" %>
Define o tamanho do buffer a ser utilizado, se o tamanho for NONE, então cada escrita da aplicação é enviada diretamente para o cliente.
<%@page buffer="em kb" %>
Semelhante a essa diretiva temos a
<%@page autoFlush="true%> que envia automaticamente do buffer de saída para o HTTP.
2. A diretiva TagLib
Serve para importar uma biblioteca de tags para página.
<%@taglib uri="biblioteca de tags" %>
Ações-Padrão
Processam ações em tempo de solicitação, diferente das diretivas, que são processadas em tempo de tradução.
<jsp:include>
Inclui um conteúdo externo na página JSP atual.
Note que usando a diretiva <%@ page include="arquivo" %>, um servlet será gerado e compilado, com esse conteúdo adicionado, e mudanças no arquivo incluído não serão refletidas no arquivo gerado a menos que seja recompilado novamente.
Exemplo de utilização:
<jsp:include page="minha_pagina_a_incluir.jsp" >
Opcionalmente você pode indicar flush=true, assim:
<jsp:include page="minha_pagina_a_incluir.jsp" flush="true">
Nesse caso o objeto implícito javax.servlet.jsp.jspWriter out será esvaziado, isto é, seu conteúdo mandado para o cliente, e então a página não poderá mais ser redirecionada para outro lugar.
<jsp:forward>
Encaminha a solicitação para outro JSP, Servlet ou página estática, matando a execução atual.
Note que os objetos implícitos page são terminados, porém o objeto implícito javax.servlet.ServletRequest request permanece.
Exemplo de utilização:
<jsp:forward page="processar_dados.jsp">
<jsp:param name="nome" value="renegado"/> <!-- repassando dados para a próxima solicitação -->
<!-- são armazenados no objeto implícito de escopo de página javax.servlet.ServletRequest request -->
</jsp:forward>
<jsp:plugin>
Basicamente tenta instalar uma aplicação no cliente, como um HTML Embed ou então um applet java.
<jsp:param>
Utilizado com outras tags para passagem de parâmetro. As outras tags são include, plugin e forward.
O parâmetro deve ter um nome e um valor.
<jsp:useBean>
Utilizar a instância de um JavaBean. Isto é, permite que a aplicação manipule um objeto Java.
Mais que carga d'aguas é um JavaBean?
Nada mais é que uma classe que contêm uma espécie de miniaplicativo independente que pode ser utilizado em várias outras aplicações, como por exemplo uma caixa de texto, ou um botão, ou um slideshow.
Para ser um Bean, deve ter as seguintes características:
- Implementar a interface serializable
- Ter um construtor público, sem argumentos
- Fornecer os métodos get/set para as propriedades
Atributos:
id => nome escolhido
scope => page | request | session | application
class => nome da classe completamente qualificado do java. Ex: java.lang.String
beanName => nome de um JavaBean que pode ser usado com o método instantiate, da classe java.beans.Beans, para carregar um JavaBeans na memória
type => pode ser do mesmo tipo de class, uma superclasse desse tipo ou uma interface. Se o type não puder acomodar o bean então acontece um ClassCastException.
Se os atributos class e beanName não forem informado então a aplicação vai procurar um objeto existente do tipo especificado em type.
<jsp:setProperty>
Setar uma propriedade de um JavaBean.
<jsp:setProperty name="id_do_bean" param="nomeDaPropriedade" value="novoValor">
Poderiamos utilizar assim também
<%= id_do_bean.getNomeDaPropriedade( ) %>
<jsp:getProperty>
Obter uma propriedade de um JavaBean.
<jsp:setProperty name="id_do_bean" property="nomeDaPropriedade">
Ou ainda
<%= id_do_bean.setNomeDaPropriedade( valor ) %>
Scriptlets
são trechos de código java contidos em documentos JSP.
<%
( codigo java aqui)
%>
<h1> Trecho de HTML aqui </h1>
Uma esculhambação dessa pode acontecer também:
<%
if ( alguma coisa aqui ) {
%>
<b> Exibe esse HTML aqui </b>
<%
}
%>
Para se declarar variáveis e métodos de instância usa-se
<%! int contador=0 %>
vai transformar a variável contador em uma variável acessível por this.
Expressões
Faz só imprimir alguma coisa.
<%=Objeto.getPropriedade( )%>
Ciclo de Vida
Basicamente o mesmo dos servlets, a diferença é o tempo de tradução, onde os JSPs são traduzidos para servlets.

No comments:
Post a Comment