03 - Formulários & Dados

1,012 views

Published on

Tratamento de formulários com servlets

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

  • Be the first to like this

No Downloads
Views
Total views
1,012
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

03 - Formulários & Dados

  1. 1. Tratando as requisições dos clientes com formulários www.jetsoftware.com.br
  2. 2. Agenda Formulários de dados Criando e submetendo formulários HTML Lendo parâmetros individuais de request. Lendo um conjunto completo de parâmetros de request. Tratando dados incompletos e errados Tratando submissão de formulários incompletos. Filtrando caracteres especiais dos parâmetros de request. www.jetsoftware.com.br
  3. 3. Formulários básicos www.jetsoftware.com.br
  4. 4. A finalidade de formulários de dados URL de exemplo http://host/path?user=Marcio+Marinho&orige m=RJ&dest=SP Parse dos dados ( query ) em CGI tradicional Ler os dados ( QUERY_STRING ) PARA requests de GET, outra forma ( standard input ) para requests POST. Cortar pares, separar os nomes dos parâmetros ( a esquerda do = ) dos valores dos parâmetros ( direita do = ). Decodificação da URL ( “%7E” vira “~”) Muito simples com servlets Use request.getParameter para todos os casos Recebemos o resultado da URL decodificada www.jetsoftware.com.br
  5. 5. Criando formularios de dados (via GET) <!DOCTYPE html PUBLIC quot;-//W3C//DTD HTML 4.01 Transitional//ENquot; quot;http://www.w3.org/TR/html4/loose.dtdquot;> <html> <head> <meta http-equiv=quot;Content-Typequot; content=quot;text/html; charset=ISO-8859-1quot;> <title>Insert title here</title> </head> <body> <form name=quot;meu_formquot; action=“/testeWeb/MeuProgramaquot;> Nome: <input type=quot;textquot; name=quot;nomequot; value=quot;Marcioquot;/> <br> Sobre Nome: <input type=quot;textquot; name=quot;sobreNomequot; value=quot;Marinhoquot;/> <input type=quot;submitquot; value=quot;enviarquot;/> </form> </body> </html> www.jetsoftware.com.br
  6. 6. Formulário de entrada (GET) www.jetsoftware.com.br
  7. 7. Resultado www.jetsoftware.com.br
  8. 8. Criando formularios de dados (via POST) <!DOCTYPE html PUBLIC quot;-//W3C//DTD HTML 4.01 Transitional//ENquot; quot;http://www.w3.org/TR/html4/loose.dtdquot;> <html> <head> <meta http-equiv=quot;Content-Typequot; content=quot;text/html; charset=ISO-8859-1quot;> <title>Insert title here</title> </head> <body> <form name=quot;meu_formquot; action=quot;/testeWeb/MeuProgramaquot; method=quot;POSTquot;> Nome: <input type=quot;textquot; name=quot;nomequot; value=quot;Marcioquot;/> <br> Sobre Nome: <input type=quot;textquot; name=quot;sobreNomequot; value=quot;Marinhoquot;/> <input type=quot;submitquot; value=quot;enviarquot;/> </form> </body> </html> www.jetsoftware.com.br
  9. 9. Formulário de entrada (POST) www.jetsoftware.com.br
  10. 10. Resultado www.jetsoftware.com.br
  11. 11. Lendo dados de formulários www.jetsoftware.com.br
  12. 12. Lendo dados dos formulários dentro do servlet request.getParameter(“nome”); Retorna o valor da URL decodificada da primeira ocorrência do nome na query string. Funciona igualmente para requests GET e POST. Retorna null se o parâmetro não for encontrado request.getParameterValues(“nome”); Retorna um array de valores da URL decodificada de todas ocorrências do nome na query string. Retorna um array de um elemento se o parâmetro não estiver repetido. Retorna null se o parâmetro não existir na query string. request.getParameterNames() ou request.getParameterMap() Retorna uma Enumeration ou Map dos parâmetros do request. Geralmente usados para debug www.jetsoftware.com.br
  13. 13. Formulário com parâmetros <form name=“form_3paramquot; action=quot;/testeWeb/Servlet3Paramquot; method=quot;POSTquot;> Parametro 1: <input type=quot;textquot; name=quot;parametro1quot;/> <br> Parametro 2: <input type=quot;textquot; name=quot;parametro2quot;/> <br> Parametro 3: <input type=quot;textquot; name=quot;parametro3quot;/> <br> <input type=quot;submitquot; value=quot;enviarquot;/> </form> www.jetsoftware.com.br
  14. 14. Lendo os parâmetros response.setContentType(quot;text/htmlquot;); PrintWriter out = response.getWriter(); String docType = quot;<!DOCTYPE HTML PUBLIC quot;-//W3C//DTD HTML 4.0 “ + quot;Transitional//ENquot;>nquot;; String title = quot;Lendo um formulário com 3 parâmetrosquot;; out.println(docType + quot;<HTML>nquot; + quot;<HEAD><TITLE>“ + title + quot;</TITLE></HEAD>nquot; + quot;<BODY BGCOLOR=quot;#FDF5E6quot;>nquot; + quot;<H1 ALIGN=quot;CENTERquot;>quot; + title + quot;</H1>nquot; + quot;<UL>nquot; + quot; <LI><B>parâmetro1</B>: “ + request.getParameter(quot;parametro1quot;) + quot;nquot; + quot; <LI><B>parâmetro2</B>: “ + request.getParameter(quot;parametro2quot;) + quot;nquot; + quot; <LI><B>parâmetro3</B>: “ + request.getParameter(quot;parametro3quot;) + quot;nquot; + quot;</UL>nquot; + quot;</BODY></HTML>quot;); www.jetsoftware.com.br
  15. 15. Resultado www.jetsoftware.com.br
  16. 16. Lendo todos os parâmetros @SuppressWarnings(quot;uncheckedquot;) public void MostraTodosParametros(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(quot;text/htmlquot;); PrintWriter out = response.getWriter(); String docType = quot;<!DOCTYPE HTML PUBLIC quot;-//W3C//DTD HTML 4.0 quot; + quot;Transitional//ENquot;>nquot;; String title = quot;Lendo todos parâmetrosquot;; out.println(docType + quot;<HTML>nquot; + quot;<HEAD><TITLE>quot;+title + quot;</TITLE></HEAD>nquot;+ quot;<BODY BGCOLOR=quot;#FDF5E6quot;>nquot; + quot;<H1 ALIGN=CENTER>quot; + title + quot;</H1>nquot; + quot;<TABLE BORDER=1 ALIGN=CENTER>nquot; + quot;<TR BGCOLOR=quot;#FFAD00quot;>nquot; + quot;<TH>Parameter Name<TH>Parameter Value(s)quot;); www.jetsoftware.com.br
  17. 17. Lendo todos os parâmetros Enumeration paramNames = request.getParameterNames(); while (paramNames.hasMoreElements()) { String paramName = (String) paramNames.nextElement(); out.print(quot;<TR><TD>quot; + paramName + quot;n<TD>quot;); String[] paramValues = request.getParameterValues(paramName); if (paramValues.length == 1) { String paramValue = paramValues[0]; if (paramValue.length() == 0) out.println(quot;<I>Sem Valor</I>quot;); else out.println(paramValue); } else { out.println(quot;<UL>quot;); for (int i = 0; i < paramValues.length; i++) { out.println(quot;<LI>quot; + paramValues[i]); } out.println(quot;</UL>quot;); } } out.println(quot;</TABLE>n</BODY></HTML>quot;); } www.jetsoftware.com.br
  18. 18. Lendo todos os parâmetros formulário www.jetsoftware.com.br
  19. 19. Lendo todos os parâmetros resultado www.jetsoftware.com.br
  20. 20. Tratando dados de formulário www.jetsoftware.com.br
  21. 21. Verificando falta de dados ou dados errados Falta de dados Campo(s) faltando no formulário getParameter retornará null Campo em branco quando o formulário é submetido getParameter retornará uma string vazia (ou pode ser uma string com espaço em branco) Devemos checar por null antes de checarmos por string vazias. String param = request.getParameter(“nome”); if ( (param==null) || (param.trim().equals(“”))) { trateValoresFaltando(...); else facaOutraCoisa(param); } Dados malformados O valor é uma string não vazia, mas num formato errado. www.jetsoftware.com.br
  22. 22. Verificando falta de dados ou dados errados Use valores “default” Trocar valores faltando por valores padrão específicos da aplicação. Veja no próximo exemplo. Exiba o formulário novamente Exiba o formulário de novo, com os valores faltando em destaque. Os valores digitados anteriormente devem ser preservados. Algumas opções para implementar : Ter o mesmo servlet para apresentar o formulário, processar os dados, e apresentar o resultado. Ter um servlet para apresentar o formulário, um segundo servlet para processar os dados e exibir o resultado Ter uma página JSP para apresentar o formulário, um servlet ou JSP para processar os dados e apresentar o resultado. Ter um JSP para apresentar o formulário, preencher automáticamente os valores obtidos em um objeto de dados. Ter um servlet ou página JSP para processar e exibir os resultados. www.jetsoftware.com.br
  23. 23. Tratando dados que faltaram String nomeUsuario = request.getParameter(“nomeUsuario”); nomeUsuario = trocarSeFaltar(nomeUsuario,”guest”); private String trocarSeFaltar(String orig, String destino) { if ((orig == null) || (orig.trim().equals(quot;quot;))) { return(destino); } else { return(orig); } } www.jetsoftware.com.br
  24. 24. Perguntas ? www.jetsoftware.com.br

×