Servlet(2)----------请求转发和重定向原理分析及区别

4人阅读 评论(0) 收藏 举报
分类:

1、什么是请求转发?

        将两个servlet配合在一起,形成一个工作流,完成用户的一个请求。

2、如何从AServlet跳到BServlet中

       (代码实现) RequestDispatcher rd = request.getRequestDispatcher(目标servlet的url-pattern);

                         rd.forward(request,response);

3、请求转发的特点:

                    1)请求转发动作发生在服务器内部地址栏不改变

                    2)被请求转发连接的servlet处于同一个请求中。

4、request作用域:

            作用:可以存储命名属性。name = value

            如何使用request作用域传递数据:

                             ---存:request.setAttribute(String name,Object obj);

                             ---取:Object obj = request.getAttribute(String name);

5、request生命周期:

                    begin:   请求叨叨服务器创建

                       end:    响应回到客户端。

         数据共享范围:一次请求有效。

6、请求重定向redirect

        作用:可以在资源(两个servlet)之间做跳转

        使用:response.sendRedirect(目标资源的URI)<带包名>

        特点:

                    ---请求动作发生在服务器外部地址栏改变

                    ---请求重定向连接的两个servlet,处于两次请求

         原理:



原理(上图)解释:为什么说请求转发是一次请求,请求重定向是两次请求?

 原因:转发请求:客户端发送http请求(r1), 此时web服务器接收请求在内部调用相关方法完成请求处理及转发操作(Aservlet中),此时(BServlet)接收r1处理后的结果,并发送给客户端; 

请求重定向:客户端发送http请求(r1),此时web服务器接收到请求并响应302状态码和新的location地址,客户端收到响应后发现时302状态码和新的location地址,客户浏览得到新的指令后再次发出请求(r2,新的请求url是新的location),服务器根据新的请求寻找新的资源并响应客户端;

---->比如:一个人去银行分行办理业务,而这个业务他们不能够处理,但是他们告诉你,这个业务必须要去总部处理,所以你需要回家去总部处理,最后办理业务完成。

7、请求转发和重定向的使用时机:

            1)请求转发(forward):有数据传递

                        如果两个servlet之间,需要传递大量的数据使用forward

            2)请求重定向(redirect):没有数据需要传递或者只有少量的数据传递

                        如果两个servlet之间不需要传递任何数据,或者只有少量数据传递

8、两者的区别:

 完成对象请求次数地址栏服务器对象速度
请求转发转发发生在服务器端一次请求不变必须是同一台服务器
请求重定向重定向发生在客户端二次请求改 变可以是不同服务器






查看评论

Python全栈工程师-第2周

Python全栈工程师-第2周
  • 2017年09月15日 17:31

Servlet应用中重定向与请求转发的区别

首先重定向和请求转发的区别在大多数面试题里面会考到,这篇文章是总结一下个人的理解。本文不讲代码 第一,我们要明白这两个东西到底是干什么用的。Servlet在对客户端请求的数据处理完成后,会向客户端返回...
  • kangkanggegeg
  • kangkanggegeg
  • 2017-07-01 11:29:50
  • 381

servlet请求转发与重定向的区别:

servlet请求转发与重定向的区别: request.setAttribute("test","hello"); request.getRequestDispacther("/test....
  • bailu66
  • bailu66
  • 2011-10-28 14:30:14
  • 10559

Servlet API中forward() 与sendRedirect ()的区别?(就是请求转发和重定向的区别) ?

请求转发:请求转发是指将请求再转发到另一资源(一般为JSP或Servlet)。此过程依然在同一个请求范围内,转发后浏览器地址栏内容不变,请求转发使用RequestDispatcher接口中的forwa...
  • Puzzle_48hcy
  • Puzzle_48hcy
  • 2017-06-14 08:00:32
  • 420

Servlet 请求转发和重定向

servlet请求转发与重定向
  • hxm_Code
  • hxm_Code
  • 2016-01-20 13:49:49
  • 2505

servlet中转发请求与重定向小结

请求转发: 方式:request.getRequestDispacther("/test.jsp").forword(request,response);  过程分析:客户端发出一个请求reqeust...
  • fgx_123456
  • fgx_123456
  • 2017-09-03 00:20:37
  • 671

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

servlet请求转发与重定向的区别: request.setAttribute("test","hello"); request.getRequestDispatcher("/test.jsp"...
  • YeaH_Chen
  • YeaH_Chen
  • 2017-12-01 11:38:48
  • 179

Jsp&Servlet 重定向、请求转发与绝对路径的问题

一、重定向:通知浏览器重新发送至xxx的请求。 1、发生场景: (1)response.sendRedirect("xxx"); (2)JSP页面的 src 属性; (3)JSP表单的 act...
  • zzz1192993261
  • zzz1192993261
  • 2017-03-26 19:32:46
  • 2090

请求转发与重定向之间的区别

1.HttpServletResponse对象的sendRedirect(String location)方法称作重定向。如果location地址前面加上”/”,则表示相对于Servlet容器的根来请...
  • yao____yao
  • yao____yao
  • 2016-08-13 11:35:54
  • 927

servlet转发与重定向基本概念与区别

1.转发与重定向概念介绍1.1转发 浏览器的请求发送给组件1,组件1经过一些处理之后,将request和response对象“传递”给组件2,由组件2继续处理,然后输出响应(当然,也可以继续向其...
  • cuiyaoqiang
  • cuiyaoqiang
  • 2016-07-01 09:29:52
  • 1255
    个人资料
    持之以恒
    等级:
    访问量: 1446
    积分: 323
    排名: 24万+
    文章存档