Fazendo requisições (GET) Prática acompanhada 1 [ http://exemplos.googlecode.com/svn/trunk/scwcd/pa01/ ]  Fábio Nogueira d...
GET <ul><li>Exemplo </li></ul><ul><ul><li>http://www.google.com </li></ul></ul><ul><li>Exemplo com argumentos </li></ul><u...
Passos <ul><li>Crie o diretório correspondente à aplicação web ( pa01 ) com seus subdiretórios </li></ul><ul><ul><li>WEB-I...
Descritor de implantação (web.xml) <ul><li><?xml version=&quot;1.0&quot; encoding=&quot; ISO-8859-1 &quot;?> </li></ul><ul...
Servlet <ul><li>import java.io.*; </li></ul><ul><li>import javax.servlet.ServletException; </li></ul><ul><li>import javax....
Compilação... <ul><li>Para compilar é necessário  servlet-api.jar </li></ul><ul><li>Coloque em seu  CLASSPATH </li></ul><u...
Resultado
Fazendo requisições POST Prática acompanhada 2 [ http://exemplos.googlecode.com/svn/trunk/scwcd/pa02/ ]
POST <ul><li>Exemplo HTML <html><body> <form name=“teste” method=“ POST ” action=“ /pa02/POST ”> <input type=“text” name=“...
Descritor de implantação (web.xml) <ul><li><?xml version=&quot;1.0&quot; encoding=&quot; ISO-8859-1 &quot;?> </li></ul><ul...
Servlet, compilação, ... <ul><li>Para experimentar </li></ul><ul><ul><li>http://localhost:8080/pa02 </li></ul></ul><ul><ul...
Quando usar GET? Quando usar POST? <ul><li>GET </li></ul><ul><ul><li>Tipo de dado:  texto  (visível por meio da URL) </li>...
Tratando requisições Métodos de HttpServlet
Método HTTP x métodos HttpServlet  <ul><li>GET </li></ul><ul><ul><li>doGet () </li></ul></ul><ul><li>HEAD </li></ul><ul><u...
Seqüência típica de uma requisição
Obtendo todos os parâmetros Prática acompanhada 3 Exibindo parâmetros [ http://exemplos.googlecode.com/svn/trunk/scwcd/pa0...
Processo de criação de um servlet <ul><li>Crie o diretório do servlet ( pa03 ) e neste... </li></ul><ul><ul><li>WEB-INF  (...
Grave em sua mente... <ul><li>Todo Servlet é fornecido em um diretório a ser depositado em  webapps </li></ul><ul><li>Por ...
Em WEB-INF encontra-se web.xml <ul><li><?xml version=&quot;1.0&quot; encoding=&quot; ISO-8859-1 &quot;?> </li></ul><ul><li...
Estrutura típica de um Servlet (HTTP) <ul><li>import java.io.*; </li></ul><ul><li>import javax.servlet.*; </li></ul><ul><l...
Servlet típico que sobrescreve doGet <ul><li>import java.io.*; </li></ul><ul><li>import javax.servlet.*; </li></ul><ul><li...
Servlet que sobrescreve doGet <ul><li>import java.io.*; </li></ul><ul><li>import javax.servlet.*; </li></ul><ul><li>import...
doGet() <ul><li>PrintWriter pw = res.getWriter(); </li></ul><ul><li>pw.println(“ <html><body> ”); </li></ul><ul><li>pw.pri...
doGet() alternativo ao anterior <ul><li>PrintWriter pw = req.getWriter(); </li></ul><ul><li>pw.println(“<html><body>”); </...
Requisições e retornos correspondentes <ul><li>http://localhost:8080/pa03   Apenas o título ExibeParametros é mostrado </l...
Resultado <ul><li>Observe no  browser  o motivo pelo qual o método GET não é adequado para enviar informações sigilosas </...
Método POST Prática acompanhada 4 [ http://exemplos.googlecode.com/svn/trunk/scwcd/pa04/ ]
Problema <ul><li>Crie página que captura o nome de uma cidade e o estado correspondente por meio do arquivo  index.html </...
Solução <ul><li>Crie estrutura </li></ul><ul><ul><li>diretório  pa04 </li></ul></ul><ul><ul><ul><li>subdiretório  WEB-INF ...
Página HTML (index.html) <ul><li><html> </li></ul><ul><li><body> </li></ul><ul><li><form name=“pesquisa” action=“/pa04/pes...
web.xml <ul><li><?xml version=&quot;1.0&quot; encoding=&quot; ISO-8859-1 &quot;?> </li></ul><ul><li>< web-app  xmlns=&quot...
Assinatura do método doPost() <ul><li>protected void  doPost (HttpServletRequest  req, </li></ul><ul><li>HttpServletRespon...
doPost() <ul><li>PrintWriter pw = res.getWriter(); </li></ul><ul><li>pw.println(“<html><body>”); </li></ul><ul><li>pw.prin...
Execução <ul><li>URL ( http://localhost:8080/pa04 ) </li></ul><ul><ul><li>Arquivo  index.html  é carregado </li></ul></ul>
Retorno fornecido pelo servlet...
Tarefa [ http://exemplos.googlecode.com/svn/trunk/scwcd/pa05/ ]
Problema <ul><li>Uma mensagem HTTP tem como um de seus elementos um  header  ou cabeçalho </li></ul><ul><li>O cabeçalho é ...
Tarefas [ http://exemplos.googlecode.com/svn/trunk/scwcd/pa06/ ]
Problema <ul><li>Lista de opções de pelo menos três portais distintos é exibida por meio de  index.html </li></ul><ul><li>...
Dicas <ul><li>HttpServletResponse.sendRedirect() </li></ul><ul><li>Use um  form  com o elemento  select .  </li></ul><ul><...
Resultado (veja argumento “inválido”)
Upcoming SlideShare
Loading in...5
×

servlet-requisicoes

3,168

Published on

Servlets (requisições)

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,168
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
132
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

servlet-requisicoes

  1. 1. Fazendo requisições (GET) Prática acompanhada 1 [ http://exemplos.googlecode.com/svn/trunk/scwcd/pa01/ ] Fábio Nogueira de Lucena Instituto de Informática (UFG)
  2. 2. GET <ul><li>Exemplo </li></ul><ul><ul><li>http://www.google.com </li></ul></ul><ul><li>Exemplo com argumentos </li></ul><ul><ul><li>http://www.google.com.br/search?q=kyriosdata </li></ul></ul><ul><li>Em html (index.html) </li></ul><ul><li><html> </li></ul><ul><li><body> </li></ul><ul><li>Use <a href=“GET?a=x”>get</a> </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
  3. 3. Passos <ul><li>Crie o diretório correspondente à aplicação web ( pa01 ) com seus subdiretórios </li></ul><ul><ul><li>WEB-INF </li></ul></ul><ul><ul><li>WEB-INF/classes </li></ul></ul><ul><li>Crie o arquivo index.html (veja slide anterior) </li></ul><ul><li>Crie o descritor de implantação ( web.xml ) </li></ul><ul><li>Crie Servlet que exibe argumentos recebidos, caso existam (veja slide seguinte) </li></ul><ul><li>Compile, implante, inicie o Tomcat e experimente </li></ul>
  4. 4. Descritor de implantação (web.xml) <ul><li><?xml version=&quot;1.0&quot; encoding=&quot; ISO-8859-1 &quot;?> </li></ul><ul><li>< web-app xmlns=&quot;http://java.sun.com/xml/ns/j2ee&quot; </li></ul><ul><li>xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; </li></ul><ul><li>xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/j2ee </li></ul><ul><li>http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot; </li></ul><ul><li>version=&quot;2.4&quot;> </li></ul><ul><li>< servlet > </li></ul><ul><li><servlet-name>Identificador</servlet-name> </li></ul><ul><li><servlet-class>ObtemArgumento</servlet-class> </li></ul><ul><li></ servlet > </li></ul><ul><li>< servlet-mapping > </li></ul><ul><li><servlet-name>Identificador</servlet-name> </li></ul><ul><li><url-pattern>/GET</url-pattern> </li></ul><ul><li></ servlet-mapping > </li></ul><ul><li></ web-app > </li></ul>
  5. 5. Servlet <ul><li>import java.io.*; </li></ul><ul><li>import javax.servlet.ServletException; </li></ul><ul><li>import javax.servlet.http.*; </li></ul><ul><li>public class ObtemArgumento extends HttpServlet { </li></ul><ul><li>public void service ( HttpServletRequest r, </li></ul><ul><li>HttpServletResonse s) </li></ul><ul><li>throws ServletException, IOException { </li></ul><ul><li>PrintWriter pw = s.getWriter(); </li></ul><ul><li>String parametro = r.getParameter(“a”); </li></ul><ul><li>pw.println(“<html><body>”); </li></ul><ul><li>pw.println(“<h1>Parâmetro</h1>”); </li></ul><ul><li>pw.println(“Argumento: a<br>Valor: ” + parametro); </li></ul><ul><li>pw.println(“</body></html>”); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  6. 6. Compilação... <ul><li>Para compilar é necessário servlet-api.jar </li></ul><ul><li>Coloque em seu CLASSPATH </li></ul><ul><ul><li>set CLASSPATH=%CLASSPATH%;<aqui> (win) </li></ul></ul><ul><ul><li>CLASSPATH=$CLASSPATH:<aqui> (linux) </li></ul></ul><ul><ul><li>javac -cp <aqui> ... </li></ul></ul><ul><li>Para iniciar o Tomcat </li></ul><ul><ul><li>startup.bat (windows) startup.sh (Linux) </li></ul></ul><ul><li>Experimentar </li></ul><ul><ul><li>http://localhost:8080/pa01 (carrega index.html) </li></ul></ul><ul><ul><li>http://localhost:8080/pa01/GET?a=testando </li></ul></ul>
  7. 7. Resultado
  8. 8. Fazendo requisições POST Prática acompanhada 2 [ http://exemplos.googlecode.com/svn/trunk/scwcd/pa02/ ]
  9. 9. POST <ul><li>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> </li></ul><ul><li>Crie o diretório pa02 e neste </li></ul><ul><ul><li>Acrescente o arquivo index.html (veja acima) </li></ul></ul><ul><ul><li>WEB-INF (conterá web.xml ) </li></ul></ul><ul><ul><li>WEB-INF/classes (conterá o Servlet) </li></ul></ul>
  10. 10. Descritor de implantação (web.xml) <ul><li><?xml version=&quot;1.0&quot; encoding=&quot; ISO-8859-1 &quot;?> </li></ul><ul><li>< web-app xmlns=&quot;http://java.sun.com/xml/ns/j2ee&quot; </li></ul><ul><li>xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; </li></ul><ul><li>xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/j2ee </li></ul><ul><li>http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot; </li></ul><ul><li>version=&quot;2.4&quot;> </li></ul><ul><li>< servlet > </li></ul><ul><li><servlet-name>pa02</servlet-name> </li></ul><ul><li><servlet-class>ObtemArgumento</servlet-class> </li></ul><ul><li></ servlet > </li></ul><ul><li>< servlet-mapping > </li></ul><ul><li><servlet-name>pa02</servlet-name> </li></ul><ul><li><url-pattern>/POST</url-pattern> </li></ul><ul><li></ servlet-mapping > </li></ul><ul><li></ web-app > </li></ul>
  11. 11. Servlet, compilação, ... <ul><li>Para experimentar </li></ul><ul><ul><li>http://localhost:8080/pa02 </li></ul></ul><ul><ul><li>URL do browser não mostra “?a=...” </li></ul></ul>
  12. 12. Quando usar GET? Quando usar POST? <ul><li>GET </li></ul><ul><ul><li>Tipo de dado: texto (visível por meio da URL) </li></ul></ul><ul><ul><li>Quantidade de dados: em geral 255 caracteres </li></ul></ul><ul><li>POST </li></ul><ul><ul><li>Tipo de dado: qualquer (não visível pela URL) </li></ul></ul><ul><ul><li>Quantidade de dados: ilimitada </li></ul></ul><ul><li>Dicas: </li></ul><ul><ul><li>Use GET para recuperar arquivo HTML, figura, ... </li></ul></ul><ul><ul><li>Use POST para enviar dados (formulário, senha, ...) </li></ul></ul>
  13. 13. Tratando requisições Métodos de HttpServlet
  14. 14. Método HTTP x métodos HttpServlet <ul><li>GET </li></ul><ul><ul><li>doGet () </li></ul></ul><ul><li>HEAD </li></ul><ul><ul><li>doHead () </li></ul></ul><ul><li>POST </li></ul><ul><ul><li>doPost () </li></ul></ul><ul><li>PUT </li></ul><ul><ul><li>doPut () </li></ul></ul><ul><li>DELETE </li></ul><ul><ul><li>doDelete () </li></ul></ul><ul><li>OPTIONS </li></ul><ul><ul><li>doOptions () </li></ul></ul><ul><li>TRACE </li></ul><ul><ul><li>doTrace () </li></ul></ul>
  15. 15. Seqüência típica de uma requisição
  16. 16. Obtendo todos os parâmetros Prática acompanhada 3 Exibindo parâmetros [ http://exemplos.googlecode.com/svn/trunk/scwcd/pa03/ ]
  17. 17. Processo de criação de um servlet <ul><li>Crie o diretório do servlet ( pa03 ) e neste... </li></ul><ul><ul><li>WEB-INF (dir) </li></ul></ul><ul><ul><li>WEB-INF/classes (dir) </li></ul></ul><ul><li>Crie descritor de implantação ( web.xml ) </li></ul><ul><ul><li>Deposite-o em pa03/WEB-INF </li></ul></ul><ul><li>Crie o servlet ( ExibeParametros.java ) </li></ul><ul><ul><li>Deposite-o em pa03/WEB-INF/classes </li></ul></ul><ul><li>Compile o Servlet </li></ul><ul><li>Inicie o tomcat </li></ul>Passaremos item por item...
  18. 18. Grave em sua mente... <ul><li>Todo Servlet é fornecido em um diretório a ser depositado em webapps </li></ul><ul><li>Por exemplo </li></ul><ul><ul><li>exemplo </li></ul></ul><ul><li>Neste diretório há pelo menos um outro </li></ul><ul><ul><li>WEB-INF </li></ul></ul><ul><ul><ul><li>No qual encontra-se web.xml </li></ul></ul></ul><ul><ul><ul><li>No qual existe pelo menos o diretório classes </li></ul></ul></ul>
  19. 19. Em WEB-INF encontra-se web.xml <ul><li><?xml version=&quot;1.0&quot; encoding=&quot; ISO-8859-1 &quot;?> </li></ul><ul><li>< web-app xmlns=&quot;http://java.sun.com/xml/ns/j2ee&quot; </li></ul><ul><li>xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; </li></ul><ul><li>xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/j2ee </li></ul><ul><li>http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot; </li></ul><ul><li>version=&quot;2.4&quot;> </li></ul><ul><li>< servlet > </li></ul><ul><li><servlet-name> Identificador </servlet-name> </li></ul><ul><li><servlet-class>ExibeParametros</servlet-class> </li></ul><ul><li></ servlet > </li></ul><ul><li>< servlet-mapping > </li></ul><ul><li><servlet-name> Identificador </servlet-name> </li></ul><ul><li><url-pattern> /* </url-pattern> </li></ul><ul><li></ servlet-mapping > </li></ul><ul><li></ web-app > </li></ul>
  20. 20. Estrutura típica de um Servlet (HTTP) <ul><li>import java.io.*; </li></ul><ul><li>import javax.servlet.*; </li></ul><ul><li>import javax.servlet.http.*; </li></ul><ul><li>public class MeuServlet extends HttpServlet { </li></ul><ul><li>// Aqui é sobrescrito doGet, doPost, ... </li></ul><ul><li>// Observe que temos sobrescrito service() </li></ul><ul><li>} </li></ul>
  21. 21. Servlet típico que sobrescreve doGet <ul><li>import java.io.*; </li></ul><ul><li>import javax.servlet.*; </li></ul><ul><li>import javax.servlet.http.*; </li></ul><ul><li>public class ExibirParametros extends HttpServlet { </li></ul><ul><li>public void doGet( HttpServletRequest r, </li></ul><ul><li>HttpServletResonse s) </li></ul><ul><li>throws ServletException , IOException { </li></ul><ul><li>// Código que trata requisição GET </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  22. 22. Servlet que sobrescreve doGet <ul><li>import java.io.*; </li></ul><ul><li>import javax.servlet.*; </li></ul><ul><li>import javax.servlet.http.*; </li></ul><ul><li>public class ExibirParametros extends HttpServlet { </li></ul><ul><li>public void doGet( HttpServletRequest r, </li></ul><ul><li>HttpServletResonse s) </li></ul><ul><li>throws ServletException , IOException { </li></ul><ul><li>// Exibindo todos os parâmetros PrintWriter pw = s.getWriter(); pw.println(“<html><body>”); </li></ul><ul><li>pw.println(“<h1>Simples resposta</h1>”); pw.println(“</body></html”); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  23. 23. doGet() <ul><li>PrintWriter pw = res.getWriter(); </li></ul><ul><li>pw.println(“ <html><body> ”); </li></ul><ul><li>pw.println(“ <h1>ExibeParametros</h1> ”); </li></ul><ul><li>Enumeration pars = req.getParameterNames(); </li></ul><ul><li>String parametro; </li></ul><ul><li>while (pars.hasMoreElements()) { </li></ul><ul><li>parametro = (String) pars.nextElement(); </li></ul><ul><li>pw.println( “<br>” + parametro + “: “ ); </li></ul><ul><li>pw.println( req.getParameter(parametro) ); </li></ul><ul><li>} </li></ul><ul><li>pw.println(“ </body></html> ”); </li></ul>
  24. 24. doGet() alternativo ao anterior <ul><li>PrintWriter pw = req.getWriter(); </li></ul><ul><li>pw.println(“<html><body>”); </li></ul><ul><li>pw.println(“<h1>ExibeParametros</h1>”); </li></ul><ul><li>Map<String,String[]> pars = req.getParameterMap(); </li></ul><ul><li>for (String parametro : pars.keySet()) { </li></ul><ul><li> pw.println(&quot;<br>&quot; + parametro); </li></ul><ul><li> for (String valor : pars.get(parametro)) </li></ul><ul><li>pw.println(valor + &quot; &quot;); </li></ul><ul><li>} </li></ul>Este código “corrige” erro do anterior, que obtinha apenas um valor por parâmetro. De fato, vários podem ser definidos.
  25. 25. Requisições e retornos correspondentes <ul><li>http://localhost:8080/pa03 Apenas o título ExibeParametros é mostrado </li></ul><ul><li>http://localhost:8080/pa03?a=1&b=2 Além do título seguem duas linhas: a: 1 b: 2 </li></ul>
  26. 26. Resultado <ul><li>Observe no browser o motivo pelo qual o método GET não é adequado para enviar informações sigilosas </li></ul>
  27. 27. Método POST Prática acompanhada 4 [ http://exemplos.googlecode.com/svn/trunk/scwcd/pa04/ ]
  28. 28. Problema <ul><li>Crie página que captura o nome de uma cidade e o estado correspondente por meio do arquivo index.html </li></ul><ul><li>Ao pressionar botão “Envie”, servidor retorna as informações fornecidas para a requisição que emprega o método POST </li></ul><ul><li>O contexto da aplicação deverá ser pa04 </li></ul><ul><li>Nome do Servlet deverá ser pesquisa </li></ul><ul><li>Classe que implementa será Pesquisa </li></ul><ul><li>URL da consulta será /pesquisa </li></ul>
  29. 29. Solução <ul><li>Crie estrutura </li></ul><ul><ul><li>diretório pa04 </li></ul></ul><ul><ul><ul><li>subdiretório WEB-INF </li></ul></ul></ul><ul><ul><ul><ul><li>subdiretório classes </li></ul></ul></ul></ul><ul><li>Crie página inicial (index.html) </li></ul><ul><li>Crie descritor de aplicação ( web.xml ) </li></ul><ul><ul><li>Observe restrições no slide anterior </li></ul></ul>
  30. 30. Página HTML (index.html) <ul><li><html> </li></ul><ul><li><body> </li></ul><ul><li><form name=“pesquisa” action=“/pa04/pesquisa” method=“ POST ”> </li></ul><ul><li><br> </li></ul><ul><li>Cidade: <input name=“cidade” type=“text”> </li></ul><ul><li><br><br> </li></ul><ul><li>Estado: <input name=“estado” type=“text”> </li></ul><ul><li><br><br> </li></ul><ul><li><input value=“Envie” type=“submit”> </li></ul><ul><li></form> </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
  31. 31. web.xml <ul><li><?xml version=&quot;1.0&quot; encoding=&quot; ISO-8859-1 &quot;?> </li></ul><ul><li>< web-app xmlns=&quot;http://java.sun.com/xml/ns/j2ee&quot; </li></ul><ul><li>xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; </li></ul><ul><li>xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/j2ee </li></ul><ul><li>http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot; version=&quot;2.4&quot;> </li></ul><ul><li>< servlet > </li></ul><ul><li><servlet-name> Pesquisa </servlet-name> </li></ul><ul><li><servlet-class>Pesquisa</servlet-class> </li></ul><ul><li></ servlet > </li></ul><ul><li>< servlet-mapping > </li></ul><ul><li><servlet-name> Pesquisa </servlet-name> </li></ul><ul><li><url-pattern> /pesquisa </url-pattern> </li></ul><ul><li></ servlet-mapping > </li></ul><ul><li></ web-app > </li></ul>
  32. 32. Assinatura do método doPost() <ul><li>protected void doPost (HttpServletRequest req, </li></ul><ul><li>HttpServletResponse res) </li></ul><ul><li>throws ServletException , IOException { </li></ul><ul><li>// Coloque aqui código para tratar </li></ul><ul><li>// requisição de método POST </li></ul><ul><li>} </li></ul>
  33. 33. doPost() <ul><li>PrintWriter pw = res.getWriter(); </li></ul><ul><li>pw.println(“<html><body>”); </li></ul><ul><li>pw.println(“<h1>Pesquisa de Opinião</h1>”); </li></ul><ul><li>pw.println(“Sua cidade preferida: <b>”); </li></ul><ul><li>pw.println(req.getParameter(“cidade”)); </li></ul><ul><li>pw.println(“</b><br>”); </li></ul><ul><li>pw.println(“Estado: <b>”); </li></ul><ul><li>pw.println(req.getParameter(“estado”)); </li></ul><ul><li>pw.println(“</b><br><br>”); </li></ul><ul><li>pw.println(“Muito obrigado!”); </li></ul>
  34. 34. Execução <ul><li>URL ( http://localhost:8080/pa04 ) </li></ul><ul><ul><li>Arquivo index.html é carregado </li></ul></ul>
  35. 35. Retorno fornecido pelo servlet...
  36. 36. Tarefa [ http://exemplos.googlecode.com/svn/trunk/scwcd/pa05/ ]
  37. 37. Problema <ul><li>Uma mensagem HTTP tem como um de seus elementos um header ou cabeçalho </li></ul><ul><li>O cabeçalho é formado por várias entradas. </li></ul><ul><li>Faça um servlet que exiba todos os cabeçalhos de uma requisição </li></ul><ul><li>Dicas </li></ul><ul><ul><li>HttpServletRequest.getHeaderNames() </li></ul></ul><ul><ul><li>HttpServletRequest.getHeader(String) </li></ul></ul>
  38. 38. Tarefas [ http://exemplos.googlecode.com/svn/trunk/scwcd/pa06/ ]
  39. 39. Problema <ul><li>Lista de opções de pelo menos três portais distintos é exibida por meio de index.html </li></ul><ul><li>Usuário seleciona uma das opções e clica em botão que faz com que o Servlet, ao receber a requisição, redirecione o browser para o portal selecionado. </li></ul><ul><li>Observe que o Servlet irá redirecionar o browser , ou seja, não se trata de um link em index.html que requisita um dos portais desejados. </li></ul>
  40. 40. Dicas <ul><li>HttpServletResponse.sendRedirect() </li></ul><ul><li>Use um form com o elemento select . </li></ul><ul><ul><li><select name=“portal” size=“2”> <option value=“CNN”>CNN</option> ... </select> </li></ul></ul><ul><li>Obtenha o valor do parâmetro “portal” e compare com CNN, GOOGLE, ... </li></ul><ul><ul><li>Se houver igualdade, então redirecione para o portal correspondente </li></ul></ul><ul><ul><li>Senão, gere uma exceção throw new RuntimeException(“Algo estranho”) </li></ul></ul>
  41. 41. Resultado (veja argumento “inválido”)
  1. ¿Le ha llamado la atención una diapositiva en particular?

    Recortar diapositivas es una manera útil de recopilar información importante para consultarla más tarde.

×