Está en la página 1de 41

Fazendo requisies (GET)

Prtica acompanhada 1
[http://exemplos.googlecode.com/svn/trunk/scwcd/pa01/]

Fbio Nogueira de Lucena Instituto de Informtica (UFG)

GET

Exemplo

http://www.google.com

Exemplo com argumentos

http://www.google.com.br/search?q=kyriosdata

Em html (index.html)

<html> <body> Use <a href=GET?a=x>get</a> </body> </html>

Passos

Crie o diretrio correspondente aplicao web (


WEB-INF WEB-INF/classes

Crie o arquivo index.html (veja slide anterior) Crie o descritor de implantao (web.xml) Crie Servlet que exibe argumentos recebidos, cas Compile, implante, inicie o Tomcat e experimente

Descritor de implantao (web.xml)


<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<servlet> <servlet-name>Identificador</servlet-name> <servlet-class>ObtemArgumento</servlet-class> </servlet> <servlet-mapping> <servlet-name>Identificador</servlet-name> <url-pattern>/GET</url-pattern> </servlet-mapping>

</web-app>

Servlet
import java.io.*; import javax.servlet.ServletException; import javax.servlet.http.*;
public class ObtemArgumento extends HttpServlet { public void service(HttpServletRequest r, HttpServletResonse s) throws ServletException, IOException { PrintWriter pw = s.getWriter(); String parametro = r.getParameter(a); pw.println(<html><body>); pw.println(<h1>Parmetro</h1>); pw.println(Argumento: a<br>Valor: + parametro); pw.println(</body></html>); } }
5

Compilao...

Para compilar necessrio servlet-api.jar Coloque em seu CLASSPATH

set CLASSPATH=%CLASSPATH%;<aqui> (win) CLASSPATH=$CLASSPATH:<aqui> (linux) javac -cp <aqui> ... startup.bat (windows) startup.sh (Linux) http://localhost:8080/pa01 (carrega index.html) http://localhost:8080/pa01/GET?a=testando
6

Para iniciar o Tomcat

Experimentar

Resultado

Fazendo requisies POST

Prtica acompanhada 2
[http://exemplos.googlecode.com/svn/trunk/scwcd/pa02/]

POST

Exemplo HTML
<html><body> <form name=teste method=POST action=/pa02/POST> <input type=text name=a> <input type=submit name=botao value=Envie> </form> </body></html>

Crie o diretrio pa02 e neste

Acrescente o arquivo index.html (veja acima) WEB-INF (conter web.xml) WEB-INF/classes (conter o Servlet)

Descritor de implantao (web.xml)


<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<servlet> <servlet-name>pa02</servlet-name> <servlet-class>ObtemArgumento</servlet-class> </servlet> <servlet-mapping> <servlet-name>pa02</servlet-name> <url-pattern>/POST</url-pattern> </servlet-mapping>

</web-app>

10

Servlet, compilao, ...

Para experimentar

http://localhost:8080/pa02 URL do browser no mostra ?a=...

11

Quando usar GET? Quando usar POST?

GET

Tipo de dado: texto (visvel por meio da URL) Quantidade de dados: em geral 255 caracteres Tipo de dado: qualquer (no visvel pela URL) Quantidade de dados: ilimitada Use GET para recuperar arquivo HTML, figura, ... Use POST para enviar dados (formulrio, senha, ...)

POST

Dicas:

12

Tratando requisies

Mtodos de HttpServlet

Mtodo HTTP x mtodos HttpServlet

GET

doGet() doHead() doPost() doPut() doDelete() doOptions() doTrace()


14

HEAD

POST

PUT

DELETE

OPTIONS

TRACE

Seqncia tpica de uma requisio

15

Obtendo todos os parmetros

Prtica acompanhada 3 Exibindo parmetros


[http://exemplos.googlecode.com/svn/trunk/scwcd/pa03/]

Processo de criao de um servlet

Crie o diretrio do servlet (pa03) e neste...


WEB-INF (dir) WEB-INF/classes (dir) Deposite-o em pa03/WEB-INF Deposite-o em pa03/WEB-INF/classes

Crie descritor de implantao (web.xml)

Crie o servlet (ExibeParametros.java)

Compile o Servlet Inicie o tomcat

Passaremos item por item...


17

Grave em sua mente...

Todo Servlet fornecido em um diretrio a ser depositad Por exemplo

exemplo WEB-INF

Neste diretrio h pelo menos um outro

No qual encontra-se web.xml No qual existe pelo menos o diretrio classes

18

Em WEB-INF encontra-se web.xml


<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<servlet> <servlet-name>Identificador</servlet-name> <servlet-class>ExibeParametros</servlet-class> </servlet> <servlet-mapping> <servlet-name>Identificador</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>

</web-app>

19

Estrutura tpica de um Servlet (HTTP)


import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MeuServlet extends HttpServlet { // Aqui sobrescrito doGet, doPost, ... // Observe que temos sobrescrito service() }

20

Servlet tpico que sobrescreve doGet


import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
public class ExibirParametros extends HttpServlet { public void doGet(HttpServletRequest r, HttpServletResonse s) throws ServletException, IOException { // Cdigo que trata requisio GET } }

21

Servlet que sobrescreve doGet


import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
public class ExibirParametros extends HttpServlet { public void doGet(HttpServletRequest r, HttpServletResonse s) throws ServletException, IOException { // Exibindo todos os parmetros PrintWriter pw = s.getWriter(); pw.println(<html><body>); pw.println(<h1>Simples resposta</h1>); pw.println(</body></html);

} }

22

doGet()
PrintWriter pw = res.getWriter(); pw.println(<html><body>); pw.println(<h1>ExibeParametros</h1>);
Enumeration pars = req.getParameterNames(); String parametro; while (pars.hasMoreElements()) { parametro = (String) pars.nextElement(); pw.println(<br> + parametro + : ); pw.println(req.getParameter(parametro)); } pw.println(</body></html>);

23

doGet() alternativo ao anterior


PrintWriter pw = req.getWriter(); pw.println(<html><body>); pw.println(<h1>ExibeParametros</h1>); Map<String,String[]> pars = req.getParameterMap(); for (String parametro : pars.keySet()) { pw.println("<br>" + parametro); for (String valor : pars.get(parametro)) pw.println(valor + " "); }
Este cdigo corrige erro do anterior, que obtinha apenas um valor por parmetro. De fato, vrios podem ser definidos.

24

Requisies e retornos correspondentes

http://localhost:8080/pa03 Apenas o ttulo ExibeParametros mostrado http://localhost:8080/pa03?a=1&b=2 Alm do ttulo seguem duas linhas: a: 1 b: 2

25

Resultado

Observe no browser o motivo pelo qual o mtodo

26

Mtodo POST

Prtica acompanhada 4
[http://exemplos.googlecode.com/svn/trunk/scwcd/pa04/]

Problema

Crie pgina que captura o nome de uma cidade e Ao pressionar boto Envie, servidor retorna as i O contexto da aplicao dever ser pa04 Nome do Servlet dever ser pesquisa Classe que implementa ser Pesquisa URL da consulta ser /pesquisa

28

Soluo

Crie estrutura

diretrio pa04

subdiretrio WEB-INF

subdiretrio classes

Crie pgina inicial (index.html) Crie descritor de aplicao (web.xml)

Observe restries no slide anterior

29

Pgina HTML (index.html)


<html> <body> <form name=pesquisa action=/pa04/pesquisa method=POST> <br> Cidade: <input name=cidade type=text> <br><br> Estado: <input name=estado type=text> <br><br> <input value=Envie type=submit> </form> </body> </html>

30

web.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<servlet> <servlet-name>Pesquisa</servlet-name> <servlet-class>Pesquisa</servlet-class> </servlet> <servlet-mapping> <servlet-name>Pesquisa</servlet-name> <url-pattern>/pesquisa</url-pattern> </servlet-mapping> </web-app>

31

Assinatura do mtodo doPost()


protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
// Coloque aqui cdigo para tratar // requisio de mtodo POST }

32

doPost()
PrintWriter pw = res.getWriter(); pw.println(<html><body>); pw.println(<h1>Pesquisa de Opinio</h1>); pw.println(Sua cidade preferida: <b>); pw.println(req.getParameter(cidade)); pw.println(</b><br>); pw.println(Estado: <b>); pw.println(req.getParameter(estado)); pw.println(</b><br><br>); pw.println(Muito obrigado!);

33

Execuo

URL (http://localhost:8080/pa04)

Arquivo index.html carregado

34

Retorno fornecido pelo servlet...

35

Tarefa

[http://exemplos.googlecode.com/svn/trunk/scwcd/pa05/]

Problema

Uma mensagem HTTP tem como um de seus ele O cabealho formado por vrias entradas. Faa um servlet que exiba todos os cabealhos d Dicas

HttpServletRequest.getHeaderNames() HttpServletRequest.getHeader(String)

37

Tarefas

[http://exemplos.googlecode.com/svn/trunk/scwcd/pa06/]

Problema

Lista de opes de pelo menos trs portais distint Usurio seleciona uma das opes e clica em bo Observe que o Servlet ir redirecionar o browser,

39

Dicas

HttpServletResponse.sendRedirect()

Use um form com o elemento select.

<select name=portal size=2> <option value=CNN>CNN</option> ... </select>

Obtenha o valor do parmetro portal e compare


Se houver igualdade, ento redirecione para o portal c Seno, gere uma exceo
throw new RuntimeException(Algo estranho)

40

Resultado (veja argumento invlido)

41

También podría gustarte