JavaServer Pages (JSP) Flashcards
JavaServer Pages (JSP)
- A tecnologia de JavaServer Pages é uma extensão da API de Servlets.
- Um JSP torna-se um servlet.
- Utiliza-se templates (HTML ou XML), elementos customizados, linguagens de script e objetos Java server-side.
ESAF
JSP (Java Server Pages) é uma tecnologia que permite ao desenvolvedor de páginas para Internet produzir aplicações que acessem banco de dados, manipulem arquivos no formato texto e capturem informações a partir de formulários. Dessa forma, conteúdos dinâmicos podem ser adicionados para páginas estáticas, tais como páginas HTML.
Objetivo JSP:
- Seu objetivo também é gerar conteúdo dinâmico a partir do servidor.
Servlets e JSPs:
- Possuem o mesmo ciclo de vida;
- São gerenciados pelo container;
- Possuem API própria;
- Possuem acesso à sessão do cliente;
- Fazem uso de múltiplas threads.
Vantagens JSP:
- Habilita a separação da lógica da aplicação da apresentação
▪ Melhora a manutenabilidade e reusabilidade - Extensível via tags customizadas
- Suporta reuso através de JavaBeans e Tags Customizadas
- Independente de plataforma (só precisa de um container web para rodar)
- Faz uso da vasta API Java
CESPE
A JSP permite introduzir tags customizadas à sua biblioteca e, assim, estender facilidades à linguagem. Entre outros benefícios dessa prática estão a eliminação de scriptles em aplicações JSP, reuso e sintaxe similar à do HTML.
Diretivas:
Recurso para dar instruções especiais ao Container no momento da tradução da página.
Diretiva: <%@ %>
FCC
Para fornecer informações especiais ao container JSP sobre a página JSP, quando esta é compilada para servlet, é utilizada a categoria Diretivas.
Existem 3 diretivas:
- @page
- @taglib
- @include
@page:
▪ Define propriedades específicas da página;
▪ Define atributos de configuração da página JSP.
▪ Exemplos:
<%@ page contentType=”text/html” %> <%@ page language=”java” %> <%@ page import=”java.util.Date” %>
@taglib:
Define as bibliotecas de tags disponíveis para o JSP.
Exemplo:
<%@ taglib tagdir=”/WEB-INF/tags/cool” prefix=”cool” %>
▪ A URI identifica unicamente uma biblioteca de tags, localizando um arquivo TLD que descreve o conjunto de tags customizadas que devem ser
associadas ao prefixo especificado.
TLD significa tags lib descriptor (descritor de biblioteca de tags).
@Include:
- Define os textos e os códigos que são acrescentados na página atual no momento da tradução.
- Ex: Inclusão de um cabeçalho, rodapé ou assinatura.
Exemplo:
~~~
<%@ include file=”autor.jsp” %>
~~~
Elementos de criação de scripts - Decalaração:
- Servem para declarar membros da classe do servlet gerado.(As variáveis e os métodos!).
- Exemplo:
~~~
<%! int count=0; %>
~~~ - Tudo que estiver entre as tags
<%! E %>
é adicionado à classe FORA do método service(); - Pode declarar as variáveis estáticas e de instância.
-
Declaração:
<%! %>
Elementos de criação de scripts - Scriplet:
- Código Java dentre de uma tag
<% ... %>
- Todas as declarações em um scriptlet devem terminar com um ponto-e-vírgula!
- Scriptlet:
<% %>
- Você pode usar **<scripting-invalid>** para impedir que o JSP possua scripting (scriptles, expressões Java ou declaracões).</scripting-invalid>
Elementos de criação de scripts - Expressão:
- Sempre se torna o argumento para um método print();
- Exibe automaticamente aquilo que colocou entre as tags.
<%= Counter.getCount() %>
é igual a<% out.println(Counter.getCount()); %>
- Nunca terminar uma expressão com ponto-e-vírgula!
- NÃO DEVE usar um método com um tipo de retorno void como uma expressão.
- Expressão:
<%= %>
Comentários:
-
<!-- comentário HTML -->
Vai ao cliente e o browser interpreta como comentário. -
<%-- comentário JSP --%>
É removido no momento da tradução da página.
Java Beans:
- Um Java Bean é um componente reutilizável da API Java.
- Um bean nada mais é do que um programa escrito em Java.
- Java Beans podem ser facilmente acessados por páginas JSPs.
A especificação determina que todos os atributos privados de um objeto devem ser acessados por métodos getters e setters.
Estas convenções garantem que o objeto JavaBean possa ser utilizado por outras aplicações de maneira uniforme, distribuída e independente de plataforma:
Um Java Bean deve conter um construtor público e sem argumentos e implementar a interface Serializable.
JavaBeans vs Enterprise JavaBeans:
- JavaBeans → Definem um formato para a criação de componentes de uso geral para as aplicações.
- Enterprise JavaBeans → Componentes especializados na lógica de negóciode uma aplicação e que residem no servidor.
No JSP, os JavaBeans são acessados por meio de ações:
<jsp:useBean>
<jsp:getProperty>
<jsp:setProperty>
Um JavaBean para ser salvo em arquivo, ou enviado de um computador para outro, em aplicações distribuídas, deve implementar a interface:
java.io.Serializable
Ações (Standards Actions):
Conjunto de ações para realizar tarefas comuns em páginas.
- Definidas por meio de tags.
- São iniciadas pelo prefixo: <jsp:... >
<jsp:forward>
Permite o redirecionamento da requisição atual para outra página JSP, ou uma página estática, ou uma classe servlet.
- Esse recurso deve apontar para um caminho no mesmo contexto da página atual, ou seja, um caminho relativo;
<jsp:forward page=”/page.jsp?nome=Maria” />
<jsp:include>
- Utilizada para incluir recursos estáticos ou dinâmicos que estejam localizados no mesmo contexto da pagina em execução.
- Inclusão feita no objeto out atual
- Sua sintaxe pode conter também subelementos jsp:param
<jsp:include page=”/page.jsp?nome=Jose” flush=”true” /> <jsp:param name=”nome” value=”Jose” />
<jsp:useBean>
Associa uma instância de um objeto (Java Bean) a uma variável, que pode ser utilizada por meio dos elementos de script.
- ```
<jsp:useBean id=”nome” scope=”session” class=”classe” />
~~~
- id: é o identificador do bean na página JSP;
- scope: indica o escopo ao qual o bean pertence.Os escopos válidos são: application, session, request, page (default)
- class: é o nome completo da classe que define a implementação do objeto.
Para ler ou alterar as propriedades do bean, utilizam-se as ações:
<jsp:getProperty>
<jsp:setProperty>
<jsp:text>
Utilizada para incluir texto em uma página JSP, um documento JSP ou mesmo um arquivo de tags.
- Sua sintaxe inclui apenas o texto contido dentro do corpo da tag:<jsp:text>Exemplo de texto</jsp:text>
As seguintes ações são utilizadas dentro de documentos JSP para converter as formas permitidas em arquivos HTML para o formato XML:
<jsp:declaration>
<jsp:scriptlet>
<jsp:expression>
O mecanismo de inclusão, que permite o conteúdo dinâmico ser incluído em uma JSP em tempo de solicitação, é denominado:
Ação <jsp:include>
- Diretiva include: inclui o conteúdo do arquivo especificado durante a fase de compilação da página JSP
- Ação include: inclui o resultado da execução do arquivo sendo incluído quando a página que o inclui está sendo requisitada pelo usuário.
Expression Language (EL):
- Tornou-se parte da especificação a partir do JSP 2.0.
- Baseada no JavaScript
- Objetivo de simplificar o código Java contido no JSP.
- Inicia com “$” e é delimitada por chaves {}
- Exemplos:
${param[“nomeCliente”]}
${session.compras.total}
- EL prevê o uso de operadores aritméticos, relacionais e lógicos.
Para ignorar a utilização de EL em sua JSP:
- No DD:
<jsp-config> <jsp-property-group> <el-ignored>true</el-ignored> </jsp-property-group> </jsp config>
- Diretiva page:
~~~
<%@ page isELIgnored=”true” %>
~~~ - Tem precedência sobre o DD!
Para se acessar propriedades de um bean ou de uma coleção, pode-se utilizar qualquer uma das seguintes formas:
${bean.propriedade}
${bean[“propriedade”]}
${bean[‘propriedade’]}
Objetos Implícitos:
- São objetos cuja disponibilidade é automática.
- Você pode utilizá-los sem instanciar, como se eles simplesmente existissem.
- Pode-se escrever um JSP sabendo que o código fará parte de um servlet. Ou seja, aproveita as características de servlet, mesmo escrevendo um JSP.
São Objetos Implícitos do JSP:
- applicationScope
- sessionScope
- requestScope
- pageScope
- param
- paramValues
- header
- headerValues
- cookie
- initParam
- pageContext
Em negrito: Coleções do tipo Map, contêm todas as variáveis de escopo.
Objetos Implícitos - PAGE:
- Esse objeto implícito se refere à própria página.
- Sinônimo do operador “this” do objeto HttpJspPage.
- Não é usado com frequência.
Objetos Implícitos - CONFIG:
- Representa o objeto da classe javax.servlet.ServletConfig
- Representa o objeto de configuração da Servlet gerado pelo JSP.
- Podendo ser configurado pelo deployment descriptor (web.xml)
Objetos Implícitos - REQUEST:
- É uma instância da classe
javax.servlet.http.HttpServletRequest
- Esse objeto provê acesso a todas as informações disponíveis requisitados pelo usuário (como parâmetros de requisições e cabeçalhos).
- Pode ser usado exatamente da mesma forma que o parâmetro HttpServletRequest, usado no método service() de um Servlet.
Objetos Implícitos - RESPONSE:
- É uma instância da classe javax.servlet.http.HttpServletResponse
- Representa a resposta que será enviada à máquina que acionou o processamento da página JSP.
Objetos Implícitos - OUT:
- É uma instância da classe javax.servlet.jsp.JspWriter que, por sua vez, estende
java.io.Writer
complementada por diversos métodos da classejava.io.PrintWriter
. - É usada para imprimir caracteres como a classe similar
java.io.PrintWriter
. - Usa-se os métodos print(), println() e write() para escrever dados como resposta.
- Equivalente às expressões (<%= … %>)
Objetos Implícitos - SESSION:
- É um objeto da classe
javax.servlet.http.HttpSession
- Define a sessão do usuário, como feito na Servlet.
- Importante: lembrar que o objeto session só está presente nas páginas cuja diretiva session está definida como true
Objetos Implícitos - APPLICATION:
- Provê uma referencia a interface
javax.servlet.ServletContext
que representa o contexto da aplicação. - Pode armazenar dados que serão compartilhados e visíveis a todas as sessões da aplicação.
Objetos Implícitos - PAGECONTEXT:
- Referência ao objeto javax.servlet.jsp.PageContext é diferente do restante de objetos implícitos avaliados.
- A instancia pageContext proporciona ao desenvolvedor JSP acesso a todos os escopos disponíveis no JSP e para vários atributos de página úteis, como: o pedido atual e resposta, o ServletContext, HttpSession e ServletConfig.
Objetos Implícitos - EXCEPTION:
- É uma instância do objeto
java.lang.Throwable
- Representando uma exceção e estará presente em páginas de erros da aplicação.
Biblioteca de Tags:
- Biblioteca de tags ou Tag Libraries
- Maneira de se estender a semântica das páginas para suportar um conjunto de tagspersonalizadas.
- Vantagem de dividir a funcionalidade da aplicação Web em vários módulos reutilizáveis.
- Alternativa ao uso de scriptlets.
- Desenvolvedores podem criar suas próprias bibliotecas de tags customizadas.
- Struts e JSP são baseados em componentes na forma de biblioteca de tags.
Biblioteca de Tags - características:
- Podem ser customizadas por meio de atributos;
- Podem modificar a resposta gerada pela página;
- Podem ser aninhadas entre si;
- Podem se comunicar entre si;
- É necessário declará-las mediante a diretiva TAGLIB:
<%@ taglib uri=”/Information.tld” prefix=”info” %>
- O atributo “prefix” especifica qual deve ser o prefixo utilizado com a tag na página.
JSTL (JSP Standard Tag Library):
- Coleção de bibliotecas, tendo cada uma um propósito bem definido.
- Permitem escrever páginas JSP’s sem código Java.
- Proporciona maior rapidez no desenvolvimento de um website.
- JSTL também deve ser declarada nas páginas JSP por meio da diretiva “taglib”.
- JSTL é uma ótima alternativa à inclusão desordenada de elementos de script (scriptlets, declarações e expressões)