目录
forward和redirect的区别?
答:Forward和Redirect代表了两种请求转发方式:重定向和转发。对应到代码里,分别是RequestDispatcher类的 forward()方法和 HttpServletResponse类的sendRedirect()方法。
重定向redirect:
HttpServletResponse类中通过方法
void sendRedirect(java.lang.String location) 可实现页面的跳转。
response.sendRedirect (“xxx.jsp”);
注意:该方法跳转后的页面,不能获得之前页面用户提交的数据。
转发forward:
RequestDispatcher对象可以把用户对当前的JSP页面或 servlet的请求 转发给另一个JSP页面或servlet,并且将请求对象 和相应对象传递给目标 页面。
第一步:得到RequestDispatcher对象:
RequestDispatcher rd = request.getRequestDispatcher(“xxx.jsp”);
第二步:转发:rd.farward( request, response);
合并:
request.getRequestDispatcher(“xxx.jsp”).forward(request,response);
区别
对于重定向redirect,服务器端在响应第一次请求的时候,让浏览器再 向另外一个URL发出请求,从而达到转发的目的。它本质上是两次HTTP请求,对应两个request对象。
对于转发forward,客户端浏览器只发出一次请求,Servlet把请求 转发给Servlet、HTML、JSP或其它信息资源,由第2个信息资源响应该请求, 两个信息资源共享同一个request对象。