转载http://hi.baidu.com/g882/blog/item/38b3903418d7aa44241f14f1.html
<jsp:useBean>中的scope属性:用来设定JavaBean存在的范围:
1: page;
2: request;
3: session;
4: application
利用一个计数器说明,用一个JavaBean保存访问量,在JSP页面中调用。
首先建立一个SampleBean1.java 代码如下:
package ch04;
import java.io.*;
public class SampleBean1 {
public SampleBean1(){
}
private int num=0;
public void setNum(int num)
{
this.num=num;
}
public int getNum()
{
num++;
return num;
}
}
我们来看一下另外的知识点(一):
page范围:生命周期只能在一个页面里,只能在一个页面里存取该JavaBean,重新刷新页面时会将原来的JavaBean实例删除掉,产生一个新JavaBean实例.
<jsp:useBean id="..." class="..." scop="page">
JSP程序:Sample1.jsp
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<jsp:useBean id="splBean" class="ch04.SampleBean1" scope="page"/>
<html>
<head>
<title>page范围JavaBean</title>
</head>
<body>
<center><p><font size="5">访问人次:<%=splBean.getNum()%><strong></strong></font></p></center>
</body>
</html>
运行结果可知:无论刷新页面还是新建页面访问人数总是1,不会改变,说明page的存在范围只在当前页面有效
知识点(二):
request范围(与page范围有些类似只是比page范围大一些):与request对象有很大关系,存取范围除了整个页面外,还包括动作元素<jsp:include>和<jsp:forword>包含的页面(也就是说它能在include和forword页面中生效),即原页面和包含的页面都可以访问原来产生的JavaBean实例。
<jsp:useBean id="..." class="..." scop="request">
JSP程序:Sample2.jsp 和Sample3.jsp
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<jsp:getProperty name="splBean" property="num"/>
在这个程序当中getProperty标签的作用和调用Bean的get()方法是一样的。现在就是去调用的getName()方法是num加一
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<jsp:useBean id="splBean" class="ch04.SampleBean1" scope="request"/>
<html>
<head>
<title>page范围JavaBean</title>
</head>
<body>
<%=splBean.getNum()%>
<center><p><font size="5">访问人次:<jsp:include page="Sample2.jsp"flush="true"/><strong></strong></font></p></center>
</body>
</html>
这个程序里在include中将转入到Sample2.jsp页面即又调用了一次getNum();所以这个运行的时候访问人次2,刷新就没有用了。它也只能在当前页面和包括include和forword中有效。
知识点(三):
session范围:生命周期在一个链接里,可以在一个连接里访问该JavaBean(当用户使用浏览器访问某个网页时,就进行了一场连接,同时创建了一个代表该链接的session对象
<jsp:useBean id="..." class="..." scop="session">
JSP:程序:Sample4.jsp
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<jsp:useBean id="splBean" class="ch04.SampleBean1" scope="session"/>
<html>
<head>
<title>page范围JavaBean</title>
</head>
<body>
<center><p><font size="5">访问人次:<%=splBean.getNum()%><strong></strong></font></p></center>
</body>
</html>
运行结果:当刷新一次页面的时候访问人次加1,但是当我们打开另外一个浏览器的时候它将重新计数。
知识点(四):
application范围:生命周期最长,只要Web服务器不重启,JavaBean就永远运行在服务器中,所以任何页面都可以使用该JavaBean 实例。
<jsp:useBean id="..." class="..." scop="session">
JSP:程序:Sample5.jsp
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<jsp:useBean id="splBean" class="ch04.SampleBean1" scope="application"/>
<html>
<head>
<title>page范围JavaBean</title>
</head>
<body>
<center><p><font size="5">访问人次:<%=splBean.getNum()%><strong></strong></font></p></center>
</body>
</html>
运行结果:当刷新页面和打开另外一个页面的时候都会以原来的那个数加一;只有当服务器关闭的时候才停止运行。
缺点:常驻内存,消耗资源,重启服务器后清零。
用一个实例来综合运用JavaBean的作用范围
设计个人所得税计算器
个人所得税计算公式:
当月应缴个人所得税=(当月总收入-当地个人所得税起征额)×适合税率-速算扣除数