servlet请求转发与重定向的区别:
request.setAttribute("test","hello");
request.getRequestDispacther("/test.jsp").forword(request,response);
response.sendRedirect("test.jsp");
一、显示结果:
1、当用request.getRequestDispacther("/test.jsp").forword(request,response); 请求转发后,结果页面输出:hello
2、当用response.sendRedirect("test.jsp");重定向后,结果页面输出:null
二、底层分析:
1、请求转发(RequestDispatcher)的过程:
客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的test.jsp,整个流程都是在服务器端完成的,而且是在同一个请求里面完成的,因此servlet和jsp共享的是同一个request,在servlet里面放的所有东西,在jsp中都能取出来,因此,jsp能把结果getAttribute()出来,getAttribute()出来后执行完把结果返回给客户端。整个过程是一个请求,一个响应。
2、重定向(sendRedirect)的工作原理:
客户发送一个请求到服务器,服务器匹配servlet,这都和请求转发一样,servlet处理完之后调用了sendRedirect()这个方法,这个方法是response的方法,所以,当这个servlet处理完之后,看到response.senRedirect()方法,立即向客户端返回这个响应,响应行告诉客户端你必须要再发送一个请求,去访问test.jsp,紧接着客户端受到这个请求后,立刻发出一个新的请求,去请求test.jsp,这里两个请求互不干扰,相互独立,在前面request里面setAttribute()的任何东西,在后面的request里面都获得不了。可见,在sendRedirect()里面是两个请求,两个响应。
三、表面分析:
1、当用RequestDispatcher请求转发后,地址栏为http://localhost:8080/test/TestServlet
这真好应正了上面的分析,我们起初请求的就一个servlet,至于你服务器端怎么转,流程怎么样的,我客户端根本就不知道,我发了请求后我就等
着响应,那你服务器那边愿意怎么转就怎么转,我客户端不关心也没法知道,所以当服务器端转发到jsp后,它把结果返回给客户端,客户端根本就
不知道你这个结果是我真正访问的servlet产生的,还是由servlet转发后下一个组件产生的。
2、当用sendRedirect重定向后,地址栏为http://localhost:8080/test/test.jsp
因为这个时候,客户端已经知道了他第二次请求的是test.jsp,服务器已经告诉客户端要去访问test.jsp了,所以地址栏里会显示想要访问的结果。
分享到:
相关推荐
当服务器接收到请求后,可以将请求转发到另一个资源,如JSP页面,而用户无感知。在例子中,当用户访问`HTTP:localhost:8080/Login`,服务器通过`forward`将请求转发至`Login.jsp`页面,展示登录界面。 2. **`...
Springboot 转发重定向是指在 Springboot 框架中,如何实现请求的转发和重定向。下面将详细介绍 Springboot 转发重定向的实现方式。 一、Springboot 转发 在 Springboot 中,转发可以使用两种方式实现:使用 ...
- 浏览器向服务器发送请求后,服务器接收到请求并处理,然后直接将请求转发到指定的内部资源,如一个JSP页面或Servlet。 - 转发可以在同一个Web应用程序内进行,甚至可以访问受保护的目录,如`WEB-INF`下的资源。 - ...
在Java Web开发中,"重定向"(Redirect)和"转发"(Forward)是两种常见的处理请求的方法,它们用于在服务器端控制用户浏览器的行为。理解并熟练掌握这两者对于Java初学者至关重要,因为它们在构建动态网站时起着...
Forword(请求转发)与 Redirect(重定向) 在 Servlet 中,有两种方式可以实现页面跳转:请求转发和重定向。请求转发是指服务器端将请求转发到另一个资源,而重定向是指服务器端将请求重定向到另一个资源。请求转发...
与`response.sendRedirect()`方法相比,`jsp:forward`的动作不会引发新的HTTP请求,这意味着所有请求范围内的对象(如session、request)都可以在转发过程中保持不变。 总结来说,这个Java Web应用开发的课堂案例...
* Forword:请求转发,服务器将请求转发给其他Servlet或JSP,浏览器的URL不变化 * Redirect:重定向,服务器将请求重定向给其他URL,浏览器的URL变化 八、JQuery总结 JQuery是JavaScript库,提供了简洁的DOM操作和...
`<jsp:forward/>`标签在JavaServer Pages (JSP)中用于将一个请求转发到另一个资源,比如从一个JSP页面跳转到另一个JSP页面或者一个Action。在Struts2框架下使用`<jsp:forward/>`进行页面跳转时,可能会遇到“404 Not...
7- Forword(请求转发)与Redirect(重定向): 在Web开发中,请求转发发生在服务器端,客户端只感知到一次请求,而重定向是客户端收到服务器的响应后,重新发起一个新的请求。转发速度快,共享session,而重定向可以...
Forword Tdesign
七、 Forword(请求转发)与 Redirect(重定向) Forword 和 Redirect 是两种常用的请求处理机制: * Forword:将请求转发到另一个 servlet 或 JSP 页面,而不改变 URL。 * Redirect:将请求重定向到另一个 URL,将 ...
**七、Forword(请求转发)与Redirect(重定向)** 请求转发发生在服务器端,浏览器只看到一个请求;重定向是客户端的行为,浏览器发出两个独立的请求。转发速度快,但用户不能直接通过URL访问转发后的资源,而重定向的...
7. 请求转发与重定向: - 请求转发(Forword)在服务器内部完成,浏览器地址栏不会变化,适合同一应用内部的页面跳转。 - 重定向(Redirect)是客户端的行为,浏览器会发起新的请求,地址栏显示新的URL,适用于跨...
7. Forword(请求转发)与Redirect(重定向) 请求转发是在服务器端完成,客户端浏览器只发出一次请求,地址栏URL不变;重定向是客户端再次发送请求,URL会显示新地址,两次HTTP交互。 8. Jquery总结 jQuery是一...
请求转发(Forword)是在服务器端完成的,用户感觉不到跳转,而重定向(Redirect)会发送新的HTTP请求,浏览器地址栏会显示新URL。 8. **JQuery总结**: jQuery是一个JavaScript库,简化DOM操作,事件处理,动画...
7. **Forword与Redirect**:请求转发(Forword)在服务器端完成,浏览器地址栏不会改变;重定向(Redirect)是客户端的行为,浏览器会发起新的请求,地址栏显示新URL。 8. **jQuery总结**:jQuery是一个流行的...
在机器人学中,前向运动学(Forward Kinematics,简称FK)是研究机器人关节变量与末端执行器在空间位置关系的数学模型。这一领域的知识广泛应用于机器人路径规划、姿态控制以及传感器定位等方面。本篇文章将深入探讨...
七、Forword(请求转发)与Redirect(重定向) 请求转发是在服务器端内部完成的,客户端浏览器地址栏不会改变,而重定向是客户端发起新的请求,地址栏会显示新的URL。 八、jQuery总结 jQuery是一个JavaScript库,...
七、Forword(请求转发)与Redirect(重定向): 请求转发是在服务器端内部完成的,客户端浏览器地址栏不会改变;重定向是服务器向客户端发送一个新的URL,浏览器会发起一个新的请求。 八、JQuery总结: JQuery是一个...
七、Forword(请求转发)与Redirect(重定向) Forword发生在服务器端,请求从一个资源转发到另一个资源,浏览器地址栏不会改变;Redirect是客户端的行为,浏览器会发起新的请求,地址栏显示新地址。 八、jQuery总结 ...