-
1 知识链接
-
2 任务实现
-
3 同步实训
【问题引入】
使用JSP处理客户端请求时一般遵循这样一种模式:首先,用户通过表单控件输入并提交信息或程序通过请求参数方式提交信息;接着,JSP页面获得客户端的请求数据并进行处理;最后,JSP页面根据处理结果转向不同的结果页面。获取客户端请求信息我们使用request对象的getParameter方法或getParameterValues方法,那么如何实现页面转向呢?
【实现思路】
在JSP中可以使用重定向及转发方式来实现页面转向。
【知识链接】
1 转发与重定向
转发简单地说就是通过一个中介将甲方的请求传递给乙方。从程序运行的角度解答就是当客户端发送一个请求到服务器后,Web服务器调用内部的方法在容器内部完成请求处理和转发动作,然后将目标资源发送给浏览器,整个过程都是在一个Web容器内完成,因而可以共享request范围内的数据。而对于到客户端,不管服务器内部如何处理,作为浏览器都只是提交了一个请求,因而客户端的URL地址不会发生改变。使用request的getRequestDispatcher()方法可以实现转发,通过转发能在多个页面交互过程中实现请求数据的共享。
使用response对象的sendRedirect()方法可以实现重定向。重定向是指客户端重新向服务器请求一个地址链接,由于是发送新的请求,因而上次请求中的数据将随之丢失。由于服务器重新定向了URL,因而在客户端浏览器中显示的是新的URL地址,所以重定向可以理解为是浏览器至少提交了两次请求。
转发和重定向都能实现页面的跳转,它们的区别如表2-3所示。
表2-5 转发和重定向的区别
| 名称 | 使用的对象 | 发挥作用的位置 | 地址栏情况 | 数据共享 |
| 重定向 | response | 客户端 | 显示转向后的地址 | 不共享request范围内的数据 |
| 转发 | request | 服务器端 | 不显示目标地址 | 共享request范围内的数据 |
2 使用response对象实现重定向
response对象用于响应客户请求并向客户端输出信息,sendRedirect ()方法是response对象最常用的方法,用来将请求重定向到一个不同的URL上。sendRedirect()方法的语法格式为:
response.sendRedirect(Stringpath);
path:用于指定目标路径,可以是相对路径,也可以是不同主机的其他URL地址。
3 使用request对象实现转发
使用request的getRequestDispatcher()方法可实现转发。通过转发能在多个页面交互过程中实现请求数据的共享。


