application
和
session
比
较简单
,
这
里主要
说
明
request
和
page
的作用范
围
。
application :全局作用范 围 ,整个 应 用程序共享,就是在部署文件中的同一个 webApp 共享,生命周期 为 : 应 用程序启 动 到停止。
session :会 话 作用域,当用 户 首次 访问时 , 产 生一个新的会 话 ,以后服 务 器就可以 记 住 这 个会 话 状 态 。生命周期:会 话 超 时 ,或者服 务 器端 强 制使会 话 失效。
request : 请 求作用域,就是客 户 端的一次 请 求。
page :一个 JSP 页 面。
以上作用范 围 使越来越小, request 和 page 的生命周期都是短 暂 的,他 们 之 间 的区 别 就是:一个 request 可以包含多个 page 页 (include , forward 以及 filter) 。 举 个 简单 的例子:
jsp1.jsp
<jsp:useBean id="beanID" class = "xxx .xxx.BeanClass" scope="request" />
<jsp:include page="jsp2.jsp" />
jsp2.jsp
<jsp:getProperty name="beanID" property="sample" />
运行 jsp1.jsp 可以正常 显 示数据,因 为 作用范 围 是 request ,相当于 调 用了 request.setAttribute() 方法,
jsp2 页 通 过 request.getAttribute 来 获 得 这 个 bean. 如果把 request 改 为 page, 就会抛出 NullPointerExceptioin.
一个 请 求可以跨好几个 JSP(include 和 forword) 和 Servlet( 如 filter). 不 过这 里有一个需要注意的就是区 别
<jsp:include> 和 <%@ include %>. 如果上面的 <jsp:include page="jsp2.jsp" /> 改 为 <%@ include file="jsp2.jsp" %>, 即使 scope 为 page 也是正确的 ,<%@ include %> 是 编译时 包含 ,<jsp:include> 是运行 时 包含 . 前者就相当于宏 , 编译时 替代 , 后者相当于函数 , 运行 时 返回 .<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
application :全局作用范 围 ,整个 应 用程序共享,就是在部署文件中的同一个 webApp 共享,生命周期 为 : 应 用程序启 动 到停止。
session :会 话 作用域,当用 户 首次 访问时 , 产 生一个新的会 话 ,以后服 务 器就可以 记 住 这 个会 话 状 态 。生命周期:会 话 超 时 ,或者服 务 器端 强 制使会 话 失效。
request : 请 求作用域,就是客 户 端的一次 请 求。
page :一个 JSP 页 面。
以上作用范 围 使越来越小, request 和 page 的生命周期都是短 暂 的,他 们 之 间 的区 别 就是:一个 request 可以包含多个 page 页 (include , forward 以及 filter) 。 举 个 简单 的例子:
jsp1.jsp
<jsp:useBean id="beanID" class = "xxx .xxx.BeanClass" scope="request" />
<jsp:include page="jsp2.jsp" />
jsp2.jsp
<jsp:getProperty name="beanID" property="sample" />
运行 jsp1.jsp 可以正常 显 示数据,因 为 作用范 围 是 request ,相当于 调 用了 request.setAttribute() 方法,
jsp2 页 通 过 request.getAttribute 来 获 得 这 个 bean. 如果把 request 改 为 page, 就会抛出 NullPointerExceptioin.
一个 请 求可以跨好几个 JSP(include 和 forword) 和 Servlet( 如 filter). 不 过这 里有一个需要注意的就是区 别
<jsp:include> 和 <%@ include %>. 如果上面的 <jsp:include page="jsp2.jsp" /> 改 为 <%@ include file="jsp2.jsp" %>, 即使 scope 为 page 也是正确的 ,<%@ include %> 是 编译时 包含 ,<jsp:include> 是运行 时 包含 . 前者就相当于宏 , 编译时 替代 , 后者相当于函数 , 运行 时 返回 .<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
转载于:https://blog.51cto.com/jornathan/537325