JavaBean在JSP中的应用(3个JSP标签)
2016-12-29 08:15
337 查看
摘要: 摘自《深入体验JAVA WEB开发内幕——核心基础》,如有版权问题,请联系我。
因此,在JSP页面可以把该类当做一个JavaBean来看待,且认为该JavaBean包含一个time的属性。
JSP页面按照调用JavaBean的方式对Date类进行调用
JSP页面像调用一个普通Java类的方式调用JavaBean
二、<jsp:useBean>标签
该标签用于在某个指定的域范围(application、session、request、pageContext等)中查找一个指定名称的JavaBean对象,如果存在则直接返回该JavaBean对象的引用。如果不存在则实例化一个新的JavaBean对象,并将它按指定的名称存储在指定的域范围中。常见语法如下:
其中,class属性用于指定JavaBean的完整类名,JSP引擎将使用这个类名来创建JavaBean的实例对象或作为查找到JavaBean对象的类型;id属性用于指定JavaBean实例对象的引用名称和其存储在域范围的名称;scope属性用于指定JavaBean实例对象所存储的域范围,其默认值是page。
page表示将JavaBean实例对象存储在PageContext对象中,默认存储进page域范围;
request表示将JavaBean实例对象存储在ServletRequest对象中;
session表示将JavaBean实例对象存储在HttpSession对象中。此设置要求当前JSP页面支持Session,即没有将page指令的session属性设置为false;
application表示将JavaBean实例对象存储在ServletContext对象中。
除了上述几个属性,该标签还有:
type属性
用于指定JavaBean实例对象的引用变量的类型,它必须是JavaBean对象的类名称、父类名称或所实现的接口名称中的一个。type属性的默认值为class属性的设置值,当JSP引擎将标签翻译成Servlet程序中的代码时,将使用type属性值作为JavaBean对象引用变量的类型。
beanName属性
用于指定JavaBean的名称,这个名称不是JavaBean实例对象的引用名称,而是JavaBean规范中定义的一种名称,它将作为传递给java.beans.Beans类的instantiate方法的参数。java.beans.Beans类的instantiate方法可以从这个资源文件中产生JavaBean的实例对象。设置该属性不能同时设置class属性,但必须同时设置type属性。
<jsp:useBean>标签除了可以按照空元素的方式进行使用外,还可以按容器元素的格式进行使用,如:
Body部分只在标签创建JavaBean的实例对象时才执行,也就是说,如果scope属性指定的域范围存在id属性指定的JavaBean对象,那Body内容将被忽略。
name属性是必不可少的,用于指定JavaBean实例对象的名称,其值应与<jsp:useBean>标签的id属性相同。
property属性是必不可少的,用于指定JavaBean实例对象的属性名。
value属性是可选的,它用于指定JavaBean实例对象的某个属性的值,value属性的设置值可以是一个字符串,也可以是一个表达式。如果是value属性的设置值是字符串,那么它将自动转换成所要设置的JavaBean属性的类型;如果是表达式,则表达式的结果类型与所要设置的JavaBean属性的类型一致(不一致则报错)。
param属性是可选的,它用于将请求参数的值赋给JavaBean实例对象的某个属性。如果当前请求消息中没有param属性所指定的请求参数,该标签不会将null赋给JavaBean属性,所设置的JavaBean属性仍将等于其原来的初始值,value和param属性不能同时使用。
property="*",这种形式用于对JavaBean实例对象多个属性进行赋值,它表示将请求消息中的参数逐一与JavaBean实例对象中的属性进行比较,如果找到同名的属性,则将该参数赋给该属性,不存在则不会被赋值。
注意:如果param属性和value属性都没有设置,且property="prppertyName",它等效于param属性的设置值与property属性值相同的情况
其中,name属性用于指定JavaBean实例对象的名称,其值应与<jsp:useBean>标签的id属性值相同,property属性用于指定JavaBean实例对象的属性名,如果一个JavaBean实例对象的某个属性的值为null,则该标签输出该属性的结果将是内容为null的字符串。
© 著作权归作者所有
一、在JSP中如何使用JavaBean
为了能在JSP页面中集成JavaBean组件和支持JavaBean的功能,JSP规范专门定义了三个JSP标签:<jsp:useBean>、<jsp:setProperty>和<jsp:getProperty>,它们分别用于创建和查找JavaBean的实例对象,设置JavaBean对象的属性,读取JavaBean对象的属性。对于JSP页面来说,只要一个类具有一个公共的、无参数的构造方法,就可以把这个类当做JavaBean来使用,如果类中有不接受任何参数的getter方法或只接受一个参数的setter方法,就可以把前缀get或set后面的部分当着一个属性名来引用。例如,JDK自带的java.util.Date类具有一个公共的、无参数的构造方法,其中还包含一个定义的方法:public void setTime(long time)
因此,在JSP页面可以把该类当做一个JavaBean来看待,且认为该JavaBean包含一个time的属性。
JSP页面按照调用JavaBean的方式对Date类进行调用
<jsp:useBean id="currentDate" class="java.util.Date" /> <jsp:setProperty name="currentDate" property="time" value="1234567" /> <jsp:getProperty name="currentDate" property="time" />
JSP页面像调用一个普通Java类的方式调用JavaBean
<% java.util.Date currentDate = new java.util.Date(); currentDate.setTime(1234567); out.println(currentDate.getTime()); %>
二、<jsp:useBean>标签
该标签用于在某个指定的域范围(application、session、request、pageContext等)中查找一个指定名称的JavaBean对象,如果存在则直接返回该JavaBean对象的引用。如果不存在则实例化一个新的JavaBean对象,并将它按指定的名称存储在指定的域范围中。常见语法如下:<jsp:useBean id="beanInstanceName" class="package.class" scope="page|request|session|application" />
其中,class属性用于指定JavaBean的完整类名,JSP引擎将使用这个类名来创建JavaBean的实例对象或作为查找到JavaBean对象的类型;id属性用于指定JavaBean实例对象的引用名称和其存储在域范围的名称;scope属性用于指定JavaBean实例对象所存储的域范围,其默认值是page。
page表示将JavaBean实例对象存储在PageContext对象中,默认存储进page域范围;
request表示将JavaBean实例对象存储在ServletRequest对象中;
session表示将JavaBean实例对象存储在HttpSession对象中。此设置要求当前JSP页面支持Session,即没有将page指令的session属性设置为false;
application表示将JavaBean实例对象存储在ServletContext对象中。
除了上述几个属性,该标签还有:
type属性
用于指定JavaBean实例对象的引用变量的类型,它必须是JavaBean对象的类名称、父类名称或所实现的接口名称中的一个。type属性的默认值为class属性的设置值,当JSP引擎将标签翻译成Servlet程序中的代码时,将使用type属性值作为JavaBean对象引用变量的类型。
beanName属性
用于指定JavaBean的名称,这个名称不是JavaBean实例对象的引用名称,而是JavaBean规范中定义的一种名称,它将作为传递给java.beans.Beans类的instantiate方法的参数。java.beans.Beans类的instantiate方法可以从这个资源文件中产生JavaBean的实例对象。设置该属性不能同时设置class属性,但必须同时设置type属性。
<jsp:useBean>标签除了可以按照空元素的方式进行使用外,还可以按容器元素的格式进行使用,如:
<jsp:useBean...> Body </jsp:useBean...>
Body部分只在标签创建JavaBean的实例对象时才执行,也就是说,如果scope属性指定的域范围存在id属性指定的JavaBean对象,那Body内容将被忽略。
三、<jsp:setProperty>标签
该标签用于设置JavaBean对象的属性,也就是调用JavaBean对象的setter方法,其语法如下:<jsp:setProperty name="beanInstanceName" property="propertyName" [ value="{string | <%= expression %>}" | param="parameterName" ] | property="*" />
name属性是必不可少的,用于指定JavaBean实例对象的名称,其值应与<jsp:useBean>标签的id属性相同。
property属性是必不可少的,用于指定JavaBean实例对象的属性名。
value属性是可选的,它用于指定JavaBean实例对象的某个属性的值,value属性的设置值可以是一个字符串,也可以是一个表达式。如果是value属性的设置值是字符串,那么它将自动转换成所要设置的JavaBean属性的类型;如果是表达式,则表达式的结果类型与所要设置的JavaBean属性的类型一致(不一致则报错)。
param属性是可选的,它用于将请求参数的值赋给JavaBean实例对象的某个属性。如果当前请求消息中没有param属性所指定的请求参数,该标签不会将null赋给JavaBean属性,所设置的JavaBean属性仍将等于其原来的初始值,value和param属性不能同时使用。
property="*",这种形式用于对JavaBean实例对象多个属性进行赋值,它表示将请求消息中的参数逐一与JavaBean实例对象中的属性进行比较,如果找到同名的属性,则将该参数赋给该属性,不存在则不会被赋值。
注意:如果param属性和value属性都没有设置,且property="prppertyName",它等效于param属性的设置值与property属性值相同的情况
四、<jsp:getProperty>标签
该标签用于读取JavaBean对象的属性,也就是调用JavaBean对象的getter方法,然后将读取的属性值转换成字符串后插入进输出的响应正文中,其使用语法如下:<jsp:getProperty name="beanInstanceName" property="PropertyName" />
其中,name属性用于指定JavaBean实例对象的名称,其值应与<jsp:useBean>标签的id属性值相同,property属性用于指定JavaBean实例对象的属性名,如果一个JavaBean实例对象的某个属性的值为null,则该标签输出该属性的结果将是内容为null的字符串。
© 著作权归作者所有
相关文章推荐
- Java对象与JVM(一) Java对象在Java虚拟机中的创建过程
- 用java实现一个简易编译器1-词法解析入门
- Spring基础:快速入门spring cloud(3):业务逻辑服务
- IO流File的迭代
- Springboot 第一次体验
- 有关小数的取舍
- 欢迎使用CSDN-markdown编辑器
- Java字节码文件
- Eclipse - 删除注释
- Java内存管理:Java内存区域 JVM运行时数据区
- springmvc实现jsonp
- 如何做到有扎实的Java基础
- 在java中利用enum实现swtich String类型
- Rebound库使用分享
- SpringBoot22 之banner控制
- SpringBoot23 之 导入XML配置
- 单元测试(一)JUnit 入门:断言、测试、异常测试、限时测试
- 单元测试(二)JUnit 进阶功能:assertThat、Parameterized 参数化测试、Theories 理论型测试
- java高并发设计(二)--线程
- Java设计模式(10) 外观