JavaBean学习

来源:互联网 发布:清华经管学院知乎 编辑:程序博客网 时间:2024/04/28 02:26

javaBean是一种可重复使用的、跨平台的软件组件。可分为两种:有用户界面的;没有用户界面的,主要负责处理事务。 

JavaBean的特性:是public的类;有一个不带参数的构造方法;set和get方法。
如下

public class CounterBean{private int count;public int getCount(){return count;}public void setCount(int count){this.count = count;}}

使用javaBean的步骤:导入javaBean;声明javaBean对象;访问javaBean属性。

导入javaBean: <%@ page import="mypackage.CounterBean" %>

声明JavaBean对象:<jsp:useBean id="myBean" class="myPackage.CounterBean" scope="request"/>
对应的Servlet Java代码

 myPackage.CounterBean myBean = null;      synchronized (request) {        myBean = (myPackage.CounterBean) _jspx_page_context.getAttribute("myBean", PageContext.REQUEST_SCOPE);        if (myBean == null){          myBean = new myPackage.CounterBean();          _jspx_page_context.setAttribute("myBean", myBean, PageContext.REQUEST_SCOPE);        }      }

访问javaBean属性:<jsp:getProperty name="myBean" property="count"/>

org.apache.jasper.runtime.JspRuntimeLibrary.toString(((myPackage.CounterBean)_jspx_page_context.findAttribute("myBean")).getCount());

修改属性值:<jsp:setProperty name="myBean" property="count" value="100"/>

org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(_jspx_page_context.findAttribute("myBean"), "count", "100", null, null, false);
<jsp:setProperty name="myBean" property="count" param="hello"/>中的hello是传过来的参数名。http://localhost:8080/test/bean.jsp?hello=23访问时,count=23。
 org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(_jspx_page_context.findAttribute("myBean"), "count", request.getParameter("hello"), request, "hello", false);

由于上述的作用域为request,可以通过如下方式获得CounterBean

CounterBean cb = (CounterBean)request.getAttribute("myBean");//若作用域为session//CounterBean cb = (CounterBean)session.getAttribute("myBean");//若作用域为application//CounterBean cb = (CounterBean)application.getAttribute("myBean");

注:上面的_jspx_page_context是javax.servlet.jsp.PageContext类的对象。

JavaBean的存活范围(scope):page(默认)、request、session、application。
page:每次请求访问JSP页面都会创建一个JavaBean对象。JavaBean的有效范围是请求访问的当前JSP网页。结束生命周期的情况:请求访问的当前JSP网页通过<forward>标记将请求转发到另一个文件;请求访问的当前JSP页面执行完毕并返回响应。
request:每次请求访问JSP页面都会创建一个JavaBean对象。JavaJavaBean的有效范围是:请求访问的当前JSP网页;和当前JSP页面共享同一个客户请求的网页,即当前JSP网页中<%@ include>及<jsp:forward>中包含的其他JSP页面;当所有共享同一个请求的JSP页面执行完毕并返回响应时,JavaBean对象结束生命周期。
session:JavaBean对象创建后存在于整个Session生命周期内,同一个Session中的JSP文件共享这个JavaBean对象。
application:JavaBean对象创建后存在于整个Web应用生命周期内,同一个Web应用中的所有JSP文件共享这个JavaBean对象。