首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

15.3  技 术 要 点

本实例是通过JSP+JavaBean完成开发的,没有采用任何其他框架技术,在JSP中通过JSP标签调用JavaBean的方法如下:

<jsp:useBean id="connection" scope="request" class="com.tool.JDBConnection"/>

在上述代码中,class属性为欲调用JavaBean(JDBConnection.java)的相对路径;id属性为欲调用类的对象的名称;scope属性有4个可选值,分别是application、session、request和page,分别代表JavaBean对象的4种不同的生命周期和使用范围。下面将分别介绍这4个可选值的使用方法。

15.3.1  application活动范围

将scope属性设置为application的JavaBean组件形式代码如下:

<jsp:useBean id="connection" scope="application" class="com.tool.JDBConnection"/>

在上述代码中,JavaBean组件具有application活动范围,那么它的生命周期和JSP的application对象是同步的,作用范围也和application对象一样。使用这种类型的JavaBean组件可以在多个用户之间共享全局信息。具体来说,如果某个JSP程序使用<jsp:useBean>操作指令创建一个JavaBean对象,而且这个JavaBean组件具有application活动范围,那么这个JavaBean就一直在服务器的内存中存在,随时处理客户端的请求,当服务器关闭时,它所保存的信息才会消失,它所占用的系统资源才会被释放。在此期间,如果有若干个用户请求的JSP程序中需要用到这个JavaBean组件,那么服务器在执行<jsp:useBean>操作指令时并不会创建新的JavaBean组件,而是创建源对象的一个同步复制,在任何一个复制对象上发生的改变都会影响到源对象,源对象也会做出同步的改变,不过这个状态的改变不会影响其他已经存在的复制对象。这种类型的JavaBean组件的功能和JSP的application对象十分类似,不过前者的功能强大得多,而且可以自由扩展,用起来比较方便。

15.3.2  request活动范围

将scope属性设置为request的JavaBean组件形式代码如下。

<jsp:useBean id="connection" scope="request" class="com.tool.JDBConnection"/>

在上述代码中,JavaBean组件具有request活动范围,那么这个JavaBean组件的生命周期、作用范围和JSP的request对象是一样的。当一个JSP程序使用<jsp:forward>操作指令定向到另外一个JSP程序或者是使用<jsp:include>操作指令导入另外的JSP程序,那么第一个JSP程序会把request对象传送到下一个JSP程序,而属于request活动范围的JavaBean组件对象也将伴随着request对象送出,被第二个JSP程序接受。因此,所有通过这两个指令连接在一起的JSP程序都可以共享一个request对象,共享这种类型的JavaBean组件对象。这种类型的JavaBean组件对象使得JSP程序之间传递信息更为容易。但是这个JavaBean不能用于客户端与服务器端之间传递信息,因为客户端是没有办法执行JSP程序及创建新的JavaBean对象的。

15.3.3  page活动范围

将scope属性设置为page的JavaBean组件形式代码如下。

<jsp:useBean id="connection" scope="page" class="com.tool.JDBConnection"/>

在上述代码中,JavaBean组件具有page活动范围,那么它的生命周期和作用范围在这4种类型的JavaBean组件中是最小的。page活动范围类型的JavaBean组件的生命周期为JSP程序的运行周期,当JSP程序运行结束时,该JavaBean组件的生命周期也就结束了。page活动范围类型的JavaBean组件程序作用范围只限于当前的JSP程序中,它无法在其他的JSP程序中起作用,对应不同的客户端请求,服务器都会创建新的JavaBean组件对象,而且一旦客户端的请求执行完毕,那么该JavaBean对象会马上被注销,无法被其他的客户端请求所使用。

15.3.4  session活动范围

将scope属性设置为session的JavaBean组件形式代码如下。

<jsp:useBean id="connection" scope="session" class="com.tool.JDBConnection"/>

在上述代码中,JavaBean组件具有session活动范围,那么这个JavaBean组件的生命周期作用范围就和JSP的session对象的生命周期和作用范围一样。也就是说,这一类型的JavaBean组件的生命周期就是某个对话过程所经历的时间。实际上,会话过程是对于单个用户而言的,会话过程的开始以用户开始访问某个网站为标志,会话过程的结束以用户结束对该网站的访问为标志。不同的用户对应着不同的会话过程,不同的会话过程之间互不干涉,互不影响。例如:用户A第一次访问了某个网站的某个JSP程序,而其他的JSP程序又用到同一个JavaBean对象时,那么服务器不会创建新的JavaBean对象,而是使用已经存在的JavaBean对象的实例,也就是说在第一个JSP程序中创建的JavaBean组件对象在这个用户访问的同一网站的所有JSP程序中都是可用的,而且这个JavaBean组件对象的状态保持唯一性。如果有另一个用户B,访问了用户A访问过的JSP程序,服务器将会为用户B创建只属于它的JavaBean组件对象。这个新创建的JavaBean组件对象对于用户B访问的同一网站的所有JSP程序中都是可以直接使用的,而不是需要创建一个新的组件。并且属于用户A的JavaBean组件对象和属于用户B的组件对象都是唯一的,它们之间互不干涉。如果有多个用户在线,情况也是一样。

scope属性为session的JavaBean组件的功能、作用范围都和JSP的session对象十分类似,不过前者的功能比后者要强大得多,使用起来也灵活得多,并且具有可扩展性,后者没有扩展性。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论