Upload
ledsifes
View
388
Download
1
Embed Size (px)
DESCRIPTION
Slides de introdução à Servlets e JSP .
Citation preview
Servlets e JSPPhillipe [email protected]
Porquê usar Servlets e JSPs?● Você não precisa se preocupar com a distribuição;
● Seus usuários precisam apenas de um browser;
● Te permite a criação de aplicações poderosas;
● Estão na moda :)
O que faz um servidor web?
O que um cliente web faz?
Clientes e servidores conhecem HTML e HTTP
● HTML
○ HyperText Markup Language;○ Todos os browsers sabem o que fazer com HTML;
● HTTP
○ HyperText Transfer Protocol;○ A maioria das conversações que acontecem entre servidores e
clientes usam o protocolo HTTP;○ Permite simples conversas de requisições e respostas;
HTML é parte da resposta HTTP
O que está na requisição● Temos vários tipos de requisições: HEAD, TRACE, PUT, DELETE,
OPTIONS, CONNECT, GET e POST;
● Mas dois são principais: GET e POST;
● GET
○ É o método HTTP mais simples;○ Seu papel principal é pedir ao servidor para pegar um recurso e
enviá-lo de volta para quem pediu;● POST
○ É como se fosse um GET++;○ Você pode enviar dados de um formulário e ao mesmo tempo solicitar
algo do servidor;
O que está na requisição?● Você pode enviar dados por GET;
● Esses dados são anexados à URL;
● Não é bom que se envie dados sensíveis por GET; (senhas)
● Quantidade de caracteres é limitada;
● Se for usado POST ao invés de GET em determinada página, esta página
não poderá ser marcada como favorito, por exemplo;
O que está na requisição?
O que está na requisição?
Estrutura de diretórios para um simples web site Apache
Mão na massa!
Mão na massa!<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd"
version="2.4">
<servlet>
<servlet-name>Chapter1 Servlet</servlet-name>
<servlet-class>Ch1Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Chapter1 Servlet</servlet-name>
<url-pattern>/Serv1</url-pattern>
</servlet-mapping>
</web-app>
Mão na massa!import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Ch1Servlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws IOException {
PrintWriter out = response.getWriter();
java.util.Date today = new java.util.Date();
out.println("<html> " +
"<body>" +
"<h1 align=center>HF\'s Chapter1 Servlet</h1>"
+ "<br>" + today + "</body>" + "</html>");
}
}
Mão na massa!%javac -classpath /your path/tomcat/common/lib/
servlet-api.jar -d classes src/Ch1Servlet.java
Mão na massa!
Mão na massa!startup.bat
Arquitetura de um App Web● Alguém tem que manipular as requisições, chamar os métodos doGet()
doPost() e instanciar seus argumentos: objetos HTTP response e HTTP
request;
● Alguém tem que gerenciar a vida de um Servlet;
● Os Containers fazem este papel;
O que é um Container?● Tomcat é um exemplo de Container. Quando seu servidor web (como o
Apache) recebe uma requisição para um servlet, o servidor envia a
requisição não para o servlet, mas para o Container no qual o servlet é
implantado (deployed). É o Container que dá ao servlet a requisição e
resposta HTTP, e é o Container que chama os métodos do servlet (como
o doPost() e o doGet()).
O que é um Container?
Como o Container manipula uma requisição?
Como o Container manipula uma requisição?
Como o Container manipula uma requisição?
Como o Container acha o Servlet?● Colocando o caminho exato da classe dentro do HTML?
● Usando uma ferramenta do distribuidor do Container?
● Usando algum tipo de tabela de propriedades para guardar os
mapeamentos?
Como o Container acha o Servlet?● Um servlet pode ter até três nomes!
○ Nome de caminho de arquivo. Ex.: classes/registration/SignUpServlet.
class
○ Nome de implantação (deployment name). É um nome interno secreto
que não precisa ser o mesmo que o nome da classe e nem o nome
do arquivo.
○ Nome de URL pública. É o nome que o cliente conhece, em outras
palavras, é o nome codificado dentro do HTML que quando o cliente
clica é direcionado para este servlet.
Como o Container acha o Servlet?
Usando o Deployment Descriptor● Quando você implanta seu servlet dentro de um web Container, você cria
um XML muito simples chamado Deployment Descriptor que diz ao
Container como rodar seus servlets e JSPs.
● O Deployment Descriptor também é usado para mapear URLs para
servlets.
Criando o ambiente de desenvolvimento
Criando o ambiente de implantação
Ciclo de vida de um servlet
Os três grandes momentos da vida de um servlet
● init()
● service()
● doGet() | doPost()
Cada requisição roda em uma thread separada