码迷,mamicode.com
首页 > 编程语言 > 详细

JSP技术之JavaBean

时间:2015-01-26 15:03:21      阅读:292      评论:0      收藏:0      [点我收藏+]

标签:

    在Java程序或JSP程序中,其实有很多的代码段是可以重复使用的,比如对数据库的操作、用户的有效性检查及某些项特定功能的实现等。为了很好的解决这个问题,提高开发效率,Sun公司推出了JavaBean,简言之,JavaBean这是一个实现了某个功能且供重复使用的Java类。 在JSP中使用JavaBean后,可实现HTML与Java代码的分离,使JSP更易于开发和维护。因此JavaBean成了JSP程序员的必备利器之一。另外,javaBean与javaBeans是同一个概念。

 

技术分享

   

JavaBean定义:是Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中。特点是可序列化,提供无参构造器,提供getter方法和setter方法访问对象的属性。名称中的“Bean”是用于Java的可重用软件组件的惯用叫法。

JavaBean规范:

(a)有一个公有的无参构造器

(b)属性可以通过getsetis(可以替代get,用在布尔型属性上)方法或遵循特定命名规范的其他方法访问

(c)可序列化

JavaBean代码:

 1 package player;
 2  
 3 public class PersonBean implements java.io.Serializable {
 4  
 5     /**
 6      * name 属性(注意大小写)
 7      */
 8     private String name = null;
 9  
10     private boolean deceased = false;
11  
12     /** 无参构造器(没有参数) */
13     public PersonBean() {
14     }
15  
16     /**
17      * name 属性的Getter方法
18      */
19     public String getName() {
20         return name;
21     }
22  
23     /**
24      * name 属性的Setter方法
25      * @param value
26      */
27     public void setName(final String value) {
28         name = value;
29     }
30  
31     /**
32      * deceased 属性的Getter方法
33      * 布尔型属性的Getter方法的不同形式(这里使用了is而非get)
34      */
35     public boolean isDeceased() {
36         return deceased;
37     }
38  
39     /**
40      * deceased 属性的Setter方法
41      * @param value
42      */
43     public void setDeceased(final boolean value) {
44         deceased = value;
45     }
46 }

在Java类中使用JavaBean的代码:

 1 import player.PersonBean;
 2  
 3 /**
 4  * <code>TestPersonBean</code>类
 5  */
 6 public class TestPersonBean {
 7     /**
 8      * PersonBean 类测试方法的main函数
 9      * @param ARGS
10      */
11     public static void main(String[] args) {
12         PersonBean person = new PersonBean();
13  
14         person.setName("张三");
15         person.setDeceased(false);
16  
17         // 输出: "张三[活着]"
18         System.out.print(person.getName());
19         System.out.println(person.isDeceased() ? " [已故]" : " [活着]");
20     }
21 }

在Jsp中使用JavaBean的两种使用方式:

(a) jsp 中嵌入 java 代码方式访问 javabean

<%@ page import="player.PersonBean" %>
<% TestPersonBean testBean=new TestPersonBean(); %>
<% String name=req.getParameter(“name”);%>
<% testBean.setName(name)%>
<%=testBean.getName()%>

(b) jsp 中使用 <jsp:useBean> 标记符访问 javabean

<jsp:useBean id="person" class="player.PersonBean" scope="page"/>
<jsp:setProperty name="person" property="*"/>
 
<html>
    <body>
        姓名:<jsp:getProperty name="person" property="name"/><br/>
        已故与否?<jsp:getProperty name="person" property="deceased"/><br/>
        <br/>
        <form name="beanTest" method="POST" action="testPersonBean.jsp">
            输入姓名:<input type="text" name="name" size="50"><br/>
            选择选项:
            <select name="deceased">
                <option value="false">活着</option>
                <option value="true">已故</option>
            </select>
            <input type="submit" value="测试这个JavaBean">
        </form>
    </body>
</html>

<jsp:useBean>标签可以在JSP中声明一个JavaBean,然后使用。声明后,JavaBean对象就成了脚本变量,可以通过脚本元素或其他自定义标签来访问。<jsp:useBean>标签的语法格式如下:

<jsp:useBean id="bean‘s name" scope="bean‘s scope" typeSpec/>

在<jsp:useBean>标签主体中使用<jsp:getProperty/>标签来调用getter方法,使用<jsp:setProperty/>标签来调用setter方法,语法格式如下:

<jsp:useBean id="id" class="bean‘s class" scope="bean‘s scope">
   <jsp:setProperty name="bean‘s id" property="property name"  
                    value="value"/>
   <jsp:getProperty name="bean‘s id" property="property name"/>
   ...........
</jsp:useBean>

name属性指的是Bean的id属性。property属性指的是想要调用的getter或setter方法。

Jsp程序中使用JavaBean的scope属性:

(a)当scope=application时,我们浏览date.jsp,这时显示出了系统时间。可是不管我们怎么刷新,重新打开一次浏览器,甚至换台机器,它显示的时间始终不变,都是当初的时间(即bean刚创建时得到的系统时间),因为scope=application,所以Bean的实例在内存中只有一份,此时只要不重新启动WEB服务,输出不会变化。

(b)当scope=session时,浏览date.jsp,刷新时显示也不会变化。可是当我们重新打开一浏览器,即一个新的session,系统便再次创建Bean的实例,取得当前系统时间,这时将得到正确的时间。同样,再次刷新新打开的页面(新的session),显示也不会变化。

(c)当scope=page/request(它们的区别只在于包含静态文件时,此处无区别)时,不断刷新页面将不断得到当前系统时间。 

JSP技术之JavaBean

标签:

原文地址:http://www.cnblogs.com/caoxinyi/p/4250247.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!