Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages...

23
Arquitetura das JSP - Aula 2 Vitor Brandi Junior eado no tutorial “JavaServer Pages Fundamentals - Short Course” by

Transcript of Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages...

Page 1: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

Arquitetura das JSP - Aula 2

Vitor Brandi Junior

Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru

Page 2: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

2

Sumário• Introdução• Como funciona processo de compilação das

JSP• Modelos de Acesso• Sintaxe básica da JSP• Introdução ao conceito de escopo de objetos• Introdução ao conceito de objetos implícitos

Page 3: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

3

Introdução• O propósito das JSP é prover um

método declarativo e centrado em apresentação para o desenvolvimento de servlets

• Portanto, elas podem ser definidas como extensões à API dos servlets

• Portanto, é importante notar que servlets e JSP possuem muitas características em comum.

Page 4: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

4

Como funcionam ?• Normalmente as páginas JSP passam por uma fase

de tradução e por uma fase de processamento de requisição

• A fase de tradução acontece uma única vez, a menos que a página JSP seja alterada, caso em que esta fase é repetida

• O resultado desta tradução é um servlet.

Page 5: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

5

Modelos de Acesso• Existem pelo menos duas filosofias diferentes

(Modelo 1 e Modelo 2) para se utilizar a tecnologia JSP.

• Elas diferem, essencialmente, no local onde a maior parte do processamento das requisições é realizado.

• Arquitetura do modelo 1

Page 6: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

6

Modelo 1• Neste modelo, a requisição que chega vinda

do web browser é enviada diretamente à página JSP, a qual é responsável pelo seu processamento e resposta ao cliente

• Existe separação entre a apresentação e o conteúdo, uma vez que todo acesso a dados é executado por beans

• Este modelo é adequado para aplicações mais simples

• Para aplicações mais complexas, ela não é adequada, pois pode embutir muitos scriplets ou código Java dentro da página JSP

Page 7: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

7

Modelo 2

• A arquitetura deste modelo 2 constitui-se na implementação do design pattern Model/View/Controller

• Nesta arquitetura, o processamento é dividido entre componentes de apresentação e de controle

Page 8: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

8

Modelo 2• Os componentes de apresentação são páginas

JSP que geram respostas em HTML/XML que constituem-se na interface do usuário

• Os componentes de controle não se preocupam com questões de apresentação, sendo responsáveis pelo processamento de todas as requisições HTTP

• Eles também são responsáveis pela criação de quaisquer beans ou objeto,s utilizados pelos componentes de apresentação

• Também decidem qual componente de apresentação recebe as requisições do usuário

Page 9: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

9

Modelo 2• A principal vantagem deste modelo é que não

existe processamento lógico dentro dos componentes de apresentação

• Eles são responsáveis pela recuperação de quaisquer objetos ou beans que podem ter sido criados pelos controladores, extraindo deles o conteúdo dinâmico que será inserido dentro dos templates de apresentação

• Esta clara separação entre apresentação e conteúdo facilita a divisão de tarefas entre programadores e web designers durante o desenvolvimento

Page 10: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

10

Sintaxe Básica das JSP• A sintaxe das JSP pode ser classificada em

elementos de scripting (diretivas, declarações, expressões, scriplets e comentários) Diretivas:– são mensagens para o container JSP que, ao invés

de produzir resultados visíveis, dizem ao container o que fazer com o resto da página JSP

– as diretivas são sempre definidas dentro da tag <%@ %>

– as duas principais diretivas são page e include (a partir da versão 1.1. da API, uma nova diretiva taglib também foi definida)

Page 11: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

11

Diretivas - page• Page

– geralmente encontrada no topo da maioria das páginas

– podem existir tantas diretivas page quanto necessárias

– a diretiva <%@ page %> se aplica a todo o arquivo JSP e a qualquer arquivo nele incluído estaticamente

– exemplos:• <%@ page import =“java.util.*, com.foo.*” buffer=“16k” %>

• <%@ page autoFlush=“false”%>• <%@ page errorPage=“error.jsp” %>

Page 12: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

12

Diretivas - include• include

– permite que se divida o conteúdo da página em elementos mais facilmente gerenciáveis, como por exemplo, cabeçalhos, rodapés etc.

– a página incluída pode ser um arquivo HTML ou uma outra página JSP ou mesmo um arquivo texto

– a inclusão se dá durante a tradução da página JSP, no momento em que ela é compilada

– diz-se, portanto, que a inclusão é estática– exemplo:

• <%@ include file = “copyright.html” %>

Page 13: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

13

Outro exemplo de include• Suponha o seguinte arquivo JSP denominado

