Web组件之间跳转: 从AServlet 跳转到 BServlet.
三种类型:
1):请求转发(forward)
2):URL重定向(redirect)
3):请求包含(include)
请求转发(forward):
AServlet操作完毕之后,请求转发到BServlet,继续完成余下的功能.
语法:
request.getRequestDispatcher(String path).forward(request,response);
参数:
path:表示目标资源名称
请求转发的特点:
1):浏览器地址栏路径没变,依然是Servlet1的资源名称.
2):只发送了一个请求.
3):共享同一个请求,在请求中共享数据.
4):最终的响应输出由Servlet2来决定.
5):只能访问当前应用中的资源,不能跨域跳转.
6):可以访问WEB-INF中的资源.
URL重定向(redirect):
AServlet操作完毕之后,重定向到BServlet,继续完成余下的功能.
语法:
response.sendRedirect(String path);
参数:
path:表示目标资源名称.
URL重定向的特点:
1):浏览器地址栏路径发送变化,变成Servlet2的资源名称.
2):只发送了两个请求.
3):因为是不同的请求,所以不能共享请求中的数据.
4):最终的响应输出由Servlet2来决定.
5):可以跨域访问资源.
6):不可以访问WEB-INF中的资源.
数据共享
Web组件(Servlet/JSP)的数据共享得需要作用域对象.
作用域对象存在的意义:在多个Web组件之间共享和传递数据.
四大作用域对象:
名称 | 类型 | 描述 |
---|---|---|
pageContext | PageContext | 表示当前JSP页面的范围 |
request | HttpServletRequest | 表示当前请求范围. 只是共享同一个请求中的数据,若是不同的请求之间,是不能共享的,每次请求都是新的请求对象. |
session | HttpSession | 表示当前应用范围. Tomcat开始启动,application对象就创建好了,Tomcat关闭application对象销毁. |
application | ServletContext | 表示当前应用范围. Tomcat开始启动,application对象就创建好了,Tomcat关闭application对象销毁.在整个Web的生命周期中,有且只有一个application对象 |