slides

Propaganda
Programação II – Programação para
a Web
Christopher Burrows
Apache Tomcat
O
Apache Tomcat é um Servlet Container
desenvolvido pela Apache Software
Foundation.
 Implementa as tecnologias Java Servlets e
Java Server Pages (JSP).
 http://tomcat.apache.org/
Java Servlets


Os Servlets são programas que correm num
servidor Web, permitindo gerar páginas
dinamicamente consoante cada pedido (Http
Request).
São utilizados em diversas situações:
–
–
–
O conteúdo da página varia consoante dados submetidos
pelo cliente;
Os dados são constantemente alterados;
A página utiliza dados obtidos em Bases de dados ou
outras fontes.
Java Server Pages
O
Java Server Pages (JSP) é uma
tecnologia que, à semelhança dos Java
Servlets, permite gerar páginas
dinamicamente.
 A principal vantagem sobre os Servlets é que
o JSP permite fundir código HTML estático
com código HTML gerado dinamicamente.
Java Server Pages
 Não
existem diferenças a nivel de
capacidade entre os Java Servlets e JSPs,
pelo que tudo o que é possivel fazer com
um, também é possivel com o outro.
 No entanto, é muito mais conveniente
escrever e alterar código HTML “estático”, do
que uma série de printlns.
Apache Tomcat - Instalação


Instalação da versão 6.0.16, disponivel em
http://tomcat.apache.org
Apache Tomcat – Instalação
Apache Tomcat – Instalação
Porta a utilizar para os Servlets/JSPs
Apache Tomcat - Instalação
Directoria onde está instalado o JRE
Apache Tomcat – Testar o Servidor
 Após
a Instalação, abrir o “Monitor Tomcat”
(Iniciar > Programas > Apache Tomcat 6.0 >
Monitor Tomcat)
 Iniciar o Tomcat através do Monitor.
 Para testar o servidor, tentar abrir a página
http://localhost:8080/ (a porta 8080 é a que
tiver sido definida durante a instalação).
Apache Tomcat – Testar o Servidor

O browser deverá apresentar a seguinte página:
Apache Tomcat - Configuração
 Após
a instalação do Tomcat, é necessário
fazer a sua configuração no Eclipse.
 Para isto deverá ser utilizada a última versão
do Eclipse IDE para Java EE ou, se utilizar o
Eclipse IDE normal, instalar o Web Tools
Platform.
Apache Tomcat - Configuração
 Na
secção Preferences do Eclipse (Window
> Preferences), do lado esquerdo deverá
aparecer agora uma opção Server e por
baixo desta, uma opção Installed Runtimes.
 Adicionar o runtime do Tomcat. (Add >
Seleccionar o Apache Tomcat v6.0, e depois
indicar a directoria onde este se encontra
instalado)
Java Servlets

Tempo de vida de um Servlet:
–
init:

–
service:

–
É chamado pelo servidor para que o servlet responda a um
pedido (reencaminha para o doGet/doPost/do*).
doGet, doPost, do*:

–
Só é chamado uma vez, que é quando o Servlet é corrido da
primeira vez.
Tratam dos pedidos do cliente, devem ser implementados
para terem o comportamento desejado.
destroy:

É chamado quando o servidor fecha a instância do servlet.
Java Servlets - Exemplos

Um Servlet simples para gerar texto:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class OlaServlet extends javax.servlet.http.HttpServlet implements
javax.servlet.Servlet {
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter saida = response.getWriter();
saida.println("Olá Mundo!");
}
}
Java Servlets - Exemplo
O
Servlet acima descrito apenas imprime
uma página com o texto “Olá Mundo!”, sem
formatação.
O
seguinte exemplo descreve uma página
em HTML com o texto “Olá Mundo!”.
Java Servlets – Exemplo 2

Um Servlet simples para gerar HTML:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class OlaServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter saida = response.getWriter();
saida.println("<html>");
saida.println("<head>");
saida.println("<title>Olá Mundo!</title>");
saida.println("</head>");
saida.println("<body>");
saida.println("<p>Olá Mundo!</p>");
saida.println("</body>");
saida.println("</html>");
}
}
Java Servlets – Exemplo 3
 Os
exemplos anteriores geram páginas
estáticas, no entanto a potencialidade dos
Servlets parte da capacidade de gerar
páginas dinâmicas.
 O seguinte exemplo descreve o método
doGet de um Servlet que recebe dois
parâmetros (nome e apelido) e imprime uma
página HTML com o texto “Olá (nome)
(apelido)!”.
Java Servlets – Exemplo 3
 Desenhe
um formulário em html com duas
caixas de texto e um botão de submeter.
 A acção do formulário deverá indicar o
caminho para o servlet, e o método deverá
ser o “GET”.
 As caixas de texto deverão chamar-se
“nome” e “apelido”.
Java Servlets – Exemplo 3
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
String nome = request.getParameter("nome");
String apelido = request.getParameter("apelido");
PrintWriter saida = response.getWriter();
saida.println("<html>");
saida.println("<head>");
saida.println("< p>Olá " + nome + " " + apelido + "!</ title>");
saida.println("</head>");
saida.println("<body>");
saida.println("<p>Olá " + nome + " " + apelido + "!</p>");
saida.println("</body>");
saida.println("</html>");
}
Java Servlets – Exemplo 3
O
exemplo anterior funciona se o formulário
que enviar os dados utiliza o método “GET”.
 Para o “POST” será necessário utilizar o
método doPost().
 A principal diferença entre estes dois
métodos é que no método “POST” as
variáveis não aparecem no endereço.
Java Servlets
 Para
além dos métodos identificados no
tempo de vida do Servlet, existem outros
elementos importantes:
–
–
–
–
–
HttpServletRequest;
HttpServletResponse;
HttpSession;
PrintWriter;
ServletContext;
Java Servlets

HttpServletRequest:
–

HttpServletResponse:
–

Representa os pedidos do cliente (ex: métodos
GET/POST).
Identifica a resposta dada ao cliente (ex: tipo de resposta).
HttpSession:
–
Identifica a sessão HTTP em uso (ex: pode-se saber
quando o utilizador acedeu à primeira página).
Java Servlets
 PrintWriter:
–
Permite imprimir texto (ex: System.out).
 ServletContext:
–
Identifica o ambiente aplicacional do Servlet (ex:
partilhar variáveis/objectos entre todos os servlets
no Container).
Java Server Pages - Exemplo

Exemplo de um JSP simples:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://
www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Olá mundo!</title>
</head>
<body>
<% String s = new String("Olá mundo!"); %>
<%= s %>
</body>
</html>
Java Server Pages - Exemplo
 Como
se pode ver, a mesma página é muito
mais perceptivel em JSP que num Servlet.
 Com os JSPs é mais fácil desenhar uma
página num programa próprio para tal (ex:
Frontpage), levando a uma possivel divisão
entre o HTML e o código que gera o
conteúdo.
Exercicio:
 Implementar
o Exemplo 3 dos Servlets em
JSP, utilizando o mesmo formulário (só
altera a acção).
 O método de recepção dos valores é o
mesmo que para os Servlets
(request.getParameter(“parametro”);).
Download