转发
<br />将当前的request和response对象交给指定的web组件处理;<br />url不变;<br />对于浏览器来说,只有一次请求和一次相应。
转发对象
RequestDispatcher,是由Servlet容器创建的。有两个方法:forward和include。
这个对象可以通过HttpServletRequest获取,也可通过ServletContext获取。
通过HttpServletRequest:
request.getRequestDispatcher(“相对路径或绝对路径”).forward(request,response);
通过ServletContext获取【两种方法】:
rd = this.getServletContext().getNamedDispatcher(“Servlet的名称”);
或
rd = this.getServletContext().getRequestDispatcher(“绝对路径”);
重定向
通过response对象发送给浏览器一个新的url地址,让其重新请求;
对于浏览器来说,是两次请求和两次相应。
response.sendRedirect(“project_name/xxx.jsp”);
转发与重定向的区别
方法
实现转发调用的是HttpServletRequest对象中的方法,实现重定向调用的是HttpServletResponse对象中的方法
浏览器地址栏
转发时浏览器中的url地址栏不会发生改变,重定向时浏览器中的url地址会发生改变
请求过程
转发时浏览器只请求一次服务器,重定向时浏览器请求两次服务器
请求范围
参数
转发可以使用request带数据到跳转的页面,而重定向默认不可以使用request带数据到跳转的页面,因为是两次请求,带参数的只是第一次请求,不过可以使用ServletContext传递参数。