El campo de formulario oculto se utiliza para almacenar información de sesión de un cliente. En este método, creamos un formulario oculto que pasa el control al servlet cuya ruta se proporciona en el área de acción del formulario. Usando esto, la información del usuario se almacena y pasa a la ubicación donde queremos enviar los datos.
La principal ventaja de usar el formulario oculto es que no depende del navegador. Incluso si las cookies están deshabilitadas o no ocultas, el formulario archivado funcionará perfectamente.
Ejemplo
Java
out.print("<form action='SecondServlet'>"); out.print("<input type='hidden' name='username' value='" + n + "'>"); out.print("<input type='submit' value='submit'>"); out.print("</form>");
Un ejemplo completo del método de campo de formulario oculto
En este método estamos transfiriendo los detalles del cliente de firstServlet a Second Servlet
índice.html
HTML
<!DOCTYPE html> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="FirstServlet" method="Post"> <!-- Move the control to firstServlet --> Name:<input type="text" name="userName" /><br /> <input type="submit" value="submit" /> </form> </body> </html>
Producción
PrimerServlet.java
Java
// Java program to demonstrate // Hidden form field method package GeeksforGeeks; import java.io.*; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import javax.servlet.http.*; @WebServlet("/FirstServlet") // this annotation is used for replacing xml file public class FirstServlet extends HttpServlet { // class name is FirstServlet which extends HttpServlet public void doPost(HttpServletRequest request, HttpServletResponse response) { try { response.setContentType("text/html"); /* The response's character encoding is only set from the given content type if this method is called before getWriter is called. This method may be called repeatedly to change content type and character encoding. */ PrintWriter out = response.getWriter(); /* The Java PrintWriter class ( java.io.PrintWriter ) enables you to write formatted data to an underlying Writer . For instance, writing int, long and other primitive data formatted as text, rather than as their byte values */ String username = request.getParameter("userName"); /* request.getParameter takes the value from index.html file where name is username */ out.print("Welcome " + username); // out.println is used to print on the client web browser /* In the below code their is a hidden form for maintaining session of user. this passes control to SecondServlet */ out.print("<form action='SecondServlet'>"); out.print("<input type='hidden' name='username' value='" + username + "'>"); out.print("<input type='submit' value='submit'>"); out.print("</form>"); out.close(); } catch (Exception e) { System.out.println(e); } } }
Producción
SegundoServlet
Java
// Java program to demonstrate // Hidden form field method package GeeksforGeeks; import java.io.*; import javax.servlet.*; import javax.servlet.annotation.WebServlet; // Importing annotation import javax.servlet.http.*; // using this annotation we dont need // xml file for dispathing servlet @WebServlet("/SecondServlet") public class SecondServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) { try { response.setContentType("text/html"); /* The response's character encoding is only set from the given content type if this method is called before getWriter is called. This method may be called repeatedly to change content type and character encoding. */ PrintWriter out = response.getWriter(); /* The Java PrintWriter class ( java.io.PrintWriter ) enables you to write formatted data to an underlying Writer . For instance, writing int, long and other primitive data formatted as text, rather than as their byte values */ // getting value from the query string String username = request.getParameter("username"); // taking the value of usename from First servlet using getparameter object out.print("WELCOME " + username); // out.println is used to print on the client web browser out.close(); } catch (Exception e) { System.out.println(e); } } }
Producción
Procesamiento paso a paso del código
A medida que implementa el proyecto y ejecuta el código en el servidor, el siguiente proceso continúa.
- El control va al archivo index.html y se genera un formulario en el navegador web y le pedirá su nombre de usuario.
- En el formato de archivo index.html, la acción es FirstServlet, por lo que cuando presiona el botón Enviar, el control va a FirstServlet y su sesión comienza.
- En FirstServlet request.getParameter(nombre de usuario), tome la entrada de index.html donde el campo es nombre de usuario e imprímalo en el navegador.
- En firstServlet hay un campo de formulario oculto que nuevamente toma la entrada del navegador y pasa el control al segundo servlet.
- Este método continúa para varios Servlet diferentes.
Nota: esta es la principal desventaja del método de campo de formulario oculto que tiene que completar el formulario una y otra vez para mantener una sesión de cliente. - En Second Servlet, nuevamente usamos request.getParameter para obtener información de la página FirstServlet.
Ventaja y Aplicaciones
- Se puede utilizar para el seguimiento de sesiones anónimas.
- El campo de formulario oculto es compatible con todos los navegadores. Este método de seguimiento de sesiones no necesita ninguna configuración especial del navegador.
- Toda la información se almacena en el navegador del cliente, por lo que aumenta la seguridad.
Desventaja:
- Funciona solo para una secuencia de formularios generados dinámicamente. Esto se rompe con documentos estáticos, documentos enviados por correo electrónico, documentos marcados y cierres del navegador.
- Debe enviar un formulario adicional en cada solicitud.
- Es más complejo que la reescritura de URL.
- Este método utiliza sólo información textual.
Publicación traducida automáticamente
Artículo escrito por Shahnawaz_Ali y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA