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” %>
Download

JSP - PUCPR