web-dev-qa-db-fra.com

Passage de paramètres dans un response.sendRedirect () - JSP

Je suis nouveau dans les technologies Web. J'essaye de faire un programme simple qui demande à l'utilisateur d'entrer un nom, si valide la page redirige vers un autre fichier jsp "RedirectIfSuccessful.jsp", si invalide la page redirige vers "RedirectIfFailed.jsp". J'utilise la méthode response.sendRedirect() pour le faire.

La redirection fonctionne bien. Cependant, je souhaite accéder au nom saisi par l'utilisateur sous la forme à partir des fichiers RedirectIfSuccessful et RedirectIfFailed, de sorte que lorsqu'un nom valide est entré, il est présenté à l'utilisateur avec les éléments suivants: Welcome, nameEntered et en cas d'échec, le message nameEntered n'était pas valide. Revenez s'il vous plaît et essayez à nouveau.

J'ai essayé d'utiliser request.getParameter("name") à partir des deux fichiers mais il renvoie une valeur null .. Que puis-je faire pour y accéder?

C'est le code que j'ai: C'est le RedirectingPage.jsp

 <%@ page 
    language="Java" 
    import="Java.util.regex.*"
    contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


<%  
    String name = request.getParameter("name");

    final String NAME_PATTERN = "^[a-zA-Z]{3,15}$";
    Pattern pattern = Pattern.compile(NAME_PATTERN);

    Matcher matcher = pattern.matcher(name);

    if (matcher.matches() == true){
        response.sendRedirect("RedirectIfSuccessful.jsp");

    } else {
        response.sendRedirect("RedirectIfFailed.jsp");
    }

%>

C'est le fichier HTML où j'ai la forme: FormSubmit.html

<html>
    <head>
        <title> Welcome </title>
    </head>

    <body BGCOLOR="#FDF5E6">
        <p> <i> This program redirects to a page if the name entered is valid and to another one if name
            entered is invalid... This uses response.sendRedirect() </i> </p>

        <form action="RedirectingPage.jsp" method="post">
          <font size=6 face="Georgia"> <strong> Enter your name: </strong> </font> <input type="text" name="name"> <br> <br>
          <input type="submit" name="btn" value="Submit" >
        </form>
    </body>
</html>

Et voici la page de succès:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title> Successful Submit </title>
</head>

<body>

<font face="Georgia" size="6"> Hello, <% request.getParameter("name"); %> </font>

</body>
</html>

J'espère que vous pourrez aider et ma question était claire. Merci :)

11
Bernice

Une redirection consiste à envoyer une réponse au navigateur en disant "S'il vous plaît aller à l'URL suivante: RedirectIfSuccessful.jsp"

Lorsqu'il reçoit cette réponse, le navigateur envoie une nouvelle demande à RedirectIfSuccessful.jsp, sans aucun paramètre. Donc, obtenir le paramètre name à partir de RedirectIfSuccessful.jsp retournera null.

Si vous souhaitez avoir accès au nom après la redirection, vous devez envoyer une redirection à RedirectIfSuccessful.jsp?name=<the name the user entered>.

20
JB Nizet

Pour obtenir le nom dans une autre page, utilisez session . session.setAttribute ("nom", nom) sur la page de connexion; pour récupérer le nom, utilisez session.getAttribute ("nom"). Vous pouvez l'affecter à une variable comme celle-ci: <% String name = (chaîne) session.getAttribute ("name");%> Success!

0