请求转发 VS 请求从定向
1、RequestDispatcher
①:调用HttpServletRequest 的 getRequestDispatcher()获取转发器,传入要转发的位置
②:转发器调用forword(request,response)
2、sendRedirect
调用response的sentRedirect()方法进行从定向,参数为目的地的URL
区别:
RequestDispatcher
1、RequestDispatcher转发对于客户端来说是透明的,是不知道的,浏览器的url地址不会改变
2、转发是servlet 对用户的请求交给了另外一个servlet,然后把第二servlet的响应返回到用户,所以对于用户来说,服务器的所有过程都是透明的
3、发出一次请求
4、携带请求的信息
sendRedirect
1、调用sentRedirect()方法后,用户的浏览器的url发生了变化,指导从定向的地址
2、当第一个servlet的发出从定向后,它就不会给本次请求提供任何服务...
3、发出两次请求
4、不携带请求信息
假如 有 小二、小三、小四 三个人
有一天 小二 缺钱 和 小三区借钱 ,而且小三当时没钱,就和小二说,你等会(这个时间小三和小四说了说情况,和小四借的钱),一会,小三就把钱给了小二,这就是转发
有一天 小二 缺钱 和 小三区借钱 ,而且小三当时没钱,就和小二说,我也没钱,你去和小三去借吧,此时小二又和小三去接了,这就是从定向
1、RequestDispatcher
①:调用HttpServletRequest 的 getRequestDispatcher()获取转发器,传入要转发的位置
②:转发器调用forword(request,response)
2、sendRedirect
调用response的sentRedirect()方法进行从定向,参数为目的地的URL
区别:
RequestDispatcher
1、RequestDispatcher转发对于客户端来说是透明的,是不知道的,浏览器的url地址不会改变
2、转发是servlet 对用户的请求交给了另外一个servlet,然后把第二servlet的响应返回到用户,所以对于用户来说,服务器的所有过程都是透明的
3、发出一次请求
4、携带请求的信息
sendRedirect
1、调用sentRedirect()方法后,用户的浏览器的url发生了变化,指导从定向的地址
2、当第一个servlet的发出从定向后,它就不会给本次请求提供任何服务...
3、发出两次请求
4、不携带请求信息
假如 有 小二、小三、小四 三个人
有一天 小二 缺钱 和 小三区借钱 ,而且小三当时没钱,就和小二说,你等会(这个时间小三和小四说了说情况,和小四借的钱),一会,小三就把钱给了小二,这就是转发
有一天 小二 缺钱 和 小三区借钱 ,而且小三当时没钱,就和小二说,我也没钱,你去和小三去借吧,此时小二又和小三去接了,这就是从定向