response对象的转发和重定向

简介: response对象的转发和重定向

response对象的转发和重定向

Forward和Redirect代表了两种请求转发方式:直接转发和间接转发。

转发(Forward)

定义

直接转发方式( Forward) , 客户端和浏览器只发出一次请求,Servlet、HTML、 JSP或其它信息资源,由第二个信息资源响应该请求,在请求对象request中,保存的对象对于每个信息资源是共享的。


举例说明

举个生活中简单的例子,我,小金,小明三个人。我没钱了,想问小金借钱,小金知道之后问小明要了钱然后借给我了,这个时候我只知道是小金借给我钱了,到还钱的时候我只用还给小金就行了。我也不用管小金的钱怎么来的,是自己的还是问别人借的,我只用知道还钱的时候我还给小金就行了。这就是借钱的时候请求了一次小金,然后别的我就不用管了。在上述代码里面我就是login2.jsp页面,小金就是index.jsp页面

这个就是response的转发,一共发出了一次请求。

代码演示

index.jsp转接页面

body代码:

<body>
  <%
    String userName = request.getParameter("userName");
    String pwd = request.getParameter("pwd");

    if ("1".equals(userName) && "1".equals(pwd)) {
      // 账号密码正确 跳转到登录成功页面
      response.sendRedirect("login.jsp");
    } else {
      // 账号密码错误,重新跳转到登录页面,并且输出错误提示
      // 传递msg错误提示过去
      request.setAttribute("msg", "密码错误");
      request.getRequestDispatcher("login2.jsp").forward(request,
          response);
    }
  %>
</body>
login2.jsp登录页面

body代码:

<body>
  <%
    // 接收传递过来msg的值
    String msg = (String) request.getAttribute("msg");
    if (msg == null)
      msg = "";
  %>
  
  <form action="index.jsp" method="post">
  // 创建table表格
    <table width="250dx" height="100px" border="1" align="center" cellspacing="0">
      <tr>
        <td><center>用户名:</center></td>
        <td><input type="text" name="userName" /></td>
      </tr>
      <tr>
        <td><center>密码:</center></td>
        <td><input type="password" name="pwd" /></td>
      </tr>
      <tr>
        <td align="center" colspan="2">
          <h3 style="color:red;"><%=msg%></h3></td>
      </tr>
      <tr>
        <td align="center" colspan="2">
            <input type="submit" value="登录" />
        </td>
      </tr>
    </table>
  </form>
</body>

部署打开登录页面login2.jsp:

输入错误的用户名和密码,点击登录:

重定向(Redirect )

定义

间接转发方式( Redirect )实际是两次请求,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。

举例说明

我们还拿我,小金,小明来举例子吧,还是借钱的例子。我问小金借钱,然后小金说他没钱了,但是他说小明有钱。然后我又去找小明借钱,最后借到了。然后这个钱我只用还给小明了,不用给小金。这个我一共请求了两次,先请求小金借我钱,然后小金说让我去找小明,然后又请求小明借我钱。这个也带入到上述代码中我就是login2.jsp页面,小金就是index.jsp页面,小明就是login.jsp页面。

这个就是response的重定向,一共发送了两次请求。

代码演示

login.jsp登录成功页面

body代码:

<body>
  <h1 style="text-align: center; color: red;font-size: 30px;">登录成功!</h1>
</body>

地址栏的页面是login.jsp登录成功的页面,这个等于一共发送了两次请求,分别为:

  1. 输入账号密码后转接到index.jsp页面判断账号密码
  2. index.jsp页面返回到login.jsp登录成功页面让login2.jsp页面再次请求,成功后就跳转到login.jsp页面了。

剩下代码直接参照转发方式(Forward)的代码就可以了,两个代码是一样的。

目录
相关文章
|
3月前
|
JavaScript 前端开发 数据安全/隐私保护
如何使用request-promise在发送请求时使用代理?
以上方法演示了如何在发送请求时使用 `request-promise`结合代理服务,适用于需要通过代理访问网络资源的场景。
63 0
|
6月前
|
前端开发 JavaScript API
|
6月前
|
前端开发
请求转发和重定向的区别
请求转发和重定向的区别
86 0
|
6月前
|
存储 Java
转发,重定向(forward,sendRedirect)传输数据
转发,重定向(forward,sendRedirect)传输数据
|
6月前
|
存储 数据处理
Request请求转发与Respones请求重定向有什么区别?
Request请求转发与Respones请求重定向有什么区别?
|
6月前
Response设置响应数据功能介绍及重定向
Response设置响应数据功能介绍及重定向
65 0
|
11月前
|
Java Spring
SpringMVC中转发与重定向(redirect与forward)实践实例
SpringMVC中转发与重定向(redirect与forward)实践实例
194 0
重定向和请求转发的区别
重定向和请求转发的区别
86 0
|
前端开发
请求转发与请求重定向
请求转发与请求重定向
266 0
请求转发与请求重定向
Response完成重定向
Response完成重定向
82 0
Response完成重定向