Processamento de formulários com JSP

Você pode ter que cruzar com muitas situações onde precisa passar informações de um navegador para um servidor web e por fim para seu programa. O navegador usa dois métodos para passar essas informações para o servidor web. Esses métodos são o GET e o POST.

Método GET:

O método GET envia a informação fornecida pelo usuário anexada a requisição da página. A página e a informação codificada são separadas por um caractere ? como segue:

http://www.test.com/hello?key1=value1&key2=value2

O método GET é o método padrão para passar informações do navegador para o servidor web e produz uma string longa que aparece na barra de endereço de seu navegador. Nunca use o método GET se você tiver que passar senhas ou outras informações sensíveis para o servidor.

O método GET possui uma limitação de tamanho: apenas 1024 caracteres podem estar na string de requisição.

Essa informação é passada usando o cabeçalho QUERY_STRING e será acessível através da variável de ambiente QUERY_STRING que pode ser manipulada pelo uso dos métodos getQueryString() e getParameter() do objeto requisitado.

Método POST:

Um método geralmente mais confiável de passar informações para um programa é o método POST.

Esse método empacota a informação da mesma forma que o método GET, mas ao invés de enviar um string depois de um ? na URL, ele envie em uma mensagem separada. Essa mensagem chega ao programa na forma de uma entrada padrão que você pode analisar e usar no seu processamento.

O JSP lida como esse tipo de requisição com o uso do método getParameter() para ler parâmetros simples e getInputStream() para ler dados binários que venham do cliente.

Lendo dados de um formulário usando JSP

O JSP lida com a análise dos dados do formulário automaticamente usando os seguintes métodos dependendo da situação:

  • getParameter(): Você chama o método request.getParameter() para obter o valor de um parâmetro.
  • getParameterValues(): Chame esse método se o parâmetro aparece mais de uma veze retorna múltiplos valores.
  • getParameterNames(): Chame esse método se você quiser uma lista completa de todos os parâmetros da requisição atual.
  • getInputStream(): Chame esse método para ler dados binários que vieram do cliente.

Método GET usando URL:

A seguir está uma URL simples que passará dois valores para o programa HelloForm usando o método GET.

http://localhost:8080/main.jsp?first_name=ZARA&last_name=ALI

Abaixo segue o programa JSP main.jsp que manipula a entrada dada pelo navegador web. Iremos usar o método getParameter() que torna fácil acessar a informação passada:

<html>
<head>
<title>Using GET Method to Read Form Data</title>
</head>
<body>
<center>
<h1>Using GET Method to Read Form Data</h1>
<ul>
<li><p><b>First Name:</b>
   <%= request.getParameter("first_name")%>
</p></li>
<li><p><b>Last  Name:</b>
   <%= request.getParameter("last_name")%>
</p></li>
</ul>
</body>
</html>

Agora digite http://localhost:8080/main.jsp?first_name=ZARA&last_name=ALI na barra de endereço de seu navegador. Isso deve gerar o seguinte resultado:

Usando o método GET para ler dados do formulário

  • First Name: ZARA

  • Last Name: ALI

Método GET usando Formulário:

Abaixo segue um exemplo simples que passa dois valores usando um FORMULÁRIO HTML e um botão de submissão. Iremos usar o mesmo arquivo main.jsp para manipular essa entrada.

<html>
<body>
<form action="main.jsp" method="GET">
First Name: <input type="text" name="first_name">
<br />
Last Name: <input type="text" name="last_name" />
<input type="submit" value="Submit" />
</form>
</body>
</html>

Mantenha esse código em um arquivo Hello.htm e coloque-o no diretório <Tomcat-installation-directory>/webapps/ROOT. Quando você acessar http://localhost:8080/Hello.htm, a saída deve ser a seguinte:

First Name: Last Name:

 

Informe First Name e Last Name e em seguida clique no botão Submit para visualizar o resultado na máquina onde o tomcat está sendo executado. Baseado na entrada fornecida, será fornecido um resultado similar ao mencionado no exemplo acima.


Método POST usando Formulário:

Vamos fazer um pequena modificação no JSP acima para usar métodos GET bem como POST. Abaixo segue o arquivo main.jsp para manipular a entrada fornecida pelo navegador web usando os métodos GET e POST.

De fato, não há nenhuma mudança no JSP acima por se mudar a maneira de passar parâmetros e nenhum dado binário está sendo passado para o programa JSP. Conceitos relacionados à manipulação de arquivos precisariam de um artigo separado onde precisaríamos ler dados binários.

