1.转发

(1)什么是转发?

一个web组件将未完成的处理交给另外一个web组件继续做。

注:
    web组件:servlet或者jsp。
    常见的场景:一个Servlet获得数据之后,将数据转交给
    一个jsp来呈现。

(2)如何转发?

step1.将数据绑订到request对象上。

request.setAttribute(String name,Object obj);
注(了解):
    map.put(name,obj)

step2.获得转发器。

RequestDispatcher rd = 
        request.getRequestDispatcher(String uri); 
注:
    uri是转发的目的地,通常是一个jsp的地址。
    RequestDispatcher是一个web组件通知容器去调用另外一个
    web组件的媒介。

step3.转发。

rd.forward(request,response);
注:
    jsp可以利用 Object request.getAttribute(String name);
    拿到之前绑订的数据。

(3)特点

a.转发之后,浏览器地址栏的地址不变。

b.转发的目的地有限制,要求属于同一个web应用。

2.比较转发和重定向

a. 转发之后,浏览器地址栏的地址不变,重定向会变。

b. 转发的目的地有限制(要求属于同一个web应用),重定向无限制。

c. 转发所涉及的各个web组件可以共享同一个request对象,而重定向 不可以。

注:
    容器收到请求之后,会立即创建request和response;
当容器发送完响应之后,会立即销毁这两个对象。也就说,
request和response的生存时间是一次请求与响应期间存在。
    重定向是两次请求。

练习

使用美工提供的静态页面(listUser.html)完成用户列表