Bernice Bernice - 16 days ago 6
HTML Question

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

Answer

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>