1、请求转发:是指定服务器中的某一个资源(Servlet或JSP)在处理请求的过程中,将请求转发给另外的资源(比如是一个Servlet/jsp/html等),让其他资源来处理请求。
实现请求转发的代码:
Request.getRequestDispatcher(“所转发到的资源路径”).forward(request,response);
请求转发的特点:
(1)转发前后地址栏地址不会发生变化
(2)转发是一次请求, 一次响应
(3)转发只能是同一个Web应用内的资源互相转发, 不可以是不同的Web应用之间的资源进行转发。
2、域对象:简单来说,域对象就是一个具有map集合的对象,能够在指定的范围内, 利用自身的map实现数据的共享.
request对象上就具有一个map集合, 而且request对象也具有被访问的范围(一次请求范围内),因此request对象就是一个域对象。
该对象提供了往自身的map集合中存取数据的方法:
request.setAttribute(String name, Object value);
-- 往request域中添加一个域属性
request.getAttribute(String name);
-- 获取域中的属性值
request对象的三大特征:
(1)生命周期: 一次请求开始时创建Request对象, 一次请求结束时销毁request对象。
(2)作用范围: 一次请求范围内。
(3)主要功能: 通过请求转发+域对象实现带数据到目的地
3、请求转发和域对象经常配合着使用,实现从Servlet中带数据到JSP进行显示!!
提示:(1)请求转发是一次请求,一次响应
(2)转发前后地址栏地址不会发生变化
4、实例:利用请求转发、域对象实现(模拟)查询个人信息功能
UserServlet:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.查询个人信息(模拟)
String name = "王海涛";
String age = "18";
//2.将数据存入request对象的map中
request.setAttribute("name", name);
request.setAttribute("age", age);
//3.通过转发将request对象(及其中的数据)带到JSP进行显示
request.getRequestDispatcher("/show.jsp").forward(request, response);
}
show.jsp:
<body>
<p>姓名:<%= request.getAttribute("name") %></p>
<p>年龄:<%= request.getAttribute("age") %></p>
</body>