it-swarm.com.de

Übergabe von Parametern in einer response.sendRedirect () - JSP

Ich bin neu in Web-Technologien. Ich versuche, ein einfaches Programm zu erstellen, das den Benutzer auffordert, einen Namen einzugeben. Wenn die Seite gültig ist, wird sie in eine andere JSP-Datei "RedirectIfSuccessful.jsp" umgeleitet, falls die Seite ungültig ist, wird die Seite zu "RedirectIfFailed.jsp" umgeleitet. Ich verwende dazu die response.sendRedirect()-Methode.

Die Weiterleitung funktioniert einwandfrei. Ich möchte jedoch auf den Namen zugreifen, den der Benutzer im Formular aus RedirectIfSuccessful- und RedirectIfFailed-Dateien eingibt, so dass dem Benutzer bei Eingabe eines gültigen Namens Folgendes angezeigt wird: Welcome, nameEntered und bei einem Misserfolg wäre die Nachricht nameEntered ungültig. Bitte gehen Sie zurück und versuchen Sie es erneut.

Ich habe versucht, request.getParameter("name") aus beiden Dateien zu verwenden, aber es gibt einen null-Wert zurück. Was kann ich tun, um darauf zuzugreifen?

Dies ist der Code, den ich habe: Dies ist der 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");
    }

%>

Dies ist die HTML-Datei, in der ich das Formular habe: 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>

Und dies ist die erfolgreiche Seite:

<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>

Ich hoffe du kannst helfen und ich war in meiner Frage klar. Vielen Dank :)

11
Bernice

Eine Umleitung besteht darin, eine Antwort an den Browser zu senden, in der Sie "Bitte rufen Sie die folgende URL auf: RedirectIfSuccessful.jsp"

Wenn er diese Antwort erhält, sendet der Browser eine neue Anfrage ohne Parameter an RedirectIfSuccessful.jsp. Wenn Sie also den Parameter name von RedirectIfSuccessful.jsp erhalten, wird null zurückgegeben.

Wenn Sie nach der Weiterleitung auf den Namen zugreifen möchten, müssen Sie eine Weiterleitung an RedirectIfSuccessful.jsp?name=<the name the user entered> senden.

20
JB Nizet

Um den Namen auf einer anderen Seite zu erhalten, verwenden Sie session . session.setAttribute ("name", name) auf der Anmeldeseite; Um den Namen abzurufen, verwenden Sie session.getAttribute ("name"). Sie können es einer Variablen wie folgt zuweisen: <% String name = (string) session.getAttribute ("name");%> Success!

0