JSP JavaServer Pages Alcides Calsavara www.ppgia.pucpr.br/~alcides 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. Exemplo de Scriplet <%@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> Scriplet para informar o tempo <%@page language = "java" %> <HTML> <HEAD> <TITLE> Scriplet para informar o tempo </TITLE> </HEAD> <BODY> <H1> Scriptlet para informar o tempo </H1> <% java.util.Date tempo = new java.util.Date( ); out.print( tempo ); %> </BODY> </HTML> 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 Repeticao.html FORM HTML RepeteString.jsp ACTION HTML + Java Repeticao.html <HTML> <HEAD> <TITLE> Exemplo Simples de JSP </TITLE> </HEAD> </BODY> <P> Quantas vezes? </P> <FORM METHOD="GET" ACTION= “RepeteString.jsp" > <INPUT TYPE="TEXT" SIZE="2" NAME="numvezes"> <INPUT TYPE="SUBMIT"> </FORM> </BODY> </HTML> RepeteString.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> 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> 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. Exemplo de beans ExemploBeans.html FORM HTML ExemploBeans.jsp ACTION HTML + Java SpellCheck.class (bean) ExemploBeans.html <HTML> <HEAD> <TITLE> Exemplo de Beans </TITLE> </HEAD> <BODY bgcolor="#FFFFFF"> <FORM ACTION="ExemploBeans.jsp" method="POST" > Forneca uma palavra: <INPUT TYPE="text" name="word" > <select name="mode" > <option value="1" selected>Reverse</option> <option value="2" >Spellcheck</option> </select> <input type="submit" name="Go" value="Submit" > </FORM> </BODY> </HTML> ExemploBeans.jsp <%@page language = "java" %> <jsp:useBean id="help" scope="request" class="ACalsavara.B.SpellCheck" /> <jsp:setProperty name="help" property="*" /> <HTML> <HEAD> <TITLE> Exemplo de Bean </TITLE> </HEAD> <BODY> Voce forneceu a entrada: <b> <%= request.getParameter("word") %> <b> <br> A correspondente saida eh: <br> <%= Integer.parseInt( request.getParameter( "mode" ) ) == 1 ? help.reverse( ) : " " + help.check( ) %> </BODY> </HTML> SpellCheck.java package ACalsavara.B; public class SpellCheck { private String word; public SpellCheck( ) { } public String reverse( ) { return (new StringBuffer (word).reverse( ) ).toString( ); } public boolean check( ) { return true; } public String getWord( ) { return word; } public void setWord( String aWord ) { word = aWord; } } Exemplo de beans - instalação webapps ROOT ACalsavara B ExemploBeans.html ExemploBeans.jsp Web-inf classes ACalsavara B SpellCheck.class Diretiva page - exemplo <%@ page language=“java” import=“java.rmi.*,java.util.*” session=“true” buffer=“12kb” autoFlush=“true” info=“minha pagina preferida” erroPage=“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” %>