本章目标
掌握JavaBean的四种属性范围的特点。
JavaBean的保存范围
在<jsp:useBean>的指令上存在了一个scope属性,表示的是一个JavaBean的保存范围,保存的范围一共是四种:
page:保存在一页的范围之中,跳转之后此JavaBean无效;
request:一个JavaBean对象可以保存在一次服务器跳转范围中;
session:在一个用户的操作范围中保存,重新打开浏览器的时候才会声明新的JavaBean;
application:在整个服务器上保存,服务器关闭时才会消失。
用于计数的操作
package cn.demo;
public class Count {
private int count=0;//定义count属性
public Count(){
System.out.println("========= 一个新的Count对象产生=========");
}
public int getCount(){
return ++this.count;//每次自增之后返回
}
}
page范围的JavaBean
<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<html>
<head>
<title>定义page范围的JavaBean</title>
</head>
<jsp:useBean id="cou" scope="page" class="cn.demo.Count"></jsp:useBean>
<body>
<h3>第<jsp:getProperty name="cou" property="count" />次访问!</h3>
<jsp:forward page="demo1_f.jsp"></jsp:forward>
</body>
</html>
<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<html>
<head>
<title>跳转后的页面</title>
</head>
<jsp:useBean id="cou" scope="page" class="cn.demo.Count"></jsp:useBean>
<body>
<h3>第<jsp:getProperty name="cou" property="count" />次访问!</h3>
</body>
</html>
效果图:
request范围的JavaBean
<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<html>
<head>
<title>定义request范围的JavaBean</title>
</head>
<jsp:useBean id="cou" scope="request" class="cn.demo.Count"></jsp:useBean>
<body>
<h3>第<jsp:getProperty name="cou" property="count" />次访问!</h3>
<jsp:forward page="demo2_f.jsp"></jsp:forward>
</body>
</html>
<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<html>
<head>
<title>跳转后的页面</title>
</head>
<jsp:useBean id="cou" scope="request" class="cn.demo.Count"></jsp:useBean>
<body>
<h3>第<jsp:getProperty name="cou" property="count" />次访问!</h3>
</body>
</html>
效果图:
session范围的JavaBean
<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<html>
<head>
<title>定义session范围的JavaBean</title>
</head>
<jsp:useBean id="cou" scope="session" class="cn.demo.Count"></jsp:useBean>
<body>
<h3>第<jsp:getProperty name="cou" property="count" />次访问!</h3>
</body>
</html>
效果图:
application范围的JavaBean
<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<html>
<head>
<title>定义application范围的JavaBean</title>
</head>
<jsp:useBean id="cou" scope="application" class="cn.demo.Count"></jsp:useBean>
<body>
<h3>第<jsp:getProperty name="cou" property="count" />次访问!</h3>
</body>
</html>
效果图:
小结
JavaBean一共包含了四种属性保存范围,这一点与JSP中的四种属性保存范围是一样的,唯一的区别就是page范围不用像在JSP那样通过pageContext指定了。