Your SlideShare is downloading. ×
03 - Formulários & Dados
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

03 - Formulários & Dados

738
views

Published on

Tratamento de formulários com servlets

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
738
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Tratando as requisições dos clientes com formulários www.jetsoftware.com.br
  • 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. Formulários básicos www.jetsoftware.com.br
  • 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. 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. Formulário de entrada (GET) www.jetsoftware.com.br
  • 7. Resultado www.jetsoftware.com.br
  • 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. Formulário de entrada (POST) www.jetsoftware.com.br
  • 10. Resultado www.jetsoftware.com.br
  • 11. Lendo dados de formulários www.jetsoftware.com.br
  • 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. 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. 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. Resultado www.jetsoftware.com.br
  • 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. 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. Lendo todos os parâmetros formulário www.jetsoftware.com.br
  • 19. Lendo todos os parâmetros resultado www.jetsoftware.com.br
  • 20. Tratando dados de formulário www.jetsoftware.com.br
  • 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. 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. 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. Perguntas ? www.jetsoftware.com.br