JSP与JavaBean

 

目录

一、编写和使用JavaBean

1、编写JavaBean

2、保存bean的字节码

3、创建与使用bean

1、使用bean

2、bean的加载原理

3、bean的有效范围和生命周期

二、获取和修改bean的属性

1、getProperty动作标记

2、setProperty动作标记

三、bean的辅助类


一、编写和使用JavaBean

1、编写JavaBean

编写JavaBean就是编写一个Java的类,所以只要会写类就能编写一个JavaBean。这个类创建的一个对象成为一个JavaBean,简称bean,分配给bean的变量(成员变量),也称为bean的属性。

为了能让使用bean的应用程序构建工具(比如Tomcat服务器)使用JSP动作标记知道bean的属性和方法,在类的命名上需要遵守以下规则:

(1)如果类的成员变量(也称bean的属性)的名字是xxx,那么为了获取或更改bean的属性的值,类中必须提供两个方法:

getXxx(),用来获取属性xxx.

setXxx(),用来修改属性xxx.

(2)类中定义的方法的访问权限都必须是public的。

(3)类中必须有一个构造方法是public、无参数的。

2、保存bean的字节码

为了使JSP页面使用bean,Tomcat服务器必须使用相应的字节码文件创建一个对象,即创建一个bean。为了让Tomcat服务器能找到字节码文件,字节码文件必须保存在特定的目录中。

3、创建与使用bean

1、使用bean

使用JSP动作标记useBean加载使用bean,语法格式是:

<jsp:useBean id = "bean的名字" class = "创建bean的类" scope = "bean有效范围"/>

<jsp:useBean id = "bean的名字" class = "创建bean的类" scope = "bean有效范围"/>

</jsp:useBean>

需要特别注意的是,其中的"创建bean的类“要带有包名。

2、bean的加载原理

当JSP页面使用JSP动作标记useBean加载一个bean时,Tomcat服务器首先根据JSP动作标记useBean中id给出的bean名字以及scope给出的使用范围(bean生命周期),在Tomcat服务器管理的pageContent内置对象中查找是否含有这样的bean(对象)。如果这样的bean(对象)存在,Tomcat服务器就复制这个bean对象给JSP页面,就是常说的Tomcat服务器分配这样的bean给JSP页面。如果在pageContent中没有找到JSP动作标记要求的bean,就根据class指定的类创建一个bean,并将做创建的bean添加到pageContent中。通过Tomcat服务器创建bean的过程可以看出,首次创建一个新的bean需要用到相应类的字节码文件创建对象,当某些JSP页面再需要同样的bean时,Tomcat服务器直接将pageContent中已经有的bean分配给JSP页面,从而提高JSP页面bean的使用效率。

3、bean的有效范围和生命周期

scope的取值范围给出了bean的生命周期(存活时间),即scope取值决定了Tomcat服务器分配给用户的bean的有效范围和生命周期。

(1)page bean。scope取值为page的bean称为page bean,page bean的有效范围是用户访问的当前页面,存活时间直到当前页面执行完毕。Tomcat服务器分配给每个JSP页面的page bean是互不相同的。也就是说,尽管每个JSP页面的page bean的功能相同,但他们占有不同的内存空间。

page bean的有效范围是当前页面,当页面执行完毕,Tomcat服务器取消分配的page bean,即释放page bean所占有的内存空间。

(2)session bean。scope取值为session的bean称为session bean,session bean的有效范围是用户访问的Web服务目录下的各个页面,存活时间是用户的会话期(session)间,直到用户的会话消失(sesssion对象达到了最大生存时间或用户关闭自己的浏览器以及服务器关闭)。如果用户访问Web服务目录多个页面,那么每个页面id相同的session bean是同一个bean(占有相同的内存空间)。当用户的会哈(session)小时,Tomcat服务器取消所分配的session bean,即释放session bean所占有的内存空间。

(3)request bean。scope取值为request的bean称为request bean,request bean的有效范围是用户请求的当前页面,存活时间是从用户的请求产生到请求结束。Tomcat服务器分配给每个JSP页面的request bean是互不相同的。Tomcat服务器对请求作出响应之后,取消分配给这个JSP页面的request bean。简单地说,request bean只在当前页面有效,直到响应结束。request bean存活时间略长于page bean的存活时间,原因是Tomcat服务器认为页面执行完毕后,响应才算结束。

(4)application bean。scope取值为application的bean称为application bean。application bean的有效范围是当前Web服务目录下的各个页面,存活时间直到Tomcat服务器关闭。Tomcat服务器为访问Web服务目录的所有用户分配一个共享的bean,即不同用户的applicatin bean也都是相同的一个。也就是说,任何一个用户对自己application bean属性的改变,都会影响到其他用户。

二、获取和修改bean的属性

1、getProperty动作标记

使用getProperty动作标记可以获得bean的属性值,并将这个值用串的形式发送给用户的浏览器。使用getProperty动作标记之前,必须使用useBean动作标记获得相应的bean。getProperty动作标记的语法格式是:

<jsp:getProperty name = "bean的id" property = "bean的属性" />

<jsp:getProperty name = "bean的id" property = "bean的属性">

</jsp:getProperty>

 其中name的取值是bean的id,用来指定要获取哪个bean的属性的值,property取值是该bean的一个属性的名字。

2、setProperty动作标记

使用setProperty动作标记可以设置bean的属性值.使用setProperty动作标记之前,必须使用useBean动作标记获得相应的bean。setProperty动作标记的语法格式是:

(1)将bean属性值设置为一个表达式的值或字符序列。

<jsp:setProperty name = "bean的id" property = "bean的属性"

value = "<%= expression %>"/>

<jsp:setProperty name = "bean的id" property = "bean的属性"

value ="字符序列"/>

value给出的值的类型要和bean的属性的类型一致。

(2)通过HTTP表单的参数值来设置bean的相应属性值。

1、用form表单的所有参数值设置bean相对应属性值的格式如下:

<jsp:setProperty name = "bean的id的名字" property ="*"/>

在setProperty标记的上述用法中不具体指定bean属性值将对应form表单中哪个参数指定的值,系统会自动根据名字进行匹配对应,但要求bean属性的名字必须在form表单中有名称相同的参数名字相对应,Tomcat服务器会自动将参数的字符串值转换为bean相对应的属性值

2、用form表单的某个参数的值设置bean的某个属性值的使用格式如下:

<jsp:setProperty name ="bean的名字" property ="属性名" param ="参数名"/>

setProperty标记的上述用法具体指定了bean属性值将对应表单中哪个参数名(param)指定的值,这种设置bean的属性值的方法,不要求property给出的bean属性的名字和param给出的参数名一致,即不要求bean属性的名字必须和表单中某个参数名字相同。

当把字符序列设置为bean的属性值时,这个字符序列会自动被转化为bean的属性类型。

三、bean的辅助类

在写一个创建bean的类时,除了需要用import语句引入JDK提供的类,可能还需要自己编写一些其他的类,只要将这样的类的包名和bean类的包名一致即可(也可以和创建bean的类写在一个Java源文件中)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值