1.JSP中JavaBean的使用
在JSP中,我们可通过JSP中的<jsp:useBean>、<jsp:setProperty>及<jsp:getProperty>这三个标准操作元素来使用JavaBean。这三个标准元素分别是用来使用JavaBean、设置以及取得JavaBean的属性。
1.1设置JavaBean的存放路径
要在JSP中使用JavaBean,我们必须将JavaBean程序放置到正确的目录位置,如此才能够使用JavaBean。编译好的JavaBean程序(.class文件)必须放置于JSP网页目录下的”WEB-INF\classes” 目录之中。
1.2<jsp:useBean>操作元素
在JSP中使用<jsp:useBean>操作元素来加载JavaBean程序,其相关属性及说明如下:
属性
说明
id
指定在JSP网页中所产生的JavaBean对象名称,如此便可利用此名称在JSP网页中使用JavaBean对象
scope
此为设置JavaBean的使用周期,有request、session、page及application四种
class
指定使用的类名称
关于JavaBean对象的生命周期说明如下:
*request
JavaBean的生命周期是当用户“请求”打开网页的时候,而在打开网页后,JavaBean便自动结束。
*session
该JavaBean的生命周期是当session存在的时候,即从session建立时开始,在系统默认的时间段里当用户未向系统再次提出请求时结束。
*page
JavaBean的生命周期仅限于目前网页中,若用户转换到下一网页或单击刷新按钮,则JavaBean便结束。
*application
表示该JavaBean的生命周期是当application存在的时候,即从application建立时开始,在application结束时,JavaBean也随着结束。
1.3<jsp:setProperty>操作元素
将JavaBean加载之后,我们可以使用<jsp:setProperty>操作元素来设置该JavaBean中的属性值,此元素的属性设置如下表:
属性
说明
name
指定要设置属性的JavaBean对象名称,也就是<jsp:useBean>中的id值
property
要设置的JavaBean对象的属性,前缀为小写字母
value
预指定的属性值
param
表单中的参数名称
以下是一个实例程序:
UserInfo.java文件内容如下:
package bo;
public class UserInfo {
private String name;
private int age;
public UserInfo()
{
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name=name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age=age;
}
}
text.jsp文件内容如下:
<%@page contentType="text/html;charset=gb2312" %>
<html>
<head>
<title>
JavaBean 示例
</title>
</head>
<body>
<jsp:useBean id="myJavaBean" scope="page" class="bo.UserInfo" />
<jsp:setProperty name="myJavaBean" property="name" value="申艺伟" />
<%
myJavaBean.setAge(Integer.parseInt("20"));
%>
<p align="center">
Name:<font color="red">
<jsp:getProperty name="myJavaBean" property="name" /><br></font>
Age:<font color="red">
<%=myJavaBean.getAge() %>
</font>
</p>
</body>
</html>
其运行结果如下:
1.4<jsp:getProperty>操作元素
JSP程序要取得JavaBean对象的属性必须使用<jsp:getProperty>操作元素,此元素的属性说明如下:
<Jsp:getProperty>属性说明
属性
说明
name
指定要设置属性的JavaBean对象的名称,也就是
<jsp:useBean>中的id
property
想要取得的对象属性
2. JavaBean对象的生命周期
2.1 session类型的生命周期
若将JavaBean对象的生命周期声明“session”,则其生命周期从session建立时开始,在系统默认的时间段里当用户未向系统再次提出请求时结束。
此外,session还有个重要的特性,就是每一个联机都是独立的。因此,此时JavaBean的使用范围只限于打开浏览器窗口的那位上网用户。以下是一个程序示例:
该程序用来计算浏览器访问页面的次数。
Counter.java文件:
package session;
public class Counter
{
private int Count=0;
public Counter()
{
}
public void setExplorerCounter(int count)
{
this.Count=count;
}
public int getExplorerCounter()
{
return ++this.Count;
}
}
session.jsp文件:
<%@page contentType="text/html;charset=gb2312" %>
<html>
<title>session类型的生命周期</title>
<body>
<p align="center"><font color="red">scope=session</font></p>
<jsp:useBean id="myCount" scope="session" class="session.Counter" />
<p align="center">
<table><tr><td align="center">您是本站第<font color="blue">
<jsp:getProperty name="myCount" property="explorerCounter" /></font>位参观者!</td></tr></table>
</p>
</body>
</html>
运行tomcat,并且打开浏览器,你会看到运行结果如下:
当单击刷新按钮后,你会发现数字会加1,其结果如下:
当打开另一个浏览器时,其计数又会从1开始,如图:
2.2 Application类型的生命周期
application的生命周期开始于对象建立时,而结束于服务器关闭。此外,application类型的对象是共享的,亦即所有的联机皆适用同一个JavaBean对象。
将上面的程序稍作修改如下:
<%@page contentType="text/html;charset=gb2312" %>
<html>
<title>session类型的生命周期</title>
<body>
<p align="center"><font color="red">scope=application</font></p>
<jsp:useBean id="myCount" scope="application" class="session.Counter" />
<p align="center">
<table><tr><td align="center">您是本站第<font color="blue">
<jsp:getProperty name="myCount" property="explorerCounter" /></font>位参观者!</td></tr></table>
</p>
</body>
</html>
当你再打开一个浏览器时,浏览器将不会重新计数如下运行结果:
2.3 Page类型的生命周期
JavaBean对象的生命周期若声明为“Page”,则此对象仅能在该网页中使用,当用户离开或单击刷新按钮时,该JavaBean对象即告终止。
将上面的程序稍作修改如下:
<%@page contentType="text/html;charset=gb2312" %>
<html>
<title>session类型的生命周期</title>
<body>
<p align="center"><font color="red">scope=page</font></p>
<jsp:useBean id="myCount" scope="page" class="session.Counter" />
<p align="center">
<table><tr><td align="center">您是本站第<font color="blue">
<jsp:getProperty name="myCount" property="explorerCounter" /></font>位参观者!</td></tr></table>
</p>
</body>
</html>
当单击刷新按钮后,其计数仍然为1,因为单击刷新按钮后相当于离开了该页面,其运行结果如下:
2.4 Request类型的生命周期
Request类型的生命周期除了这份网页外,若该网页中有使用到
<jsp:include>或<jsp:forward>操作元素,则其生命周期延伸至被include进来的页面或forward出去的网页。大家可以自己动手来验证一下。