English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tratamento de Formulários JSP

Quando navegamos na web, frequentemente precisamos enviar informações para o servidor e permitir que o programa backend lidere.

Método GET

O método GET adiciona as informações de codificação da solicitação no final da URL, a URL e as informações de codificação são separadas pelo caractere "?". Veja a seguir:

http://pt.oldtoolbag.com/hello?key1=value1&key2=value2

O método GET é o método padrão do navegador para passar parâmetros, é recomendável não usar o método GET para informações sensíveis, como senhas.

Quando usar get, o tamanho dos dados transmitidos é limitado (não é o número de parâmetros que é limitado), o maior é1024bytes.

Método POST

Informações sensíveis, como senhas, podem ser passadas usando o método POST, o envio de dados por POST é implícito.

Os dados enviados por POST são invisíveis, GET passa os dados dentro da URL (pode verificar a barra de endereços do seu navegador).

O JSP usa getParameter() para obter os parâmetros passados, o método getInputStream() é usado para lidar com solicitações de fluxo de dados binário do cliente.

Leitura de dados de formulário no JSP

  • getParameter(): Usar o método request.getParameter() para obter o valor do parâmetro do formulário.

  • getParameterValues(): Obter dados como checkbox (nomes iguais, mas valores múltiplos). Receber variáveis de array, como checkbox

  • getParameterNames():Este método pode obter o nome de todas as variáveis, retornando um Enumeration.

  • getInputStream():Chame este método para ler o fluxo de dados binário do cliente.

Exemplo de uso do método GET da URL

A seguir está um URL simples, usando o método GET para passar os parâmetros do URL:

http://localhost:8080/testjsp/main.jsp?name=基础教程网&url=http://ww.oldtoolbag.com

testjsp é o endereço do projeto.

A seguir está o programa JSP do arquivo main.jsp, usado para lidar com dados de formulário enviados pelo cliente, usamos o método getParameter() para obter os dados enviados:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Site de Tutoriais Básicos(oldtoolbag.com)</title>
</head>
<body>
<h1>Ler dados usando o método GET</h1>
<ul>
<li><p><b>Nome do site:</b>/b>
   <%= request.getParameter("name") %>
</p></li>
<li><p><b>Endereço web:</b>/b>
   <%= request.getParameter("url") %>
</p></li>
</ul>
</body>
</html>

A seguir, acessamos o http: através do navegador//localhost:8080/testjsp/main.jsp?name=JSP教程&url=http://ww.w3Os resultados de codebox.com são exibidos da seguinte forma:

Exemplo de uso do método GET do formulário

A seguir está um formulário HTML simples, que envia dados do cliente usando o método GET até main.jsp No arquivo:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Site de Tutoriais Básicos(oldtoolbag.com)</title>
</head>
<body>
<form action="main.jsp" method="GET">
Nome do site: <input type="text" name="name">
<br />
Endereço da web: <input type="text" name="url" />
<input type="submit" value="Enviar" />
</form>
</body>
</html>

Salve o código HTML acima no arquivo test.htm. Coloque esse arquivo na pasta WebContent do projeto jsp atual (no mesmo diretório do main.jsp).

Através de acesso http://localhost:8080/testjsp/test.html Enviar dados do formulário para o arquivo main.jsp, conforme mostrado na figura a seguir:

Preencha as informações nos campos "Nome do site" e "Endereço web" dos formulários e clique no botão "Enviar", ele exibirá os resultados.

Exemplo de uso do método POST do formulário

Vamos usar o método POST para passar dados do formulário. Modificamos o código dos arquivos main.jsp e Hello.htm da seguinte forma:

