Foward(转发)使用:
HttpServletRequest.getRequestDispatcher(URL).forward(request, response)
或者 HttpServletContext.getRequestDispatcher(URL).forward(request, response) 原理:当使用转发时, JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。
特点:浏览器中所显示的URL不会被修改.
由于request并没有中止,所以其中的对象仍然可用.
Redirect(重定向)使用:
HttpServletResponse.sendRedirect(URL); 原理:重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求
特点:当你使用重定向时,浏览器中所显示的URL会变成新页面的URL.
由于重定向方式产生了一个新的请求,所以经过一次重定向后,request内的对象将无法使用。
怎么选择是重定向还是转发呢?通常情况下转发更快,而且能保持request内的对象,所以他是第一选择。但是由于在转发之后,浏览器中URL仍然指向开始页面,此时如果重载当前页面,开始页面将会被重新调用。如果你不想看到这样的情况,则选择重定向。