Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Passing parameters in a response.sendRedirect() - JSP

I am new to Web Technologies. I am trying to do a simple program which ask the user to input a name, if valid the page redirects to another jsp file "RedirectIfSuccessful.jsp", if invalid the page redirects to "RedirectIfFailed.jsp". I am using the response.sendRedirect() method to do this.

The redirect is working fine. However, I wish to access the name the user inputs in the form from RedirectIfSuccessful and RedirectIfFailed files so that when a valid name is entered the user is presented with a : Welcome, nameEntered and when failed the message would be nameEntered was not valid. Please go back and try again.

I tried using request.getParameter("name") from both files but it's returning a null value.. What can I do to access it?

This is the code I have: This is the 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");
    }

%>

This is the HTML file where I have the form: 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>

And this is the Successful page:

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

I hope you can help and I was clear in my question. Thanks :)

like image 693
Bernice Avatar asked Dec 24 '12 10:12

Bernice


People also ask

What is response sendRedirect in jsp?

sendRedirect() accepts the respective URL to which the request is to be redirected. Can redirect the request to another resource like Servlet, HTML page, or JSP page that are inside or outside the server. It works on the HTTP response object and always sends a new request for the object.

What is the difference between response sendRedirect () and request forward ()?

Difference between forward() and sendRedirect() methodThe forward() method works at server side. The sendRedirect() method works at client side. It sends the same request and response objects to another servlet. It always sends a new request.


1 Answers

A redirect consists in sending a response to the browser saying "Please go to the following URL : RedirectIfSuccessful.jsp".

When it receives this response, the browser sends a new request to RedirectIfSuccessful.jsp, without any parameter. So getting the parameter name from RedirectIfSuccessful.jsp will return null.

If you want to have access to the name after the redirection, you need to send a redirect to RedirectIfSuccessful.jsp?name=<the name the user entered>

like image 154
JB Nizet Avatar answered Oct 18 '22 08:10

JB Nizet