<html>
<head>
<title>Using GET and POST Method to Read Form Data</title>
</head>
<body>
<center>
<h1>Using GET Method to Read Form Data</h1>
<ul>
<li><p><b>First Name:</b>
   <%= request.getParameter("first_name")%>
</p></li>
<li><p><b>Last  Name:</b>
   <%= request.getParameter("last_name")%>
</p></li>
</ul>
</body>
</html>

A seguir o conteúdo do arquivo Hello.htm:

<html>
<body>
<form action="main.jsp" method="POST">
First Name: <input type="text" name="first_name">
<br />
Last Name: <input type="text" name="last_name" />
<input type="submit" value="Submit" />
</form>
</body>
</html>

Agora vamos manter main.jsp e hello.htm no diretório <Tomcat-installation-directory>/webapps/ROOT. Quando você acessar http://localhost:8080/Hello.htm, a saída do código acima será:

First Name: Last Name:

 

Tente informar um First Name e um Last Name e clique no botão Submit para visualizar o resultado na máquina onde o tomcat estiver sendo executado.

Baseado na entrada fornecida, será obtido um resultado similar ao mostrado nos exemplos anteriores.


Passando dados de uma caixa de verificação para o programa JSP

Caixas de verificação são usadas quando se precisa que mais de uma opção seja selecionada.

A seguir um exemplo de código HTML, CheckBox.htm, para um formulário contendo caixas de verificação

<html>
<body>
<form action="main.jsp" method="POST" target="_blank">
<input type="checkbox" name="maths" checked="checked" /> Maths
<input type="checkbox" name="physics"  /> Physics
<input type="checkbox" name="chemistry" checked="checked" /> 
                                                Chemistry
<input type="submit" value="Select Subject" />
</form>
</body>
</html>

O resultado desse código é o seguinte:

Maths
Physics
Chemistry

 

A seguir o programa JSP para manipular a entrada fornecida pela navegador a partir das opções marcadas.

<html>
<head>
<title>Reading Checkbox Data</title>
</head>
<body>
<center>
<h1>Reading Checkbox Data</h1>
<ul>
<li><p><b>Maths Flag:</b>
   <%= request.getParameter("maths")%>
</p></li>
<li><p><b>Physics Flag:</b>
   <%= request.getParameter("physics")%>
</p></li>
<li><p><b>Chemistry Flag:</b>
   <%= request.getParameter("chemistry")%>
</p></li>
</ul>
</body>
</html>

A saída do exemplo acima será a seguinte:

Lendo dados de uma caixa de verificação

  • Maths Flag : : on
  • Physics Flag: : null
  • Chemistry Flag: : on

Lendo todos os parâmetros do formulário:

No exemplo a seguir, usaremos o método getParameterNames() de HttpServletRequest para ler todos os parâmetros disponíveis do formulário. Esse método retorna uma Enumeração que contém os nomes dos parâmetros em uma ordem não específica.

Uma vez que tenhamos uma Enumeração, podem percorre-la da forma padrão, usando o método hasMoreElements() para determinar quando o loop deve parar e o método nextElement() para obter cada parâmetro.

<%@ page import="java.io.*,java.util.*" %>
<html>
<head>
<title>HTTP Header Request Example</title>
</head>
<body>
<center>
<h2>HTTP Header Request Example</h2>
<table width="100%" border="1" align="center">
<tr bgcolor="#949494">
<th>Param Name</th><th>Param Value(s)</th>
</tr>
<%
   Enumeration paramNames = request.getParameterNames();

   while(paramNames.hasMoreElements()) {
      String paramName = (String)paramNames.nextElement();
      out.print("<tr><td>" + paramName + "</td>\n");
      String paramValue = request.getHeader(paramName);
      out.println("<td> " + paramValue + "</td></tr>\n");
   }
%>
</table>
</center>
</body>
</html>

A seguir o conteúdo de Hello.htm:

<html>
<body>
<form action="main.jsp" method="POST" target="_blank">
<input type="checkbox" name="maths" checked="checked" /> Maths
<input type="checkbox" name="physics"  /> Physics
<input type="checkbox" name="chemistry" checked="checked" /> Chem
<input type="submit" value="Select Subject" />
</form>
</body>
</html>

Agora tente chamar o JSP usando o arquivo Hello.htm, isso irá gerar um resultado similar ao mostrado abaixo baseado na entrada fornecida:

Lendo todos os parâmetros do formulário

Param Name Param Value(s)
maths on
chemistry on

Você pode tentar usar o JSP acima para ler qualquer outros dados do formulário, que podem ser outros objetos como caixas de texto, botões de radio ou caixas drop-down, dentre outros.

Traduzido de tutorialspoint.com

  • Yan Santos

    Material muito bom!
    Obrigado :)