10.1 JavaBean简介
JavaBean是一种可重复使用的且跨平台的软件组织。JavaBean可分为两种:一种是有用户界面的JavaBean,一种是负责表示业务数据或者处理业务的JavaBean。
一个标准的JavaBean有以下几个特性:
JavaBean是公共类。
JavaBean是一个不带参数的构造方法。
JavaBean通过set方法设置属性,get方法获取属性
属性名和get方法之间存在固定的对应关系,如果属性名为"xyz",那么get方法名为getXyz();属性名的第一个字母大写,set()方法相同。
如果希望JavaBean能被持久化,那么可以使它实现java.io.Serializeble接口。
10.2 JSP访问JavaBean的语法:
1:导入JavaBean类
如果在JSP网页中访问JavaBean,首先要通过<%@ page import%>指令引入JavaBean类,例如:
<%@ page import ="mypack.CounterBean"%>
2:声明JavaBean对象:
用<jsp:useBean>标签来声明JavaBean对象,例如:
<jsp:useBean id="myBean" class="mypack.CounterBean" scope="session" />
id属性:代表JavaBean对象的ID,实际上表示引用JavaBean对象的局部变量,以及存放在特定范围内的属性名。JSP规范要求存放在所有范围内的每个JavaBean对象都有唯一的ID
class属性:用来指定JavaBean的类名
scope属性:用来指定JavaBean对象的存放范围,可选值包括:page(网页范围),request(请求范围),session(会话范围)和application(web应用范围),默认为page类型。
3.访问JavaBean属性:
JSP提供了访问JavaBean属性的标签,如果要将JavaBean的某个输出属性输出到页面上,可以用<jsp:getProperty>标签,例如:<jsp:getProperty name="myBean" property="count"/>
等价于:<%=myBean.getCount()%>
如果要给某个属性赋值可以利用<jsp:setProperty>标签
<jsp:setProperty name="myBean" property="count" value="1"/>
要注意的是:一个JSP文件通过<jsp:setProperty>或<jsp:getProperty>标签访问一盒JavaBean的属性,要求JSP文件先通过<jsp:useBean>标签声明这个JavaBean,否则会抛出异常。
10.3JavaBean的范围
10.3.1JavaBean在页面(page)范围内
<jsp:useBean id="myPageBean" scope="page" class="mypack.CounterBean">
以下两个情况会结束生命周期:
1:客户请求访问的当前怕个Counter.jsp页面执行完毕,接着通过<jsp:forward>标记请求转发到另一个web组件。
2:客户请求访问的当前pageCounter.jsp页面执行完毕并向客户端发挥响应
10.3.2JavaBean在请求范围内
<jsp:useBean id="myPageBean" scope="request" class="mypack.CounterBean">
以下两个情况会结束生命周期:
1:客户请求访问的当前requestCounter.jsp执行完毕并向客户端发回响应。
2:客户请求访问的当前requestCounter.jsp把请求转发requestCounter_2.jsp给执行完毕并向客户端发回响应。
对于requestCounter.jsp文件中声明的CounterBean对象,它可以被以下组件共享:
1:requestCounter.jsp文件本身
2:和requestCounter.jsp文件共享同一个客户请求的Web组件以及转发请求的其他Web组件
10.3.3JavaBean在会话范围内:
<jsp:useBean id="myPageBean" scope="session" class="mypack.CounterBean">
会话范围内的JavaBean对象实际上是作为属性保存在HttpSession对象中的,其属性名为JavaBean的ID,属性值为JavaBean对象,因此可以通过HttpSession.getAttribute()方法读取会话范围内的JavaBean对象,例如:
CounterBean obj=(CounterBean)session.getAttribute("mySessionBean")
10.3.4JavaBean在Web应用范围内
<jsp:useBean id="myPageBean" scope="application" class="mypack.CounterBean">
Web应用范围对应整个Web应用的声明周期,处于同一个Web应用中的所有Web组件共享这个Web应用范围内的JavaBean对象
CounterBean obj=(CounterBean)application.getAttribute("myapplicationBean")
10.4在Bookstore应用中范围Javabean(略)
2018.07.14