以下是我个人的理解与经验,都是经过正确的验证才发表的。
转发与重定向的区别:
①:转发可以用相同的request对象,转发可以携带数据进行下一项,重定向不可以携带数据。
②:重定向可以跳转到任何界面,但转发只能在本界面。
③:转发地址栏没有变化,重定向地址栏有变化。
那么同时我还遗留了一个问题?转发和包含中的Request对象和Response对象何去何从。
请求转发
请求转发是Servlet将请求转发给别的Servlet或服务器其他资源,无需客户端任何行为。可以通过以下方式实现请求转发:
request.getRequestDispatcher(“转发资源路径”).forward(request,response)
上图满足java_ee_api文档对forward()方法的定义,客户端请求AServlet,而最终是由BServlet做出响应。
请求包含
请求包含是指多个Servlet共同处理一个请求。以下方式可以实现请求包含:
request.getRequestDispatcher(“包含资源路径”).include(request,response)
请求转发和请求包含都是在一个请求范围内,多个Servlet之间使用的同一个request对象和response对象。