JavaBean基本概念
在开发软件的过程中,应尽量将业务逻辑和表现层分开,达到完全解耦,这是分层设计。JavaBean实现核心的业务逻辑,JSP页面用于表现层。JavaBean是一种特殊的Java类,形式上是纯Java代码,是一个可以重复利用的组件,提高了JSP页面的可维护性。
JavaBean具有一下特性
- 支持反射机制:利用反射机制可以分析出JavaBean是如何运行的
- 支持事件:事件是一种简单的通信机制,利用它可以将信息通知给JavaBean
- 支持属性:可以自定义属性,利用标准标签与JSP页面交互数据
- 支持持久性:持久性是指可以将JavaBean进行保存,在需要的时候又可以重新载入
- JSP页面中HTML代码与Java代码分离,便于页面设计人员和Java编程人员的分工维护
JavaBean有一下规范
- JavaBean类必须是public的
- 必须拥有一个不带参数的构造方法
- 提供给JSP页面调用的方法,必须赋予public访问权限
- JavaBean中的属性,如果要使用必须定义get和set方法
在JSP中使用JavaBean
<jsp:useBean>元素
在指定的某个作用域范围内查找一个指定名称的JavaBean对象,如果存在则直接返回该对象的引用,如果不存在则实例化一个新的JavaBean对象,并将它按指定的名称存储在指定的作用域范围内。
<jsp:useBean id="product" class="package.class" scop="page|request"/>
属性值 | 说明 |
---|---|
id | Bean的变量名,可以在指定的范围内使用该变量名 |
class | Bean的路径名,必须是全限定名路径 |
scope | 作用域范围 |
<jsp:setProperty>元素
属性值 | 说明 |
---|---|
name | 指定JavaBean对象的名称,其值与前面的id属性相同 |
property | 指定JavaBean对象的属性名 |
value | 指定某个属性的值,将会被自动转换成所要设置的JavaBean属性的类型 |
param | 将一个请求参数的值 赋给JavaBean对象的某个属性 |
value和param两者不能同时使用
//指定属性名和属性值
<jsp:serProperty name="product" property="price" value="10"/>
//使用一个表达式来赋值
<%float price=10; %>
<jsp:serProperty name="product" property="price" value="<% =price %>"/>
//假设有一段请求:http://localhost:8080/sell/product.jsp?priceParam=10
<jsp:serProperty name="product" property="price" param="priceParam"/>
//请求:http://localhost:8080/sell/product.jsp?price=10
//可以发现请求中的属性名称和Bean中属性名称完全相同
<jsp:serProperty name="product" property="price"/>
//请求:http://localhost:8080/sell/product.jsp?price=10&num=10
//该形式将对Bean中的多个属性赋值,将请求中的参数逐一与Bean中属性进行比对,找到同名的就进行赋值
<jsp:serProperty name="product" property="*"/>
<jsp:getProperty>元素
用于读取JavaBean对象的属性,将读取的属性值转换成字符串后输出到响应正文中
<jsp:getProperty name="product" property="price"/>