Código do arquivo main.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Site de Tutoriais Básicos(oldtoolbag.com)</title>
</head>
<body>
<h1>Ler dados usando o método POST</h1>
<ul>
<li><p><b>Nome do site:</b>/b>
<%
// Resolver problemas de acentuação chinesa
String name = new String((request.getParameter("name")).getBytes("ISO-8859-1"),"UTF-8);
%>
   <%= name %>
</p></li>
<li><p><b>Endereço web:</b>/b>
   <%= request.getParameter("url") %>
</p></li>
</ul>
</body>
</html>

No código, usamos new String((request.getParameter("name")).getBytes("ISO-8859-1"),"UTF-8")Converter a codificação para evitar problemas de acentuação chinesa.

A seguir está o código modificado do test.htm:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Site de Tutoriais Básicos(oldtoolbag.com)</title>
</head>
<body>
<form action="main.jsp" method="POST">
Nome do site: <input type="text" name="name">
<br />
Endereço da web: <input type="text" name="url" />
<input type="submit" value="Enviar" />
</form>
</body>
</html>

Através de acesso http://localhost:8080/testjsp/test.html Enviar dados do formulário para o arquivo main.jsp, conforme exemplo a seguir:

Passar dados de Checkbox para o programa JSP

A caixa de seleção checkbox pode passar um ou mais dados.

A seguir está um código HTML simples, salvo no arquivo test.htm:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Site de Tutoriais Básicos(oldtoolbag.com)</title>
</head>
<body>
<form action="main.jsp" method="POST" target="_blank">
<input type="checkbox" name="google" checked="checked" /> Google
<input type="checkbox" name="w3codebox  /> Site de Tutoriais Básicos
<input type="checkbox" name="taobao" checked="checked" />淘宝
<input type="submit" value="Selecionar Site" />
</form>
</body>
</html>

O código acima é exibido no navegador da seguinte forma:

A seguir está o código do arquivo main.jsp, usado para processar dados de caixas de seleção:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Site de Tutoriais Básicos(oldtoolbag.com)</title>
</head>
<body>
<h1>Ler dados de caixas de seleção</h1>
<ul>
<li><p><b>Se o Google foi selecionado:</b>
   <%= request.getParameter("google")%>
</p></li>
<li><p><b>Se o site básico de tutoriais foi selecionado:</b>
   <%= request.getParameter("w3codebox")%>
</p></li>
<li><p><b>Se o Taobao foi selecionado:</b>
   <%= request.getParameter("taobao")%>
</p></li>
</ul>
</body>
</html>

Através de acesso http://localhost:8080/testjsp/test.html Enviar dados do formulário para o arquivo main.jsp, conforme exemplo a seguir:

após clicar em "Selecionar site":


ler todos os parâmetros do formulário

A seguir, usaremos HttpServletRequest do getParameterNames() para ler todos os parâmetros do formulário, este método pode obter todos os nomes das variáveis e retorna um enumeração.

Uma vez que temos um Enumeration (enumeração), podemos chamar o método hasMoreElements () para determinar se há mais elementos e usar o método nextElement () para obter o nome de cada parâmetro.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Site de Tutoriais Básicos(oldtoolbag.com)</title>
</head>
<body>
<h1>Ler todos os parâmetros do formulário</h1>
<table width="100%" border="1" align="center">
<tr bgcolor="#949494">
<th>Nome do parâmetro</th><th>Parâmetro de valor</th>
</tr>
<%
   Enumeration paramNames = request.getParameterNames();
   while(paramNames.hasMoreElements()) {
      String paramName = (String)paramNames.nextElement();
      out.print("<tr><td>" + paramName + "</td>\n");
      String paramValue = request.getParameter(paramName);
      out.println("<td> " + paramValue + "</td></tr>\n");
   }
%>
</table>
</body>
</html>

A seguir está o conteúdo do arquivo test.htm:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Site de Tutoriais Básicos(oldtoolbag.com)</title>
</head>
<body>
<form action="main.jsp" method="POST" target="_blank">
<input type="checkbox" name="google" checked="checked" /> Google
<input type="checkbox" name="w3codebox  /> Site de Tutoriais Básicos
<input type="checkbox" name="taobao" checked="checked" /> 
                                                Taobao
<input type="submit" value="Selecionar Site" />
</form>
</body>
</html>

Agora, vamos acessar o arquivo test.htm pelo navegador para enviar dados, e o resultado será como follows:

Através de acesso http://localhost:8080/testjsp/test.html Enviar dados do formulário para o arquivo main.jsp, conforme exemplo a seguir:


Após clicar em "Selecionar Site":


Você pode tentar usar o código JSP acima para ler outros objetos, como caixas de texto, botões de rádio ou caixas de seleção, etc.