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&aacute;rio <% express&atilde;o%> −− > • Exemplo: <!−− isto &eacute; um coment&aacute;rio s&oacute; Html −− > <!−− Esta p&aacute;gina foi carregada em <%= (new java.util.Date()).toLocaleString()%> −− > • Veja o código fonte: <!−− isto &eacute; um coment&aacute;rio s&oacute; Html −− > <!−− Esta p&aacute;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&aacute;rios</H2> <%−− Este coment&aacute;rio &eacute; inv&iacute;sivel quando vemos o c&oacute;digo fonte da p&aacute;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&atilde;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&atilde;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