2020-10-05

    科技2022-08-29  100

    response对象的转发和重定向

    转发(直接转发方式)(Forward)

    客户端和浏览器之发出一次请求,Servelt、HTML/JSP或其他信息资源,由第二个信息资源响应改请求,在请求对象request中,保存的对象对于每个信息资源是共享的。

     

    <body>     <%         String userName = request.getParameter("userName");         String pwd = request.getParameter("pwd");                  if("admin".equals(userName) && "123456".equals(pwd)){             // 说明账号密码正确 跳转到成功登录页面,这个也叫重定向             // response从login.jsp页面来的             response.sendRedirect("success.jsp");         }else{             // 说明账号密码错误,重新跳转到登录页面,并且输出错误信息,这个也叫转发             // 传递msg错误信息过去             request.setAttribute("msg","密码错误");             request.getRequestDispatcher("login.jsp").forward(request,response);         }               %>   </body>创建login登录页面

    <body>     <%     // 接收传递过来msg的值         String msg = (String) request.getAttribute("msg");         if (msg == null)             msg = "";     %>     <form action="info.jsp" method="post">         用户名:<input type="text" name="userName" /><br> 密码:<input             type="password" name="pwd" /><span style="color:red"><%=msg%></span><br>         <input type="submit" value="登录" />     </form> </body>  

    部署打开登录页面login.jsp,输入用户名和密码

     

    转发(forward)举例说明

    举个生活中的简单例子来说吧,有我,小红,小明三个人。我没钱了,想问小红借钱,小红知道之后问小明要了钱然后借给我了,这个时候我只知道是小红借给我钱了,到还钱的时候我只用还给小红就行了。我也不用管小红的钱咋来的,是自己的还是问别人借的,我只用知道还钱的时候我还给小红就行了。这就是借钱的时候之请求了一次小红,然后别的我就不用管了。在上述代码里面我就是login.jsp页面,小红就是info.jsp页面,小明就是test.jsp页面。带入一下意思就明了了。

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

     

    重定向(间接转发方式)(Redirect)

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

     

    打开登录页面,输入用户名和密码登录

    (1):输入账号密码后转接到info.jsp页面判断账号密码 (2):info.jsp页面返回一个success.jsp登录成功页面让login.jsp页面再次请求 请求成功后就跳转到success.jsp页面了。

     

    重定向(redirect)举例说明

    我们还拿我,小红,小明来举例子吧,还是借钱的例子。我问小红借钱,然后小红说他没钱了,但是他知道谁有钱,我问是谁,小红说小明有钱。然后我又去问小明借钱,最后借到了。然后这个钱我只用还给小明了,不用给小红了。这个我一共请求了两次,先请求小红借我钱,然后小红说让我去找小明,然后又请求小明借我钱。这个也带入到上述代码中我就是login.jsp页面,小红就是info.jsp页面,小明就是test.jsp页面。然后再带入一下就大概可以明白了。

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

     

     

    Processed: 0.020, SQL: 9