保存到桌面加入收藏设为首页
JSP
当前位置:首页 > Web技术 > JSP

编写和使用JavaBeans

时间:2013-07-25 20:13:32   作者:梦幻小纯哥   来源:永硕E盘装饰网   阅读:492   评论:0
内容摘要:编写beansJavaBeans分为可视组件和非可视组件。在JSP中主要使用非可视组件。对于非可视组件,我们不必去设计它的外观,生要关心它的属性和方法。编写JavaBeans就是编写一个Java的类,所以只要会写类就能编写一个beans。这个类创建的一个对象称做一个beans。为...
编写 beans 

    JavaBeans 分为可视组件和非可视组件。在 JSP中主要使用非可视组件。对于非可视组件,我们不必去设计它的外观,生要关心它的属性和方法。编写 JavaBeans 就是编写 个Java 的类,所以只要会写类就能编写一个 beans。这个类创建的一个对象称做一个 beans。

为了能让使用这个 beans 的应用程序构建工具(如 JSP 引擎)知道这个 beans 的属性和方
法,只需在类的方法命名上遵守以下几点: 
    (1)如果类的成员变量的名字是 xxx,那么为了更改或获取成员变量的值,即更改或获取属性,在类中可以使用两个方法: 
        getXxx(),用来获取属性 xxx。 
        setXxx(),用来修改属性 xxx。 
     (2) 对于boolean 类型的成员变量,即布尔逻辑类型的属性,允许使用 is 代替上面的
get 和set。 
    (3)类中方法的访问属性都必须是 Public 的 
     (4) 类中如果有构造方法,那么这个构造方法也是 Public的,并且是无参数的。 

    下面我们编写一个简单的 beans。 
Circle.java:

package bean;
import java.io.*;
//JavaBeans
public class Circle {
    int radius;
    public Circle(){
        radius=1;
    }
    public int getRadius() {
        return radius;
    }
    public void setRadius(int radius) {
        this.radius = radius;
    }
    public double circleArea(){
        return Math.PI*radius*radius;
    }
    public double circleLength(){
        return Math.PI*2*radius;
    }
}
    将上述的文件保存成 Circle.java,并编译通过,得到 Circle.class。



使用 beans

    为了在 JSP页面中使用 beans,我们必须使用 JSP 动作标签useBean。 
    useBean 的格式: 
    <jsp:useBean id=“给bean 起的名字” class=“创建 beans的类” scope=“bean 有
效范围”> 
</jsp:useBean> 

    或 
    <jsp:useBean id=“给bean 起的名字” class=“创建 beans的类” scope=“bean 有
效范围”/> 

当服务器上某个含有 useBean 动作标签的 JSP j面被加载执行时,JSP 引擎将首先根据id 的名宇,在一个同步块中查找 JSP 引擎内置pageContext对象中是否含有名字 id和作用域 scope 的对象,如果这个对象存在,JSP 引擎就分配一个这样的对象给客户,这样,客户就获得了一个作用域是 scope、名字是 id 的 beans(就像我们组装电视机时获得了一个有一定功能和使用范围的电子元件)。如果在 pageContext 中没有查找到指定作用域,名字是 id 的对象,就根据 class 指定的类创建一个名字是 id 对象,即创建了一个名字是 id 的 beans。

添加到 pageContext 内置对象中,并指定该 beans 的坝糜蚴 scope。同时 JSP 引擎分配给客户一个作用域是 scope、名宇是 id的 beans。 

    对 useBean标签中 scope 不同取值的情况阐述如下: 
     scope 取值page 
    JSP 扒娣峙涓每个客户的 beans 是互不相同的,也就是说,尽管每个客户的 beans
的功能相同,但它们占有不同的内存空间。该 beans 的有效范围是当前页面,当客户离开这个页面时,JSP 引擎取消分配给该客户的 beans。 

     scope 取值session 
     JSP 引擎分配给每个客户的 beans 是互不相同的,该 beans 的有效范围是客户的会
话期间,也就是说,如果客户在多个页面中相互连接,每个页面都含有一个 useBean 标签,
这些 useBean 标签中 id 的值相同, 且 scope 的值都是 session,那么,该客户在这些页
面得到的 beans 是相同的一个。如果客户在某个页面更改了这个 beans 的属性,其他页面的这个 beans的属性也将发生同样的变化。当客户关闭测览器时,JSP 引擎取消分配给客户的 beans。 

     scope 取值request 
    JSP引擎分配给每个客户的beans是互不相同的,该beans的有效范围是request期间,
客户在网站的访问期间可能请求过多个页面,如果这些页面含有 scope 取值是 request 的
useBean 标签,那么 pageContext 对象在每个页面分配给客户的 beans 也是互不相同的。JSP引擎对请求做出响应之后,取消分配给客户的这个 beans。 

     scope 取值application 
    JSP 引擎为每个客户分配一个并享的 beans,也就是说,所有客户共享这个 beans。
如果一个客户改变这个 beans 的某个属性的值,那么所有客户的这个 beaus 的属性值都发生了变化。这个 beans 直到服务器关闭才被取消。 

    注:当使用作用域是 session的 beans 时,要保n客户端支持 Cookie。 

    为了使服务器的所有 web 服务目录下的 JSP 页面文件都能使用 beans,必须将上面编译通过生成的字节码类文件Circle.class复制到JSP引擎的classes文件夹下,本例为tomcat的 classes文件夹。另外.在使用 beans的JSP页面中,必须有如下的 import 指令: 
<%@page import="Circle"%> 
使用的例子如下: 
useBean.jsp 代码: 

<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@page import="bean.Circle" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="test1" class="bean.Circle" scope="page"></jsp:useBean>
<%
    test1.setRadius(10);
%>
<%=test1.getRadius() %>
</body>
</html>
编写和使用JavaBeans

上一篇:没有了
下一篇:JSP引用JavaBeans必须有package name
相关评论