Tomcat与JavaWeb开发技术详解JSP访问JavaBean第十章

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











猜你喜欢

转载自blog.csdn.net/qq_40369435/article/details/81047204
今日推荐