阅读目次
一:间接请求转发(Redirect)
二:直接请求转发(Forward)
用户向处事器发送了一次HTTP请求,该请求大概会颠末多个信息资源处理惩罚今后才返回给用户,各个信息资源利用请求转发机制彼此转发请求,可是用户是感受不到请求转发的。按照转发方法的差异,可以区分为直接请求转发(Forward)和间接请求转发(Redirect),那么这两种转发方法有何区别呢?本篇在答复该问题的同时全面的讲授两种请求转发方法的道理和区别。
【呈现频率】
☆☆☆☆
【要害考点】
【考题阐明】
Forward和Redirect代表了两种请求转发方法:直接转发和间接转发。
直接转发方法(Forward),客户端和欣赏器只发出一次请求,Servlet、HTML、JSP或其它信息资源,由第二个信息资源响应该请求,劳务派遣管理系统,在请求工具request中,生存的工具对付每个信息资源是共享的。
间接转发方法(Redirect)实际是两次HTTP请求,处事器端在响应第一次请求的时候,让欣赏器再向别的一个URL发出请求,从而到达转发的目标。
举个通俗的例子:
直接转发就相当于:“A找B乞贷,B说没有,B去找C借,借到借不到城市把动静通报给A”;
间接转发就相当于:”A找B乞贷,B说没有,让A去找C借”。
下面具体叙述一下两者的道理:
一:间接请求转发(Redirect)
间接转发方法,有时也叫重定向,它一般用于制止用户的非正常会见。譬喻:用户在没有登录的环境下会见靠山资源,Servlet可以将该HTTP请求重定向到登录页面,让用户登录今后再会见。在Servlet中,通过挪用response工具的SendRedirect()要领,汇报欣赏器重定向会见指定的URL,示例代码如下:
...... //Servlet中处理惩罚get请求的要领 public void doGet(HttpServletRequest request,HttpServletResponse response){ //请求重定向到别的的资源 response.sendRedirect("资源的URL"); } ........
上图所示的间接转发请求的进程如下:
二:直接请求转发(Forward)
直接转发方法用的更多一些,一般说的请求转发指的就是直接转发方法。Web应用措施大多会有一个节制器。由节制器来节制请求应该转发给谁人信息资源。然后由这些信息资源处理惩罚请求,处理惩罚完今后还大概转发给别的的信息资源来返回给用户,软件开发,这个进程就是经典的MVC模式。
javax.serlvet.RequestDispatcher接口是请求转发器必需实现的接口,由Web容器为Servlet提供实现该接口的工具,通过挪用该接口的forward()要领达到请求转发的目标,示例代码如下:
...... //Servlet里处理惩罚get请求的要领 public void doGet(HttpServletRequest request , HttpServletResponse response){ //获取请求转发器工具,该转发器的指向通过getRequestDisPatcher()的参数配置 RequestDispatcher requestDispatcher =request.getRequestDispatcher("资源的URL"); //挪用forward()要领,转发请求 requestDispatcher.forward(request,response); } ......
上图所示的直接转发请求的进程如下:
能力:其实,通过欣赏器就可以调查随处事器端利用了那种请求转发方法,当单击某一个超链接时,欣赏器的地点栏会呈现当前请求的地点,假如处事器端响应完成今后,发明地点栏的地点变了,则证明是间接的请求转发。相反,假如地点没有产生变革,则代表的是直接请求转发可能没有转发。
问:直接转发和间接转发的道理及区别是什么?
答:Forward和Redirect代表了两种请求转发方法:直接转发和间接转发。对应到代码里,别离是RequestDispatcher类的forward()要领和HttpServletRequest类的sendRedirect()要领。
对付间接方法,处事器端在响应第一次请求的时候,让欣赏器再向别的一个URL发出请求,从而到达转发的目标。它本质上是两次HTTP请求,对应两个request工具。