2. Introdução
Uma página HTML simplesmente é retornada como está ao
cliente, sem processamento pelo servidor, e, se isso acontecer
para uma página que contenha código java nela, o navegador
não sérá capaz de decifrar a parte JAVA do conteúdo da página.
É exatamente isto que uma JSP permite que o desenvolvedor
faça
A página tem uma extensão JSP que alerta ao servidor que ela
pode ter código JAVA que precisa ser processado e, ao mesmo
tempo, permite que o restante do conteúdo HTML permaneça
intacto.
3. Introdução
Você pode ter uma página JSP que contenha apenas código
HTML.
Um página JSP consiste em código JAVA incorporado em HTML,
portanto ela se assemelha bem a um arquivo HTML puro, com
habituais etiquetas HTML, acrescido de etiquetas especiais que
englobam o código JAVA.
Cada trecho de código JAVA é colocado entre etiquetas especiais
que alertam o servidor para o código embutido que precisa ser
compilado, processado e convertido em conteúdo dinâmico
HTML equivalente
4. Introdução
Ao examinar o código JAVA embutio, o servidor
automaticamente cria um novo SERVLET, nos bastidores, um por
JSP, e converte o código JAVA embutido em código equivalente
de tranferência de HTML.
Código JAVA é opcional em páginas JSP.
O que o TOMCAT faz? Uma simples página JSP dá muito trabalho
ao container. Vejamos o que ocorre a seguir:
O TOMCAT “viu” que a solicitação era por um arquivo com uma
extensão .JSP e, assim preparou-se para criar um SERVLET.
5. Introdução
Para cada arquivo JSP que for solicitado, o TOMCAT
efetivamente criar um novo arquivo .JAVA, em tempo de
execução, com o nome derivado do nome do seru arquivo JSP e
o compila por conta própria para criar um arquivo
SERVLET.CLASS
Ele coloca todas essas classes SERVLET criadas por ele próprio
em uma pasta chamada CATALINA (padrão)
Várias subpastas são criadas para executar a página JSP:
7. Elementos JSP
• Etiquetas especiais são tecnicamente chamadas de
ELEMENTOS. Sintaxe dos elementos JSP:
<elemento_etiqueta nomeAtributo1=“valor1”
nomeAtributo2=“valor2” ...>
........
</elemento_etiqueta>
• Os atributos represetam uma lista de pares nome/valor que se
aplicam ao elemento_etiqueta, que podem ser ou não
obrigatórios para cada etiqueta definida. Quando NÃO
obrigatórios, assumem valores padrão.
8. Elementos JSP
• Para cada finalidade, exite um elemento apropriado de JSP.
Exitem 5 tipos diferentes de elementos:
• Expressões
• Scriptlets
• Declarações
• Diretivas
• Elementos de ação
• Scriptlets e declarações são referidos como ELEMENTOS DE
SCRIPTING
9. Expressões JSP
• Uma forma de inserir código JAVA em JSP é usar uma
EXPRESSÃO JSP
• Uma EXPRESSÃO não é uma INSTRUÇÃO
• Uma EXPRESSÃO JAVA é delimitada pelas etiquetas de
expressão <%= %>
10. Expressões JSP
• As ETIQUETAS DE EXPRESSÃO pegam a STRING delimitada por
ela e a transferem usando uma INSTRUÇÃO OUT.PRINT()
• Se a EXPRESSÃO consistir em um OBJETO, JAVA invocará o
método TOSTRING() a partir da superclasse global OBJECT.
• A etiqueta de expressão, portanto, deve ter no mínimo uma
string delimitada
11. Expressões JSP
• A expressão é formada por uma ou mais variáveis, não uma
instrução, portanto, a etiqueta de expressão <%=%> não
termina com ponto e vírgula
• Exemplo: exibindo data e hora corrente
• Para apresentar a data em JAVA devemos usar new
java.util.Date();
• Isto gera um objeto do tipo DATE em Java. Quando o método
TOSTRING() for chamado com um objeto do tipo DATE, ele
retornará a STRING equivalente a este objeto
12. Expressões JSP
• O código fonte abaixo (EXEMPLO 1 JSP) ensina como exibir o conteúdo atual do
OBJETO DATE como uma STRING
<%@page contentType="text/html" pageEncoding="UTF-8" import="java.util.*"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title> :: EXEMPLO 1 - DATA :: </title>
</head>
<body>
<h1> :: EXEMPLO 1 - DATA :: </h1>
<p> <font face="TAHOMA" color="#green"> A hora atual é: <b> <%= new
java.util.Date()%> </font> </b> </p>
</body>
</html>
13. Expressões JSP
• Código JAVA foi embutido na JSP
• A solicitação vai primeiro ao servidor TOMCAT, que procurará
por quaisquer elementos
• Se ele encontrar, avaliará as variáveis incluídas na etiqueta e
inserirá a STRING equivalente nessa posição
• OUT.PRINT() é usado para mostrar a string ao cliente, no caso,
o navegador
14. Expressões JSP
• Vá até a pasta
• C:UsersCissaAppDataRoamingNetBeans8.0.2apache-
tomcat-
8.0.15.0_baseworkCatalinalocalhostExemplo1orgapache
jsp
• Haverão dois arquivos: index_jsp.java e index_jsp.class
• Olhe o método _JSPSERVICE()
• O tomcat converteu a expressão em uma instrução JAVA
equivalente
15. Scriptlets
• Expressões são limitadas em sua capacidade para incorporar
lógica complexa de negócios
• Expressões podem apenas transferir valores de algumas
variáveis ou expressões, mas não podem realizar
processamento de lógica de negócios
• SCRIPTLETs fazem isso: instruções JAVA incluídas entre as
etiquetas especiais <% %>
• Portanto, qual a diferença nas tags SCRIPTLETS e EXPRESSÕES?
16. Scriptlets
• Scriptlets em instruções válidas em JAVA, portanto, devem
terminar com ponto e vírgula
• SCRIPTLETS são um meio para processar dados ou determinar
valores de váriaveis necessárias para a JSP exibir como
conteúdo HTML dinâmico
• EXEMPLO: alterando a forma de apresentar a data e hora
usando EXPRESSÕES + SCRIPTLETS
17. Scriptlets
• Scriptlets em instruções válidas em JAVA, portanto, devem
terminar com ponto e vírgula
• SCRIPTLETS são um meio para processar dados ou determinar
valores de váriaveis necessárias para a JSP exibir como
conteúdo HTML dinâmico
• EXEMPLO: alterando a forma de apresentar a data e hora
usando EXPRESSÕES + SCRIPTLETS
18. Exemplo 2
<%@page contentType="text/html" pageEncoding="UTF-8" import="java.util.*"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title> :: EXEMPLO 2 - DATA :: </title>
</head>
<%
java.util.Date horaAtual = new java.util.Date();
String hora = horaAtual.toString();
%>
<body>
<h1> :: EXEMPLO 2 - DATA ::</h1>
<p> <font face="TAHOMA" color="#green"> A hora atual é: <b> <%= hora %> </font> </b>
</p>
</body>
</html>
20. Diretivas
• <%@ %> diretivas
• Sintaxe geral:
<%@ diretiva atributo1 = “valor1”, atributo2 = “valor2”, ... %>
• Três principais tipos de diretivas:
• Page
• Include
• Taglib
21. Diretivas
• A diretiva PAGE permite que classes sejam importadas para o
JSP usando o atributo IMPORT
• Import recebe uma lista de classes que devem ser separadas
por vírgulas
• Os nomes das classes devem ser totalmente qualificados na
declaração import. Exemplo: java.util.Date (e não apenas
Date)
• EXEMPLO NETBEANS
22. Importando Classes
Personalizadas em sua JSP
• As classes que você cria também podem ser importadas na
diretiva page
• Para isto, basta saber o caminho exato do arquivo .class
• Como JSPs são compilados em um SERVLET que pertence a
um pacote nomeado, as classes personalizadas precisam ser
postas em pacotes nomeados, de forma que possam ser
importadas pela JSP usando a diretiva page import
• Exemplo
23. Declarações JSP
• Se você tiver muitas instruções JAVA em seu scriptlet, isso
pode se tornar confuso e dificil de gerenciar
• Existem duas formas de organizar uma grande quantidade de
código JAVA no scriptlet
• Declarações JSP
• Etiquetas JSP
24. Declarações JSP
• Declarações JSP
• São etiquetas que consistem no par <%! %>, com uma ou mais
declarações de variáveis JAVA e/ou definições de métodos
entre elas
• Permitem que especifique quaisquer atributos e/ou métodos
que possa chamar a partir dos scriptlets e expressões
• Variáveis que precisam ser compartilhadas por scriptlets
podem ser incluídas dentro de declarações
• Exemplo
25. Declarações JSP
• Se você abrir o arquivo JSP, notará que a declaração ficou bem
no início da classe servlet
• Além disso, o código de transferência de HTML em
_jspService() invoca o método getDate() declarado como parte
do servlet
• Declarações de variáveis em scriptlets permanecem dentro do
método _jspService() na conversão
• Variáveis definidas dentro de uma declaração são instanciadas
apenas uma vez, após a primeira solicitação do servlet. Se
você tentar atualizar uma página, isto poderá não funcionar
26. Declarações JSP
• Métodos escritos em uma declaração não podem ser
compartilhados entre JSPs
• Se mais de um JSP precisar de um método específico, a
declaração com esse método deverá ser repetida para todas
as páginas que precisar dele
• Alterações feitas em um método em uma JSP teriam de ser
levadas para a outra JSP
• Isto não é bom para a manutenção do sistema
• É recomendável NÃO usar declarações em JSPs