Introdução à JSP JavaServer Pages Alcides Calsavara Referências • Professional JSP Karl Avedal e outros Wrox Press, May 2000 • JavaServer Pages Hans Bergsten O’Reilly, December 2000 Links • SUN JSP • Jakarta Group (TomCat Web Server) • cetus JSP Definição JSP é uma tecnologia que permite a criação de páginas web que exibem um conteúdo gerado dinamicamente. Uma página JSP usa tags XML e scriplets escritos em Java para encapsular a lógica que gera o conteúdo exibido pela página. Mecanismo Básico Navegador Usuário fornece um valor no formulário e pressiona o botäo de submissão Servidor Envia requisição de uma página JSP ao servidor, incluindo dados do formulário Interpreta JSP e usa dados do formulário para gerar a resposta Resposta é exibida na janela do navegador TEMPO Envia resposta ao navegador contendo código HTML Exemplo Simples ExemploSimples.html FORM HTML ExemploSimples.jsp ACTION HTML + Java ExemploSimples.html <HTML> <HEAD> <TITLE> Exemplo Simples de JSP </TITLE> </HEAD> </BODY> <P> Quantas vezes? </P> <FORM METHOD="GET" ACTION= "ExemploSimples.jsp" > <INPUT TYPE="TEXT" SIZE="2" NAME="numvezes"> <INPUT TYPE="SUBMIT"> </FORM> </BODY> </HTML> ExemploSimples.jsp <%@ page language = "java" %> <HTML> <HEAD> <TITLE> Exemplo Simples de JSP </TITLE> </HEAD> <BODY> <P> <% int numTimes = Integer.parseInt( request.getParameter( "numvezes" ) ); for (int i = 0; i < numTimes; i++) { %> janeiro<BR> <% } %> </P> </BODY> </HTML> JSP e Servlets Documentos JSP Tradutor JSP Documentos Comuns Servelts compilados Máquina Servlet Servidor Web Requisição HTTP Resposta HTTP Cliente J2EE Java 2 Enterprise Edition CLIENTE DADOS LÓGICA JDBC XML/HTML Tradutor JSP Applet Servidor Web Máquina Servlets Applicação Cliente Beans JavaMail Banco de Dados Servidor de Mail JNDI Serviço de Diretório RMI Aplicação Java IIOP Aplicação CORBA J2EE • • • • • Interação via HTTP com servidores Web Suporte a sessões Suporte a transação Representação de dados como objetos Disponibilidade das APIs de Java para acesso a dados • Flexibilidade na combinação de JSP e XML para a produção de páginas dinâmicas JSP versus CGI • JSP mantém estado no servidor entre sessões • Cria uma nova thread para cada requisição • Não precisa ser carregado toda vez, depois de iniciado • Executa em uma JVM previamente carregada como uma extensão de um servidor Web JSP versus ASP • JSPs são interpretados apenas uma vez (traduzidos para byte-code) e reinterpretados somente quando o arquivo é modificado, o que possibilita melhor desempenho na média • JSPs executam nos principais servidores Web • JSPs permitem melhor separação entre código e dados através de beans e bibliotecas de tags. Scriplet gerando HTML <%@page language = "java" %> <HTML> <HEAD> <TITLE> Exemplo de Scriplet </TITLE> </HEAD> <BODY> <H1> Exemplo de Scriptlet </H1> <% for (int i=0; i<10; i++) { out.print( "<b> Rodada numero: " + i + "</b>" ); out.print( "<p>" ); System.out.println( “Execucao ” + i ); } %> </BODY> </HTML> Expressões • O símbolo “!” indica que a expressão é avaliada somente uma vez, quando o servlet é gerado. • O símbolo “=” indica que a expressão deve ser avaliada toda vez que a página for acessada. – o resultado da expressão é enviado para o cliente ( corresponde ao comando out.print ) Exemplo de expressão <%@page language = "java" %> <HTML> <HEAD> <TITLE> Exemplo de Expressao </TITLE> </HEAD> <BODY> <H1> Contador de acessos </H1> <%! int i = 0; %> <% i++; %> Contagem de acesso: <%= "exatamente " + i + " vezes" %> </BODY> </HTML> Diretiva page - exemplo <%@ page language=“java” import=“java.rmi.*,java.util.*” session=“true” buffer=“12kb” autoFlush=“true” info=“minha pagina preferida” errorPage=“Error.jsp” isErrorPage=“false” isThreadSafe=“false” %> <html> <body> <h1>exemplo de diretivas</h1> <body> </html> Diretiva include Permite a inclusão de um arquivo em um local específico do arquivo JSP. O arquivo incluído não pode ser outra página dinâmica. Exemplo: <% include file=“copyright.html” %>