`
callmegod
  • 浏览: 107607 次
  • 性别: 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重定向方法

    实现原理: 1.在网页上访问URL(HTTP:localhost:8080/Login),...3.如果登录验证成功,则sendRedirect重定向到(HTTP:localhost:8080/Main),服务器获取请求头Get,forword转发到(HTTP:localhost:8080/Main.jsp),在浏

    Forword Tdesign.xls

    Forword Tdesign

    forward与redirect区别

    还有,转发是在web应用程序之内进行的,可以访问web应用程序所设定的内部目录,像是WEB-INF目录,只能在Web应用程序中进行,不能指定至其它的Web应用程序的地址。 redirect就是服务端根据逻辑,发送一个状态码,告诉...

    作业6 JSP JDBC操作数据库

    在doPost方法中处理查询,最后进行转发处理,可使用forword方法。 4. 登录界面login.jsp如下,将用户在JSP页面输入的用户名username和密码password,通过servlet到数据库中验证用户信息。通过验证,跳转到success....

    redirect--and-forword.rar_redirect

    浅析 重定向 与 跳转 对java 初学者有很大的帮助

    web项目,实战经验

    Forward机制: 这种方式是在服务器端作的重定向。服务器往client发送数据的...如果在<JSP:FORWORD>之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么这种重定向方式将不起作用,这一点应该特别注意。

    WSL2-Auto-Port-Forward:自动将主机端口转发到wsl2端口

    启动WSL容器并转发端口.vbs -> 启动WSL容器.cmd -> 转发端口到WSL容器.vbs -> 转发端口到WSL容器.cmd -> 转发WSL容器端口到主机.vbs -> 转发WSL容器端口到主机.cmd 其中vbs用于管理员身份调用cmd,并且隐藏执行时的...

    FindCatch_forword_zip_

    forward kinmatics program with matlab

    TCP端口转发

    这个是一个支持TCP端口转发的小软件,采用IOCP模型设计,同时支持多个监听端口.这是这个软件的第一个版本,后期版本将支持过滤器插件,可以实现IP过滤,消息过滤,消息解码等用户自己定义功能.实现IP Forword功能.

    forword_list类的实现

    c++,vs2019,悉尼大学作业,mark全部通过

    android手机端与PC端使用adb forword通信

    主要介绍了android手机端与PC端使用adb forword通信的相关资料,需要的朋友可以参考下

    JSP页面的跳转方式汇总

    2、使用表单提交的方式跳转页面,3、修改HTTP header的Location属性来重定向,4、JSP中实现在某页面停留若干秒后,自动重定向到另一页面,5、jsp标签跳转:“url” />,6、RequestDispatcher.forword(),7、response...

    多邮件转发Gmail。「Multi Email Forward for Gmail」-crx插件

    转发多个电子邮件与1点击-在背景。 需要转发许多电子邮件给某人吗? 这是一种选择所有您想转发的电子邮件并将其发送给1个收件人的快速方法。 即使您关闭Gmail,浏览器甚至PC,一切仍将继续进行,就好像您一次花时间...

    串口转发VC源代码

    串口转发示例代码 关键字:serial,forword,串口,转发

    forword_it_datascience_batch_6th:Forword it数据科学第6个批处理文件

    forword_it_datascience_batch_6th:Forword it数据科学第6个批处理文件

    TcpForward:最简陋的Tcp端口转发

    Tcp转发golang简单的TcpForward

    udp-forward:具有数据隐藏功能的简单 UDP 数据报转发器

    udp 转发udp-forward 是一个简单的程序,用于隐藏某些 UDP 消息的内容。 该程序只是侦听 UDP 端口,加密数据报并将它们转发到指定的端口。 所使用的加密方案绝不是加密强的。 它只是为了向不聪明的欺骗者/嗅探者隐藏...

    switch security.rar

    3、重定向 对于数据流的转发方向作重定向 (高端交换机才支持) 注意:如果没有说明一条语句的操作行为,默认的行为是forward。如果进入VLAN的数据流没有匹配上任何一条语句,最后将被丢弃掉。 基于IP的: Config#...

    all_libtorch_forward.tar.xz

    all_libtorch_forward.tar.xz

Global site tag (gtag.js) - Google Analytics