Atributos en Servlets | Java

Un atributo en servlet es un objeto que se puede establecer, obtener o eliminar mediante los siguientes aspectos

  1. Alcance de la solicitud
  2. Ámbito de aplicación
  3. Alcance de la sesión

Para pasar el valor del servlet a los archivos html/jsp, el objeto de solicitud llama al método setAttribute() . El método setAttribute() toma una entrada como un objeto que envía los datos del servlet al sitio web solicitante

public void setAttribute(String name, Object obj)

Establece el objeto especificado en el ámbito de la aplicación.

En el extremo del usuario, html usa una sintaxis mediante la cual se pueden obtener atributos

${ var-name }

en el que var-name es el mismo que el nombre en el método setAttribute()

Veamos un ejemplo de sitio web que valida el formulario en el lado del servidor

Archivo HTML 1 (sitio web solicitante)

El código enviará los datos de entrada al Servlet para procesar la validación, que a cambio obtiene el texto de error si se produce alguna validación.

<body>
<h1>Demo</h1>
<p style="color: black;">* required field</p> 
<form method="post" action="./CommitServlet">
    <label>Username: *</label>
      
    <!-- Received response bundle data from the servlet as ${ var-name }  -->
      
    <input type="text" value="${after.inputName}" name="inputName"/>
    <span name="errorName">${errors.Name}</span>
    <br/><br>
      
    <label>Gender: *</label>
    <input type="radio" name="gender" value="male" />Male
    <input type="radio" name="gender" value="female" />Female
    <input type="radio" name="gender" value="other" />Other 
    <span name="errorGender">${errors.Gender}</span>
    <br><br>
    <input type="submit"/>
</form>
</body>

Producción:

HTML1 Output

Código de servlet

Este Programa procesa los datos solicitados y verifica su validación, si encuentra algún error, agregará el texto de error en el Paquete conocido como clase MAP. Este paquete se envía nuevamente al sitio que lo solicitó para corregir el error.

// Servlet code
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
  
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
  
@WebServlet("/CommitServlet")
public class CommitServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
  
    protected void doPost(HttpServletRequest request,
                          HttpServletResponse response)
        throws ServletException, IOException
    {
  
        // Create a Bundle of errors in the form of Map
        Map<String, String> errors = new HashMap<String, String>();
        Map<String, String> after = new HashMap<String, String>();
  
        // Get the input values from the website
        String inputName = request.getParameter("inputName");
        String inputGender = request.getParameter("gender");
  
        // If error occur, previous entered data will be reflected
        after.put("inputName", inputName);
  
        // Check for Validation of Name and Gender
        if (!validateName(inputName))
  
            // If error occur, create a entry for
            // the bundle and write a alert message
            errors.put("Name", "Please enter a valid name");
  
        if (inputGender == null)
  
            // If Gender is not select, encounter an error
            errors.put("Gender", "Please select a Gender");
  
        if (errors.isEmpty())
  
            // If no error occur, redirect to the response website
            response.sendRedirect("success.html");
  
        else {
  
            // Set this bundle into the request attribute
            // and pass the data to the requested website
            request.setAttribute("after", after);
            request.setAttribute("errors", errors);
            request.getRequestDispatcher("comment.jsp").forward(request, response);
        }
    }
  
    // Method to validate Proper Name, entered by the user
    public static boolean validateName(String txt)
    {
        String regex = "^[a-zA-Z ]+$";
        Pattern pattern = Pattern.compile(regex,
                                          Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(txt);
        return matcher.find();
    }
}

Producción :
Error

Error1

Código HTML 2

Si no se produce ningún error, se imprime el mensaje de éxito

<body>
    <center>
        <h1>Comment Successfully Stored</h1>
    </center>
</body>

Publicación traducida automáticamente

Artículo escrito por bilal-hungund 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 *