campo de formulario oculto mediante anotación | Servlet de Java

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. 

  1. El control va al archivo index.html y se genera un formulario en el navegador web y le pedirá su nombre de usuario.
  2. 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.
  3. 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.
  4. En firstServlet hay un campo de formulario oculto que nuevamente toma la entrada del navegador y pasa el control al segundo servlet.
  5. 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.
  6. 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: 

  1. 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.
  2. Debe enviar un formulario adicional en cada solicitud.
  3. Es más complejo que la reescritura de URL.
  4. 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *