免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1455 | 回复: 0
打印 上一主题 下一主题

java培训日志☆JSP与JavaBean [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-14 17:20 |只看该作者 |倒序浏览

第七章 JSPJavaBean
JavaBean简介:
JavaBean是一个可重复使用,且跨平台的软件组件。我们可以将JavaBean视为一个黑匣子,虽然知道这个软件组织具备的功能,却不知道内部是如何运作的。
一般而言,JavaBean可分为:有用户接口(UI)的和没有用户接口的JavaBean。通常JSP是搭配没有UI的JavaBean,因此后面所提到的JavaBean都只是单纯处理一些事务。
通常一个标准的JavaBean有如下几项特征:
(1)   JavaBean是一个公开的(public)类;
(2)   JavaBean类必须有一个无传入参数的构造函数;
(3)   取得或设定属性时,必须使用getXXX方法或setXXX方法。
第一节   JSPJavaBean
JSP搭配JavaBean来使用,由以下优点:
l        可以将HTMLJava程序分离,为了日后维护的方便
如果把所有的程序代码(Html和Java)写到JSP网页中,则会使整个程序代码有多又繁杂,造成日后维护上的困难。
l        可以利用JavaBean的优点
我们可以将常用到的程序写成JavaBean组件,JSP网页只有调用JavaBean组件来执行我们所要的功能,不用再重复写相同的程序,这样一来,也可以节省开发所需的时间。
在搭配JSP+JavaBean时,事先的规划、设计是相当重要的,把一些使用性高且复杂的数据处理写成JavaBean组件。其他部分,如果为了开发方便考虑时,就直接写在JSP网页就行了。
以下的范例程序,显示如何在JSP中搭配使用JavaBean。
范例:
index.jsp
SimpleBean.java
执行后的结果:
1.      

上面是JSP调用JavaBean的方法。如果要在JSP网页中调用JavaBean,就
必须用到这个标签。
现在说明这个标签。当我们在JSP网页中用到它时,表示会产生一个JavaBean的实体。有五个属性:id、scope、class、beanName和type。
l        id
在JSP网页中,id值表示JavaBean的代号。上述例子,用myBean来表示我们使用的JavaBean对象。
l        scope
表示这个JavaBean的范围。它有四种范围:Page、Request、Sessioin和Application。
l        class
表示所调用的JavaBean类的位置。
l        beanName
beanName属性代表了Bean的名字,通常利用java.beans.Beans类的instantiate()方法来初始化。
l        type
type指定了Scripting变量定义的类型,因为Scripting变量定义和class中的属性一致,因此一般我们都采用默认值。
2.      自省机制

这两行都是利用标签来设定JavaBean属性的。不过在说明
标签之前,我们介绍一个重要的机制:自省机制。
所谓自省机制是指:当服务器接收到请求时,它根据请求的参数名称,自动设定与JavaBean相同属性名称的值。
范例:
index.jsp
introspection.jsp
执行后的结果:
3.      
一般来说,JSP提供四种方法来设定JavaBean的属性值:

其中name就是的id,因此name要和的id一样。第一种写法:由窗体传来的参数值,通过自省机制,设定所有的属性值;第二种写法也是通过自省机制,不过只设定myProperty的属性值;第三种写法,由窗体传来的参数名称为ParamName的值,传给属性名称为myProperty;第四种写法,它的弹性最大,它可以通过value,动态设定JavaBean的属性。
第一种方式
第二种方式
第三种方式
第四种方式
范例:
index.jsp
introspection.jsp
执行后的结果:
4.      
若要取得JavaBean中的属性值,我们必须使用标签。这个标签不像标签有那么多种使用方法,而只有一种。
因此使用的方法简单。例如:
其中name就是的id,因此name要和的id一样,而property就是想要取得的属性值。
和一样也有数据类型自动转换功能,不过是将各类型的属性类型皆转为String的类型,然后显示至网页上。
第二节   JavaBean范围
使用JavaBean的时候,我们同样也可以设定JavaBean的范围,JavaBean的范围与JSP的范围相同。在标签里有一属性scope,它用来设定JavaBean的范围,它的值只能为page、request、session和application,不可能为其他的值。如果把JavaBean的范围设定为page时,可以写成:
    表示将JavaBean放在pageContext对象中,且只能在本页面内使用。使用不同的scope属性值,能在不同的范围内共享JavaBean。
1.      Page范围的JavaBean
当使用标签时,假若你没有指定JavaBean的scope时,则容器
范围的默认值为page,因此下面两行程序的意义相同。
当JavaBean的范围设为Page时,表示这个JavaBean的生命周期只在一个页面里,你只能在同一个网页中去存取、利用它。假若程序涉及其他页面时,此时JSP容器会自动释放其内存,结束其生命周期。
范例:
index.jsp
Counter.java
执行后的结果:
2.      Request范围的JavaBean
Request范围的JavaBean,它的生命周期和Request对象有着不可分割的关
系,它的存取范围除了整个网页之外,当使用或标签时,被include或是forward的网页,亦可以存取到原来网页所产生JavaBean。
3.      Session范围的JavaBean
当有一个用户来我们的网站时,可以通过session的机制来对用户进行追踪。
范例:
4.      Application范围的JavaBean
最后一个范围是Application,它的生命周期最长。与服务器同步。
第三节   JavaBean移除
JavaBean使用完后,想要从容器中释放其内存时,移除JavaBean的方法。通常一个JavaBean的产生,会根据它的范围来决定它的生命周期,而它的存在会占用服务器的内存空间,因此为了能够让服务器的性能维持一定的水准,通常我们会先评估JavaBean是否经常使用,若不是经常使用,当JavaBean的工作完成后,就应该顺手将JavaBean从容器中移除掉,来保持服务器的最佳性能。
从容器中移除JavaBean是一件很简单的事情,因为当JavaBean的scope属性为page时,就表示JavaBean放在pageContext对象中,因此要移除时,只需用下列程序:
或是使用EL的语法:
name即为JavaBean的ID,同样地,Request表示放在request对象中,用下列程序,即可移除Request范围的JavaBean。session、application同理。
范例:
index.jsp
执行后的结果:


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/101620/showart_2027534.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP