1、重定向 (1)什么是重定向? 服务器发送一个302状态码和一个Location消息头 (值是一个地址,称为重定向地址),当浏览器收到之后, 会立即向重定向地址发请求。 (2)编程 //url:重定向地址 response.sendRedirect(String url); (3)特点 1)重定向地址是任意的。 2)重定向之后,浏览器地址栏的地址变成重定向地址。 (4)需要注意的两个问题 1)重定向之前,不能够调用out.close方法。 2)重定向之前,会先清空response上缓存的数据。 练习: 完成删除员工的操作(从数据库里删除指定员工的 信息,删除之后重定向到员工列表) 2、转发 (1)什么是转发? 一个web组件(servlet或者jsp)将未完成的处理通过容器交给另一个web组件继续完成。 常见的情况是:一个servlet获得数据之后, 转发给一个jsp,由这个jsp来负责展现这些数据。 (2)如何转发? step1,绑订数据到request对象上。 request.setAttribute(String name,Object obj); step2,获得转发器 //url: 转发的目的地地址 RequestDispatcher rd = request.getRequestDispatcher(String url); step3,转发 rd.forward(request,response); //依据绑订名称找到绑订值,如果值不存在,返回null。 Object request.getAttribute(String name); (3)转发的特点 a,转发之后,浏览器地址栏的地址不变。 b,转发的目的地仅限于同一个应用。 (4)转发需要注意的问题 a,转发之前,不能够调用out.close()。 b,转发之前,容器会先清空response对象上缓存的数据。 3、转发与重定向的区别 (1)转发所涉及的各个组件可以共享同一个request对象和同一个response对象,而重定向不行。 当容器收到请求,会创建request,response ,当容器发送响应之后,会立即删除request,response。也就是说,request,response的生存时间很短暂 (一次请求与响应期间)。 (2)转发的目的地地址必须是同一个应用内部某个地址,而重定向地址不限。 (3)转发之后,浏览器地址栏的地址不变;而重定向会变。 (4)转发是一件事未做完,而重定向是一件事已经做完,然后再去做另一件事。 |
|