在response.sendRedirect() - JSP中传递参数

Ber*_*ice 11 html redirect jsp httprequest

我是Web Technologies的新手.我正在尝试执行一个简单的程序,要求用户输入名称,如果页面重定向到另一个jsp文件有效,如果页面重定向到"RedirectIfSuccessful.jsp"无效"RedirectIfFailed.jsp".我正在使用该response.sendRedirect()方法来执行此操作.

重定向工作正常.但是,我希望访问用户在表单RedirectIfSuccessfulRedirectIfFailed文件中输入的名称,以便在输入有效名称时向用户显示:Welcome,nameEntered,如果失败,则消息将是nameEntered无效.请返回重试.

我尝试使用request.getParameter("name")这两个文件,但它返回一个null值..我该怎么做才能访问它?

这是我的代码:这是 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");
    }

%>
Run Code Online (Sandbox Code Playgroud)

这是我有表格的HTML文件: 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>
Run Code Online (Sandbox Code Playgroud)

这是成功的页面:

<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>
Run Code Online (Sandbox Code Playgroud)

我希望你能提供帮助,我的问题很明确.谢谢 :)

JB *_*zet 20

重定向包括向浏览器发送响应"请转到以下URL:RedirectIfSuccessful.jsp".

当它收到此响应时,浏览器会发送一个新请求RedirectIfSuccessful.jsp,而不带任何参数.所以得到的参数nameRedirectIfSuccessful.jsp将返回null.

如果要在重定向后访问该名称,则需要将重定向发送到 RedirectIfSuccessful.jsp?name=<the name the user entered>

  • 是的,你理解得对.事实上,前锋不会有这种行为.请注意,在POST成功后重定向(而不是转发)是一种很好的做法.这是[后重定向 - 获取模式](http://en.wikipedia.org/wiki/Post/Redirect/Get).最后一句意味着:您可以重定向到包含请求参数的URL.例如,如果您将重定向发送到`RedirectIfSuccessful.jsp?name = John`,浏览器将向`RedirectIfSuccessful.jsp?name = John`发送一个GET请求,JSP将可以访问参数`name`,将具有"约翰"的价值 (4认同)