JSP - JavaServer Pages

Propaganda
JSP - JavaServer Pages
1
Sumário
• O que é o JSP?
• Comparação com ASP, Servlets, e Javascript
• Disponibilidade
• Um exemplo simples
• Mais sobre Sintaxe
• Um pouco de JavaBeans
• Um exemplo mais complexo
2
O que são JSP
• http://java.sun.com/products/jsp
• Um processo de criar páginas Web dinâmicas,
• Baseado em tecnologia Java,
– vasto apoio de bibliotecas
– independente da plataforma
• Processamento do lado do Servidor
• Separa o design gráfico do conteúdo dinâmico
3
Separar design gráfico de conteúdo dinâmico
• Ideia não é nova (ex: PHP, mod perl, shtml, ASP)
• Design Gráfico e Lógica do Sistema são dois pontos
diferentes:
– Linguagens diferentes (HTML vs. Java)
– Objectivos diferentes
– Treinos diferentes
• Devem ser separados para optimizar a gestão de um projecto
• JSP realiza este objectivo permitindo etiquetas especiais de
Java dentro do HTML
4
Exemplo simples de código JSP
<HTML>
<BODY>
<B>I’m HTML code.</B><BR>
<% out.println(“I’m Java code.”) %>
</BODY>
</HTML>
5
Exemplo simples de código JSP
<HTML>
<BODY bgcolor=”white”>
<% java.util.Date clock=new java.util.Date(); %>
<% if(clock.getHours() < 12) { %>
<% <H1> Good morning! </H1>%>
<% } else if(clock.getHours() < 18) { %>
<% <H1> Good afternoon! </H1>%>
<% } else { %>
<% <H1> Good evening! </H1>%>
<% } %>
Welcome to our site, open 24 hours a day.
</BODY>
</HTML>
6
Exemplo (cont.)
Página enviada ao cliente às 20h
<HTML>
<BODY bgcolor=”white”>
<H1> Good evening! </H1>
Welcome to our site, open 24 hours a day.
</BODY>
</HTML>
7
Como funciona o JSP Engine
8
Como funciona o JSP Engine
9
Como funciona o JSP Engine
10
Como funciona o JSP Engine
11
JSP versus Javascript
Javascript
• Corre do lado do cliente
• Menos seguro
• Dependente do Browser
• Instável
• ...
12
JSP versus ASP
Active Server Pages (ASP)
• Semelhanças:
– Gerador, lado servidor, de páginas dinâmicas web
– Partilha uma sintaxe semelhante <% %>
– Programação modular (e.g. ActiveX, JavaBeans)
– Foco na conectividade com BD
• Diferenças:
– ASP é um producto enquanto que o JSP é uma especificação
13
JSP versus ASP
JSP
• Baseado em tecnologia Java
• Independente da plataforma
– Unix, AS400, VMS, Windows
• Maior variedade de vendedores
ASP
• Linguagens de Programação Microsoft
• Quase um monopólio
– Chillisoft http://www.chillisoft.com/
14
JSP versus Servlets
• Mas as página JSP são convertidas em Servlets? Não são o
mesmo?
• Semelhanças
– Proporcionam resultados idênticos para o utilizador
– JSP é um módulo adicional ao Servlet Engine
• Diferenças
– Servlets: “HTML em código Java”
∗ Código HTML inacessı́vel ao Graphics Designer
∗ Tudo acessı́vel ao programador
– JSP: “Scriptlets de código Java no HTML”
∗ Código HTML muito acessı́vel ao Graphics Designer
∗ Código Java muito acessı́vel ao programador
15
Onde encontrar um servidor de JSP
• Apache http://www.apache.org/ with:
– JServ http://java.apache.org/, or
– Jakarta http://jakarta.apache.org, and
– gnuJSP http://www.klomp.org.
• Java Web Server http://www.sun.com/software/jwebserever
• iPlanet http://www.iplanet.com
• Stronghold
– Baseado no Apache.
16
Programa simples: “Hello, World.”
• Código em HelloWorld.jsp
– Veremos as etiquetas <% %>, <%! %>, e <%= %>
– Uma execução da página JSP
– Veremos o código da Servlet gerada
• Com a assistência do Design Gráfico
– Modificamos o “visual”
• Com a assistência da Programação
– Modificamos a lógica dos procediemntos
17
Elementos do JSP
• Directivas – especifica informação acerca da página que
permanece inalterada entre acessos à página
• Acções – informação calculada na altura do acesso
• Scripts – adição de pequenos fragmentos de cógido à página
18
Sintaxe do JSP: Commentários
• Dois tipos de comentários:
– Comentários HTML
para as etiquetas HTML
– Comentários JSP
para as etiquetas JSP
19
Sintaxe do JSP: Commentários HTML
Comentário que pode ser visto no código fonte HTML
<!−− comentário <% expressão%> −− >
• Exemplo:
<!−− isto é um comentário só Html −− >
<!−− Esta página foi carregada em <%= (new
java.util.Date()).toLocaleString()%> −− >
• Veja o código fonte:
<!−− isto é um comentário só Html −− >
<!−− Esta página foi carregada em January 1, 2000 −− >
20
Sintaxe do JSP: Commentário escondido
Comentário que não é visı́vel no código fonte HTML
<%−− expressão −−%>
• Exemplo:
<HTML>
<BODY>
<H2>Um teste aos comentários</H2>
<%−− Este comentário é invísivel quando
vemos o código fonte da página −−%>
</BODY>
</HTML>
21
Sintaxe do JSP: Declaração
Declara variável ou método
<%! declaração; %>
• Exemplo:
<%! Int a = 0; %>
<%! Int a, b, c; %>
<%! Circle a = new Circle(2.3); %>
22
Sintaxe do JSP: Expressão
Contém uma expressão
<%= expression %>
• Exemplo:
– <P>O ficheiro mapa tem <%= map.size() %> entradas. </P>
– <P> Boa tentativa mas ainda não acertou. Tente <B>
<%= numguess.getHint() %> </B></P>
23
Sintaxe do JSP: Scriptlet
Contém um fragmento de código
<% fragmento de código %>
• Exemplo:
<%
String name = null;
if (request.getParameter(”name”) == null ) {
%>
Hello, World
<% } else {
println.out(”Hello,” + name); }
%>
24
Sintaxe do JSP: Directiva include
Inclui um ficheiro estático
<%@ include file=”relativeURL” %>
• Exemplo:
main.jsp:
<HTML><BODY>
Data e tempo actuais são: <%@ include file=”date.jsp” %>
</BODY></HTML>
date.jsp:
<%@page import =”java.util.*” %>
<% =(new java.util.Date()).toLocaleString() %>
• Resultado:
Data e tempo actuais são:
Mar 5, 2000 4:56:50
25
Sintaxe do JSP: Directiva de página
Define atributos que se aplicam a toda
a página
<%@ page
[ language=”java” ]
[ extends=”package.class” ]
26
[ import=”package.class” ]
[ session=”true | false” ]
[ buffer=”none | 8kb | sizekb” ]
[ autoFlush=”true | false” ]
[ isThreadSafe=”true | false” ]
[ info=”text” ]
[ errorPage=”relativeURL” ]
[ contentType=”mimeType” ]
[ isErrorPage=”true | false” ]
%>
Sintaxe do JSP: <jsp:forward>
Reencaminha o pedido para processamento noutra página
(HTML, JSP, ou Servlet)
<jsp:forward page =”relativeURL”%>
• Exemplo:
<jsp:forward page=”scripts/login.jsp” />
ou
<jsp:forward page=”scripts/login.jsp” >
<jsp:param name=”username” value=”jsmith”/>
</jsp:forward>
27
JSP Syntax <jsp:include>
Inclui um ficheiro estático ou dinâmico
<jsp:include page =”relativeURL” %>
• Exemplo:
<jsp:include page=”scripts/login.jsp” />
<jsp:include page=”copyright.html” />
28
JSP Syntax <jsp:useBean>
Localiza ou instancia um componente JavaBeans
<jsp:useBean id=”beanInstanceName” scope=”page|request|session|
application” class=”package.class” />
• Exemplo:
<jsp:useBean id=”calendar”scope=”page”
class=”employee.Calendar”/>
29
JSP Syntax <jsp:setProperty>
• Estabelece o valor de uma ou mais propriedades num Bean,
usando os set methods do Bean
• Primeiro declare o Bean com <jsp:useBean>
<jsp:setProperty name=”beanInstanceName”
property=”propertyName” value=”string” />
• Exemplo:
<H1><jsp:useBean id=”calendar”scope=”page”
class=”employee.Calendar”/>
<jsp:setProperty name=”calendar” property=”username”
value=”Steve”/>
</H1>
30
JSP Syntax <jsp:getProperty>
• Obtém o valor de uma propriedade de um Bean, usando os
get methods do Bean
• Primeiro declare o Bean com <jsp:useBean>
<jsp:getProperty name=”beanInstanceName”
property=”propertyName” />
Exemplo:
<jsp:useBean id=”calendar”scope=”page”
class=”employee.Calendar”/>
<H1>Calendar of <jsp:getProperty name=”calendar”
property=”username”/>
</H1>
31
Introdução aos JavaBeans
• ”http://java.sun.com/beans”
• Um elemento da arquitectura baseada em componentes do
Java
• Suporte para blah, customization, blah, propriedades, e blah.
– Customization permite ao utilizador alterara aparência e
comportamento do bean.
– As propriedades permitem que os beans sejam manipulados por
programaçã bem como permite a customization.
32
JavaBeans para programadores
Beans têm que:
• implementar java.io.Serializable
• ter um construtor sem argumentos
Propriedades têm que:
• ter métodos get e set
• têm que ser private
33
Conclusão
• Gerador robusto, lado servdior,de páginas Web dinamicas
• de fácil implementação
– Implementado numa variedade de servidores fiáveis e plataformas
– Baseado na linguagem Java
• de fácil gestão
– Separa os requisitos de Design gráfico dos requisitos de programação
• não custa dinheiro
34
Download