Programação II – Java Server Pages Christopher Burrows JavaServer Pages – o indicador “page” O indicador “page” que se encontra ao cimo do JSP designa outros atributos para o servlet que resulta do JSP. Permite controlar: – – – – – – Imports; As classes das quais o servlet herda; O tipo de dados gerados; Se permite multithreading; Se o servlet participa na sessão; A página que trata de erros inesperados; JavaServer Pages - import Formato: – – <%@page import=“package.classe” %> %@page import=“package.classe1,...,package.classeN Utilizar sempre packages nas classes a ser utilizadas por um JSP. JavaServer Pages - import Exemplo: <%@page import=“java.util.*, p2.Pessoa” %> <% Pessoa p = new Pessoa(); %> JavaServer Pages - contentType Formato: – – – <%@page contentType=“tipo” %> <%@page contentType=“tipo; charset=charset” %> <%@page pageEncoding=“charset” %> Serve para especificar o tipo de resultado apresentado pelo JSP. JavaServer Pages - contentType Exemplo para uma página HTML normal: <%page contentType=“text/html” %> JavaServer Pages - session Formato: – <%@page session=“true/false” %> Serve para especificar se um JSP faz parte da sessão ou não; Por defeito é verdadeiro; JavaServer Pages - Tags <jsp:include /> <jsp:param /> <jsp:forward /> <jsp:getProperty /> <jsp:setProperty /> <jsp:useBean /> jsp:include Formato: – <jsp:include page=“caminho” /> Permite incluir um ficheiro na altura em que é feito o “request”. O ficheiro a incluir pode ser estático ou dinâmico(ex: HTML/JSP/texto/outro). jsp:include - Exemplo <html> <head></head> <body> <jsp:include page=“ola.jsp" /> </body> </html> jsp:useBean Formato: – <jsp:useBean id=“nomeDoObjecto” class=“package.classe” scope=“contexto” /> Permite criar uma instância de uma classe, sem utilizar código Java explicito. O atributo scope permite determinar o âmbito da instância (page/session/application). jsp:useBean As classes a ser utilizadas como Beans devem ter as seguintes propriedades: – – – Construtor vazio; Os atributos devem ser private; Gets/sets; jsp:useBean - Exemplo <html> <head></head> <body> <jsp:useBean id=“p1“ class=“p2.Pessoa” scope=“session” /> </body> </html> jsp:setProperty Formato: – <jsp:setProperty name=“nomeDoObjecto” property=“atributo” value=“valor” /> Permite dar valores aos atributos de um Objecto (da mesma forma que o método .setAtributo() utilizado anteriormente). jsp:setProperty - Exemplo <html> <head></head> <body> <jsp:useBean id=“p1“ class=“p2.Pessoa” scope=“session” /> <jsp:setProperty name=“p1” property=“nome” value=“Xpto”/> </body> </html> jsp:getProperty Formato: – <jsp:getProperty name=“nomeDoObjecto” property=“atributo” /> Permite obter o valor do atributo de um Objecto (da mesma forma que o método .getAtributo() utilizado anteriormente). jsp:getProperty - Exemplo <html> <head></head> <body> <jsp:useBean id=“p1“ class=“p2.Pessoa” scope=“session” /> <jsp:getProperty name=“p1” property=“nome” /> </body> </html> jsp:forward Formato: – <jsp:forward page=“endereço” /> Permite reencaminhar o pedido e respectivos parâmetros para outro ficheiro HTML/JSP/Servlet. jsp:forward - Exemplo <html> <head></head> <body> <jsp:forward page=“ola.jsp" /> </body> </html> jsp:param Formato: – <jsp:param name=“nome” value=“valor” /> Serve para especificar um parâmetro adicional, a acrescentar aos do pedido do utilizador. Pode ser utilizado com o jsp:include/forward ou dentro de um bloco <jsp:params></jsp:params> Exercicio Criar (ou utilizar de outra aula) a classe Pessoa, com os seguintes atributos (nome(String), idade(int), numBI(int)). Utilizando a página NovaPessoa, crie um JSP que receba os dados do formulário e crie uma instância da classe Pessoa com esses dados (utilizando o useBean/setProperty). Exercicio Armazenar o objecto Pessoa criado num ficheiro PessoaJSP.dat. Criar outra página JSP que leia o ficheiro PessoaJSP.dat e imprima os dados da pessoa.