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

Manejo de formularios de JSP

Cuando navegamos por la web, a menudo necesitamos enviar información al servidor y que el programa en segundo plano la procese. En el navegador, se utilizan los métodos GET y POST para enviar datos al servidor.

Método GET

El método GET agrega la información de codificación de la solicitud al final de la URL, la URL y la información de codificación se separan por el símbolo "?". Como se muestra a continuación:

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

El método GET es el método predeterminado de transmisión de parámetros del navegador, se recomienda no usar el método GET para información sensible como contraseñas.

Al usar GET, el tamaño de los datos transmitidos tiene un límite (no es el número de parámetros el que tiene un límite), el máximo es1024bytes.

Método POST

Información sensible, como contraseñas, podemos transmitir mediante el método POST, los datos enviados por POST son implícitos.

Los datos enviados por POST son invisibles, GET se transmite en la url (puede ver la barra de direcciones de su navegador).

JSP utiliza getParameter() para obtener los parámetros enviados, el método getInputStream() se utiliza para procesar las solicitudes de flujo de datos binario del cliente.

Lectura de datos de formulario en JSP

  • getParameter(): Utilice el método request.getParameter() para obtener el valor de los parámetros del formulario.

  • getParameterValues(): Obtener datos como checkbox (nombres iguales, pero valores múltiples). Recibe variables de tipo array, como checkbox

  • getParameterNames():Este método puede obtener todos los nombres de las variables, y este método devuelve un Enumeration.

  • getInputStream():Llame a este método para leer el flujo de datos binario del cliente.

Ejemplo de uso del método GET de la URL

A continuación, se muestra una URL simple y se utiliza el método GET para pasar los parámetros de la URL:

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

testjsp es la dirección del proyecto.

A continuación, se muestra el programa JSP del archivo main.jsp utilizado para procesar los datos del formulario enviado por el cliente, utilizamos el método getParameter() para obtener los datos 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> Leer datos con el método GET </h1>
<ul>
<li><p><b>Nombre del sitio:<//b>
   <%= request.getParameter("name") %>
</p></li>
<li><p><b>URL:<//b>
   <%= request.getParameter("url") %>
</p></li>
</ul>
</body>
</html>

A continuación, accedemos a http: a través del navegador//localhost:8080/testjsp/main.jsp?name=JSP教程&url=http://ww.w3Los resultados de codebox.com se muestran a continuación:

Ejemplo de uso del método GET del formulario

A continuación se muestra un formulario HTML simple, que envía los datos del cliente al servidor a través del método GET a main.jsp En el archivo:

<!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">
Nombre del sitio: <input type="text" name="name">
<br />
Dirección web: <input type="text" name="url" />
<input type="submit" value="Enviar" />
</form>
</body>
</html>

Guarda el código HTML anterior en el archivo test.htm. Coloca este archivo en el directorio WebContent del proyecto jsp actual (en el mismo directorio que main.jsp).

A través de la visita http://localhost:8080/testjsp/test.html Enviar datos del formulario al archivo main.jsp, como se muestra en la imagen siguiente:

Rellena la información en los dos formularios "Nombre del sitio" y "URL", y haz clic en el botón "Enviar", que mostrará los resultados.

Ejemplo de uso del método POST del formulario

Vamos a usar el método POST para transmitir los datos del formulario. Modificamos el código de los archivos main.jsp y Hello.htm, como se muestra a continuación:

Código del archivo 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>Leer datos usando el método POST</h1>
<ul>
<li><p><b>Nombre del sitio:<//b>
<%
// Solución al problema de caracteres chinos desordenados
String name = new String((request.getParameter("name")).getBytes("ISO-8859-1"),"UTF-8");
>
   <%= name %>
</p></li>
<li><p><b>URL:<//b>
   <%= request.getParameter("url") %>
</p></li>
</ul>
</body>
</html>

En el código utilizamos new String((request.getParameter("name")).getBytes("ISO-8859-1"),"UTF-8")Para convertir la codificación y evitar la aparición de caracteres chinos desordenados.

A continuación se muestra el código modificado de 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">
Nombre del sitio: <input type="text" name="name">
<br />
Dirección web: <input type="text" name="url" />
<input type="submit" value="Enviar" />
</form>
</body>
</html>

A través de la visita http://localhost:8080/testjsp/test.html Enviar los datos del formulario al archivo main.jsp, como se muestra a continuación:

Transmitir datos de Checkbox al programa JSP

El casillero de verificación checkbox puede transmitir un dato o incluso varios datos.

A continuación se muestra un código HTML simple, y se guardará el código en el archivo 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  /> Sitio web de tutoriales básicos
<input type="checkbox" name="taobao" checked="checked" />淘宝
<input type="submit" value="Seleccionar sitio" />
</form>
</body>
</html>

El código anterior se muestra en el navegador de la siguiente manera:

A continuación se muestra el código del archivo main.jsp, utilizado para procesar los datos de los casilleros de verificación:

<%@ 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>Leer datos de casillas de verificación</h1>
<ul>
<li><p><b>¿Ha seleccionado Google?:/b>
   <%= request.getParameter("google")%>
</p></li>
<li><p><b>¿Ha seleccionado la red de tutoriales básicos?:/b>
   <%= request.getParameter("w3codebox")%>
</p></li>
<li><p><b>¿Ha seleccionado Taobao?:/b>
   <%= request.getParameter("taobao")%>
</p></li>
</ul>
</body>
</html>

A través de la visita http://localhost:8080/testjsp/test.html Enviar los datos del formulario al archivo main.jsp, como se muestra a continuación:

después de hacer clic en "seleccionar sitio":


leer todos los parámetros del formulario

A continuación, utilizaremos HttpServletRequest del getParameterNames() para leer todos los parámetros del formulario, este método puede obtener todos los nombres de las variables y devuelve un enumerador.

Una vez que tenemos un Enumeration (enumeración), podemos llamar al método hasMoreElements () para determinar si hay más elementos y usar nextElement () para obtener el nombre 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>Leer todos los parámetros del formulario</h1>
<table width="100%" border="1" align="center">
<tr bgcolor="#949494">
<th>Nombre de parámetro</th><th>Valor de parámetro</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 continuación se muestra el contenido del archivo 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  /> Sitio web de tutoriales básicos
<input type="checkbox" name="taobao" checked="checked" /> 
                                                Taobao
<input type="submit" value="Seleccionar sitio" />
</form>
</body>
</html>

Ahora accedemos al archivo test.htm a través del navegador para enviar datos, y el resultado es el siguiente:

A través de la visita http://localhost:8080/testjsp/test.html Enviar los datos del formulario al archivo main.jsp, como se muestra a continuación:


Después de hacer clic en "Seleccionar sitio":


Puedes intentar usar el código de JSP anterior para leer otros objetos, como cuadros de texto, botones de opción o menús desplegables, etc.