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 Exemplo: <%! Int a = 0; %> <%! Int a, b, c; %> Declara variável ou método <%! declaração; %> <%! Circle a = new Circle(2.3); %> 22
Sintaxe do JSP: Expressão Exemplo: Contém uma expressão <%= expression %> <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 26 <%@ page [ language= java ] [ extends= package.class ] [ 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