1.交互方式
Web组件之间跳转: 从AServlet 跳转到 BServlet.
三种类型:
1:请求转发(forward)
2:URL重定向(redirect)
3:请求包含(include)
请求转发(forward):
AServlet操作完毕之后,请求转发到BServlet,继续完成余下的功能.
语法:
request对象.getRequestDispatcher(String path).forward(request,response);
参数:
path:表示目标资源名称(跳转到哪里去)
注意:别忘了写forward(request,response).
=============================================================================
请求转发的特点:
1):浏览器地址栏路径没变,依然是Servlet1的资源名称.
2):只发送了一个请求.
3):共享同一个请求,在请求中共享数据.
4):最终的响应输出由Servlet2来决定.
5):只能访问当前应用中的资源,不能跨域跳转.
6):可以访问WEB-INF中的资源.
7):转发完成之后,Servlet1中的业务代码继续执行
代码实现
URL重定向(redirect):
AServlet操作完毕之后,重定向到BServlet,继续完成余下的功能.
语法:
response对象.sendRedirect(String path);
参数:path,表示目标资源名称.
------------------------------------------------------------------------
URL重定向的特点:
1):浏览器地址栏路径发送变化,变成Servlet2的资源名称.
2):发送了两个请求.
3):因为是不同的请求,所以不能共享请求中的数据.
4):最终的响应输出由Servlet2来决定.
5):可以跨域访问资源.
6):不可以访问WEB-INF中的资源.
代码:
请求转发和URL重定向的选择?
1:若需要共享请求中的数据,只能使用请求转发.
2:若需要访问WEB-INF中的资源,只能使用请求转发.
3:若需要跨域访问,只能使用URL重定向.
4:其他时候,任选.
Web组件(Servlet/JSP)的数据共享得需要作用域对象.
作用域对象存在的意义:在多个Web组件之间共享和传递数据.
四大作用域对象:
名称 类型 描述
----------------------------------------------------------------------------------------------------------------
request HttpServletRequest 表示当前请求范围. 只是共享同一个请求中的数据,若是不同的请求之间,是不能共享的,每次请求都是新的请求对象.
pageContext(page) PageContext 表示当前JSP页面的范围(讲jsp的时候说).
session HttpSession 表示当前会话范围. 只要浏览器不关闭,session就是同一个对象.就可以共享该会话中的数据.
application ServletContext 表示当前应用范围. Tomcat开始启动,application对象就创建好了,Tomcat关闭application对象销毁.
在整个Web的生命周期中(Tomcat启动--Tomcat关闭),有且只有一个application对象.
-----------------------------------------------------------------------------------------------------------------
设置共享信息:
域对象.setAttribute(String name,Object value);
获取共享信息:
Object value = 域对象.getAttribute(String name);
修改共享信息:
重新设置一个同名的属性.
删除共享信息:
域对象.removeAttribue(String name);
注意:往哪一个作用域对象中存储数据,就只能从哪一个作用域中获取数据.
基本: 一般的组件之间的数据共享,存放在request中,此时只能使用请求转发.
登陆信息存放在Session中.
代码: