Motivation
虽然可以在JSP中编写Scriptlet直接使用JavaBean,但JavaBean的设计旨在减少JSP中Scriptlet。故而,JavaBean通常搭配<jsp:useBean />标签进行使用,并分别通过标签<jsp:setProperty />和<jsp:getProperty />对JavaBean的属性进行设值和取值。
***注意***: 在标签标识 如 "jsp:useBean"中不要有空格 " "
2. JSP使用JavaBean的动作标签
| 动作标签 | 属性说明 |
<jsp:useBean id="beanInstanceName" class="packageName.ClassName" sope="page|request|session|application" type="package.class" beanName="packageName.ClassName"/> (标签作用:获取或创建JavaBean) | id: 指定JavaBean实例的参考名称; 该id本质就是转化为Servlet的service方法中的一个变量; 该id可以在随后的<jsp:setProperty />和<jsp:getProperty />直接使用 |
| class: 指定了定义JavaBean的具体类 | |
| scope: 指定在哪个范围内查找被命名为id属性值的JavaBean实例,默认的查找范围是page | |
| type: 如果当前范围内存在一个JavaBean实例,则会将其数据类型转换成type属性值定义的类型;故而,type属性值必须与class属性值兼容(即可以是class的一个超类,或者 class实现的一个接口) | |
| beanName: 使用java.beans.Beans.instantiate方法实例化一个JavaBean | |
<jsp:setProperty name="beanInstanceName" property="*|propertyName" param="parameterName" value="String|expression"/> (标签作用:设置JavaBean的属性值) | name: 使用哪个名称取得JavaBean的实例 |
property: 如果设定为"*"则自动寻找符合JavaBean设置方法名称的请求参数值;如果请求参数为xxx,就调用setXxx()方法将请求参数值设置给JavaBean实例 | |
param: 指定请求参数,并将该请求参数的数值设定为JavaBean的属性值 注意: 如若JavaBean的属性和请求参数的名字不相同,则必须同时给出property和param | |
value: 为JavaBean属性的赋值;value是String或一个表达式 注意: String或表达式的运行结果 与 JavaBean属性的数据类型转换 | |
<jsp:getProperty name="beanInstanceName" property="propertyName"/> (标签作用:获取JavaBean的属性值) | name: 使用哪个名称取得JavaBean的实例 |
| property: 要取得哪一个属性值;如果指定为xxx,就调用getXxx()方法取得JavaBean实例的属性值并显示在网页上 |
3. Code Example (<jsp:useBean />标签的代码转化)
JSP页面中编写的<jsp:useBean />标签,最终会被JSP引擎转化成Servlet中service方法中的一个变量。
JSP页面中通过标签定义一个名字叫做"user2"的JavaBean,该Bean由UserBeanDemo定义
JSP转化为Servlet后的相关代码
|



