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

JavaBean简介

JavaBean是一种可重复使用的且跨平台的软件组织。
JavaBean可分为两种:一种是有用户界面的JavaBean一种是负责表示业务数据或者处理业务的JavaBean

一个标准的JavaBean有以下几个特性:

  • JavaBean是公共类。

  • JavaBean是一个不带参数的构造方法。

  • JavaBean通过set方法设置属性,get方法获取属性

属性名和get方法之间存在固定的对应关系,如果属性名为"xyz",那么get方法名为getXyz();属性名的第一个字母大写,set()方法相同。

如果希望JavaBean能被持久化,那么可以使它实现java.io.Serializeble接口。

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:setPropertyjsp:getProperty标签访问一盒JavaBean的属性,要求JSP文件先通过jsp:useBean标签声明这个JavaBean,否则会抛出异常。

JavaBean的范围

JavaBean在页面(page)范围内

<jsp:useBean id="myPageBean" scope="page" class="mypack.CounterBean">

以下两个情况会结束生命周期:

  • 客户请求访问的当前怕个Counter.jsp页面执行完毕,接着通过jsp:forward标记请求转发到另一个web组件。

  • 客户请求访问的当前pageCounter.jsp页面执行完毕并向客户端发挥响应

JavaBean在请求范围内

<jsp:useBean id="myPageBean" scope="request" class="mypack.CounterBean">

以下两个情况会结束生命周期:

  • 客户请求访问的当前requestCounter.jsp执行完毕并向客户端发回响应。

  • 客户请求访问的当前requestCounter.jsp把请求转发requestCounter_2.jsp给执行完毕并向客户端发回响应。

对于requestCounter.jsp文件中声明的CounterBean对象,它可以被以下组件共享:

  • requestCounter.jsp文件本身

  • 和requestCounter.jsp文件共享同一个客户请求的Web组件以及转发请求的其他Web组件

JavaBean在会话范围内:

<jsp:useBean id="myPageBean" scope="session" class="mypack.CounterBean">

会话范围内的JavaBean对象实际上是作为属性保存在HttpSession对象中的,其属性名为JavaBean的ID,属性值为JavaBean对象,因此可以通过HttpSession.getAttribute()方法读取会话范围内的JavaBean对象,例如:

CounterBean obj=(CounterBean)session.getAttribute("mySessionBean")

JavaBean在Web应用范围内

<jsp:useBean id="myPageBean" scope="application" class="mypack.CounterBean">

Web应用范围对应整个Web应用的声明周期,处于同一个Web应用中的所有Web组件共享这个Web应用范围内的JavaBean对象

CounterBean obj=(CounterBean)application.getAttribute("myapplicationBean")
发布了69 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40369435/article/details/91907910