date.jsp:<%@ page import = “java.util.*” %>

<%= (new java.util.Date()).toLocaleString() %>

• Ele vai ser importado da seguinte maneira (suponho o seguinte arquivo x.jsp):

<html>

<head><title>Teste de Include</title></head>

<body>

A Hora atual é <%@ include file = “date.jsp” %>

</body>

</html>

Page 14: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

14

Declarações• Permitem que sejam definidas variáveis, em

nível de página, para o armazenamento de informações

• permitem ainda a definição de métodos que possam vir a ser necessitados pela página

• a tag que define declarações é: <%! %>• é obrigatório que a declaração de variáveis

se encerre com ponto-e-vírgula• exemplo:

– <%! int i =0; %>– <%! public void seila() {

// seila o que vc coloca aqui

} %>

Page 15: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

15

Expressões• Em JSP, os resultados da avaliação de uma

expressão são convertidos em uma string e diretamente incluídos dentro da página de saída

• tipicamente expressões são utilizadas para apresentar valores simples de variáveis ou valores retornados pela invocação de métodos get de beans

• a tag que define expressões é: <%= %>• não se pode incluir ponto-e-vírgula ao final de

uma expressão. Exemplos:– <%= variavelQualquer %>– <%= qualquerBean.getName() %>

Page 16: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

16

Scriplets• Contém um fragmento de código válido na

linguagem de script definida para a página• o código contido no scriplet é executado

quando a requisição é atendida pela página JSP

• o scriplet pode conter qualquer quantidade de comandos, declarações de variáveis e métodos ou expressões válidas

• é importante lembrar que quaisquer tags HTML ou elementos JSP devem ser declarados fora do scriplet

Page 17: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

17

Scriplets• A tag que define um scriplet é: <% %>• exemplo: <% for (int i = 1; i <= 4; i++) { %>

<h<%=i%>> Oi Mundo </h<%=i%>>

<% } %>

• outro exemplo: <% String nome = null;

if (request.getParameter(“nome”) == null) {

%> <%@ include file = “erro.html” %>

<% else {

// faz outras coisas

}

%>

Page 18: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

18

Comentários• Existem dois tipos diferentes de comentários

possíveis de serem utilizados:– um que deixa visível o comentário ao usuário da

página quando este visualiza o conteúdo da mesma (comentário em nível de HTML)

– outro que esconde o comentário do usuário da página (comentário em nível de servidor ou comentário escondido)

• A tag que define a sintaxe do primeiro tipo é: <!-- comentário -->

• A tag que define a sintaxe do segundo tipo é: <%-- comentário --%>

Page 19: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

19

Introdução a escopo de objetos

• Escopo ou visibilidade é um assunto importante para JSP

• os objetos podem ser criados:– implicitamente através de diretivas JSP– explicitamente através de ações– diretamente dentro do próprio código script

• estes objetos podem ser associados com um atributo de escopo que define onde este objeto pode ser referenciado (existe referência válida) e quando esta referência deixa de existir (fica inválida)

Page 20: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

20

Introdução a escopo de objetos

• Resumidamente, a figura abaixo apresenta os escopos definidos:

Page 21: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

21

Introdução a Objetos Implícitos• Automaticamente, o container JSP

disponibiliza objetos implícitos que estão disponíveis e podem ser utilizados dentro de scriplets e expressões

• estes objetos agem como wrappers de classes e interfaces normalmente definidas dentro da API de servlets.

• Existem 9 objetos implícitos:– request: muito utilizado, representa o serviço de

invocação disparado pela classe HttpServletRequest. Seu escopo é requisição (request)

Page 22: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

22

Introdução a Objetos Implícitos– response: pouco utilizado, representa a classe HttpServletResponse (resposta à requisição). Seu escopo é página (page)

– pageContext:encapsula a classe PageContext (que define características dependentes da implementação). Seu escopo é página (page)

– application: representa a classe ServletContext obtida a partir do objeto de configuração do servlet. Seu escopo é aplicação (application)

– out: um objeto da classe JspWriter que permite escrever no stream de saída. Seu escopo é página (page)

– config: representa a classe ServletConfig. Seu escopo é página (page)

Page 23: Arquitetura das JSP - Aula 2 Vitor Brandi Junior Baseado no tutorial “JavaServer Pages Fundamentals - Short Course” by jGuru.

23

Introdução a Objetos Implícitos– page: pouco utilizado, é sinônimo para o operador this. Seu escopo é página (page)

– session: representa um objeto da classe HttpSession. Seu escopo é sessão (session)

– exception:representa um objeto da classe Throwable, resultando da invocação da página de erro. Seu escopo é página (page)