A. 关于javabean和DAO模式
JavaBean是数据的承载体,负责把一组有逻辑的数据从一个层传到另一个层。
DAO的出现是对持久层的变动的一个解决方案。
对于不同的持久介质(RDBMS、XML、ODBMS等)、不同的提供厂商(Oracle、Mysql等)提供的产品,进行持久化操作时,对于业务逻辑层应该是统一的,于是DAO模式就出现了。
对于同一个业务操作,例如添加一个用户,请求到达业务层,只需调用DAO层的addUser()即可。而到底是怎么添加的、以及添加到哪里,是业务层不用关心的,也是不要关心的。
于是,持久层将利用业务层传递来的请求数据,即封装了要添加的用户信息JavaBean,添加到持久层:Oracle就要取序列,Mysql会自动增长,XML就要手动控制了。这些实现细节对业务逻辑层是一样的效果。
但是DAO模式中也会有一些数据承载体,不过它们承载的不是业务数据,而是持久化操作的相关对象,例如DAO对象,DAO工厂,连接对象等。表面上看,这些也承载数据,但它实际是包含了内在的逻辑和操作。例如连接对象的打开和关闭,事务的回滚和提交等。
所以,严格意义上来说,它们不是纯粹的JavaBean。纯粹的JavaBean是只包含属性和这些属性对应的getter和setter。
B. javaBean的用法
<jsp:setProperty>标签用来设置已经实例化的JavaBean对象的属性.设置setProperty标签属性值有三种语法格式.
1.通过表达式或字符串设置
语法格式:
<jsp:setProperty name="beanName" property="propertyName" value="<%=expression%>|字符串" />
其中name表示JavaBean的名字,对应useBean标签中的id属性;property表示要给哪个属性设置值,value表示设置属性的表达式或者字符串.
如果将表达式的值设置为JavaBean属性的值,表达式值的类型必须和JavaBean属性的类型一致;如果将字符串设置为JavaBean属性的值,这个字符串将会自动转化成JavaBean属性的类型.
比如:
<HTML>
<BODY>
<%@ page language="java" %>
<jsp:useBean id="taxbean" scope="application" class="tax.TaxRate" />
<jsp:setProperty name="taxbean" property="proct" value="A002" />
<jsp:setProperty name="taxbean" property="rate" value="17" />
产品: <jsp:getProperty name="taxbean" property="proct">
<br>
税率:<jsp:getProperty name="taxbean" property="rate">
</BODY>
</HTML>
2.通过HTTP表单的参数值设置
语法格式:
<jsp:setProperty name="beanName" property="*" />
其中name表示JavaBean的名字,对应useBean标签中的id属性;property为星号,表示不用再具体指定JavaBean属性的值将对应表单中的那个参数,系统会自动根据名字进行匹配.但要求表单参数的名字必须与JavaBean中属性的名字完全相同.
3.通过request的参数值设置
语法格式:
<jsp:setProperty name="beanName" property="propertyName" param="paramName" />
其中name表示JavaBean的名字,对应useBean标签中的id属性;property表示要给哪个属性设置值;param表示表单中的参数名字.此种格式通过request获得表单中的参数值,JSP引擎自动将request获取的参数值传递给JavaBean中对应的属性.但要求request参数名字必须与JavaBean中的属性名字一致.