`
callmegod
  • 浏览: 110275 次
  • 性别: Icon_minigender_1
  • 来自: 惠州
社区版块
存档分类
最新评论

servlet中请求转发(forword)与重定向(sendredirect)的区别

阅读更多


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了,所以地址栏里会显示想要访问的结果。
分享到:
评论

相关推荐

    idea做一个带有验证码的登录界面,包函forword转发和sendRedirect重定向方法

    当服务器接收到请求后,可以将请求转发到另一个资源,如JSP页面,而用户无感知。在例子中,当用户访问`HTTP:localhost:8080/Login`,服务器通过`forward`将请求转发至`Login.jsp`页面,展示登录界面。 2. **`...

    Springboot转发重定向实现方式解析

    Springboot 转发重定向是指在 Springboot 框架中,如何实现请求的转发和重定向。下面将详细介绍 Springboot 转发重定向的实现方式。 一、Springboot 转发 在 Springboot 中,转发可以使用两种方式实现:使用 ...

    forward与redirect区别

    - 浏览器向服务器发送请求后,服务器接收到请求并处理,然后直接将请求转发到指定的内部资源,如一个JSP页面或Servlet。 - 转发可以在同一个Web应用程序内进行,甚至可以访问受保护的目录,如`WEB-INF`下的资源。 - ...

    redirect--and-forword.rar_redirect

    在Java Web开发中,"重定向"(Redirect)和"转发"(Forward)是两种常见的处理请求的方法,它们用于在服务器端控制用户浏览器的行为。理解并熟练掌握这两者对于Java初学者至关重要,因为它们在构建动态网站时起着...

    于笑扬java综合知识点总结-必背.pdf

    Forword(请求转发)与 Redirect(重定向) 在 Servlet 中,有两种方式可以实现页面跳转:请求转发和重定向。请求转发是指服务器端将请求转发到另一个资源,而重定向是指服务器端将请求重定向到另一个资源。请求转发...

    Java Web应用开发 15 课堂案例-使用forward动作.docx

    与`response.sendRedirect()`方法相比,`jsp:forward`的动作不会引发新的HTTP请求,这意味着所有请求范围内的对象(如session、request)都可以在转发过程中保持不变。 总结来说,这个Java Web应用开发的课堂案例...

    于笑扬java综合知识点总结-必背(吐血推荐).doc

    * Forword:请求转发,服务器将请求转发给其他Servlet或JSP,浏览器的URL不变化 * Redirect:重定向,服务器将请求重定向给其他URL,浏览器的URL变化 八、JQuery总结 JQuery是JavaScript库,提供了简洁的DOM操作和...

    Struts2中实现页面的跳转

    `<jsp:forward/>`标签在JavaServer Pages (JSP)中用于将一个请求转发到另一个资源,比如从一个JSP页面跳转到另一个JSP页面或者一个Action。在Struts2框架下使用`<jsp:forward/>`进行页面跳转时,可能会遇到“404 Not...

    java面试题常规回答

    7- Forword(请求转发)与Redirect(重定向): 在Web开发中,请求转发发生在服务器端,客户端只感知到一次请求,而重定向是客户端收到服务器的响应后,重新发起一个新的请求。转发速度快,共享session,而重定向可以...

    Forword Tdesign.xls

    Forword Tdesign

    Java全栈工程师面试宝典.doc

    七、 Forword(请求转发)与 Redirect(重定向) Forword 和 Redirect 是两种常用的请求处理机制: * Forword:将请求转发到另一个 servlet 或 JSP 页面,而不改变 URL。 * Redirect:将请求重定向到另一个 URL,将 ...

    java面试题总结11111

    **七、Forword(请求转发)与Redirect(重定向)** 请求转发发生在服务器端,浏览器只看到一个请求;重定向是客户端的行为,浏览器发出两个独立的请求。转发速度快,但用户不能直接通过URL访问转发后的资源,而重定向的...

    java总结,问题,知识点

    7. 请求转发与重定向: - 请求转发(Forword)在服务器内部完成,浏览器地址栏不会变化,适合同一应用内部的页面跳转。 - 重定向(Redirect)是客户端的行为,浏览器会发起新的请求,地址栏显示新的URL,适用于跨...

    java知识点总结java知识点总结.doc

    7. Forword(请求转发)与Redirect(重定向) 请求转发是在服务器端完成,客户端浏览器只发出一次请求,地址栏URL不变;重定向是客户端再次发送请求,URL会显示新地址,两次HTTP交互。 8. Jquery总结 jQuery是一...

    2020年java常见面试题汇总(附答案).pdf

    请求转发(Forword)是在服务器端完成的,用户感觉不到跳转,而重定向(Redirect)会发送新的HTTP请求,浏览器地址栏会显示新URL。 8. **JQuery总结**: jQuery是一个JavaScript库,简化DOM操作,事件处理,动画...

    java综合知识

    7. **Forword与Redirect**:请求转发(Forword)在服务器端完成,浏览器地址栏不会改变;重定向(Redirect)是客户端的行为,浏览器会发起新的请求,地址栏显示新URL。 8. **jQuery总结**:jQuery是一个流行的...

    FindCatch_forword_zip_

    在机器人学中,前向运动学(Forward Kinematics,简称FK)是研究机器人关节变量与末端执行器在空间位置关系的数学模型。这一领域的知识广泛应用于机器人路径规划、姿态控制以及传感器定位等方面。本篇文章将深入探讨...

    java知识点

    七、Forword(请求转发)与Redirect(重定向) 请求转发是在服务器端内部完成的,客户端浏览器地址栏不会改变,而重定向是客户端发起新的请求,地址栏会显示新的URL。 八、jQuery总结 jQuery是一个JavaScript库,...

    java面试总结pdf版

    七、Forword(请求转发)与Redirect(重定向): 请求转发是在服务器端内部完成的,客户端浏览器地址栏不会改变;重定向是服务器向客户端发送一个新的URL,浏览器会发起一个新的请求。 八、JQuery总结: JQuery是一个...

    java综合知识点总结-必背.doc

    七、Forword(请求转发)与Redirect(重定向) Forword发生在服务器端,请求从一个资源转发到另一个资源,浏览器地址栏不会改变;Redirect是客户端的行为,浏览器会发起新的请求,地址栏显示新地址。 八、jQuery总结 ...

Global site tag (gtag.js) - Google Analytics