zoukankan      html  css  js  c++  java
  • J2EE基础之JavaBean

    J2EE基础之JavaBean

    1、什么是JavaBean

        JavaBean本质上来说就是一个Java类,它通过封装属性和方法成为具有独立功能、可重复使用的,并可以与其他控件通信的组件对象。通过在JavaBean中封装事务逻辑和数据库操作等,然后将JavaBeanJSP语言元素一起使用,可以很好地实现后台业务逻辑的分离,使得JSP页面更加易于维护。

        标准的JavaBean类必须满足以下3个条件:

        (1)该Java类必须包含没有任何参数的构造函数。例如,一个Student类,则这个类必须包含public Student()这个不带参数的构造函数。

        (2)该类需要实现java.io.Serializable接口。实现了Serializable接口的对象可以转换为字节序列,这些字节序列可以完全存储以备重新生成原来的对象。

        (3)该类必须要有属性接口。也就是说,每个属性都要有getset的属性操作方法。例如描述一个学生的类Student,其中有属性名Name,那么这个类中必须同时包含getName()setName()这两个方法。

     

    2、JSP中与JavaBean的相关标签

        在JSP中有3个与使用JavaBean操作相关的标准标签:<jsp:userBean><jsp:getProperty><jsp:setProperty>,可以使用它们设置或者读取JavaBean的属性。

        (1)调用JavaBean

            <jsp:userBean>标签可以定义一个具有一定生存范围,以及一个唯一IDJavaBean实现。这样JSP就可以通过这个ID来识别JavaBean,也可以通过id.method类似的语句来操作JavaBean。常用的格式如下:

            <jsp:userBean id=”name” class=”包名.classname”  scope=”page|request|application”>

            其中,id属性是强制性属性,用来唯一标记一个JavaBeancalss属性用来说明JavaBean的类型。例如,要声明一个类型为Studentidstud1且作用域为本页面的bean,代码如下:

           <jsp:userBean id=”stud1” class=”liu.Student” scope=”page”>

           如果指定的idscopeJavaBean不存在,则将使用class属性指定的类创建一个新的JavaBean

       (2)访问JavaBean属性

            <jsp:getProperty>标签用于返回一个已被创建的bean组件的属性值。用法如下:

            <jsp:getProperty name=”beanId” property=”propertyName”>

            其中,name属性对应JavaBean组件的Id值,preperty属性指明要获取的Java属性名称,这两个属性都是必须的。例如,要想得到Student组件stud1classNo属性值,代码如下:

            <jsp:getProperty name=”stud1” property=”classNo”/>

        (3)设置JavaBean属性

            <jsp:setProperty>标签用于设定一个已被创建的bean组件的属性值,用法如下:

            <jsp:setProperty name=”beanId” property=”propertyName” value=”propertyValue”>

           其中,name属性对应JavaBean组件的id值,property属性指明要想设定属性值得属性名,value属性为设定的属性值,这个值既可以是字符串也可以是表达式。如果是一个字符串,那么它就会被转换为Bean属性的类型。如果是一个表达式,那么它的类型就将要和设定属性值的类型一致。例如,利用setProperty设定Student组件stud1classNo属性,代码如下:

          <jsp:setProperty name=”stud1” property=”classNo” vlaue=”20160001”>

     

    3、JavaBean生命周期

         每个JavaBean都有一个生命周期,Bean只有在它定义的生命周期范围(作用域)里才能使用,在它的生命周期范围外将无法访问到它。JSP为它设定的生命周期范围有pagerequestsessionapplication。可以在<jsp:userBean>标签中利用Scope属性来声明JavaBean的生命周期范围。具体说明如下:

    (1)page范围

           设置Scope属性为pageBean生命周期是最短的,也是JavaBean的默认值。作用范围为:当一个网页由JSP程序产生并传递到客户端后,属于page范围的Bean也将被清除,生命周期结束。使用page作为Bean的生命周期的格式如下:
          <jsp:userBean id=”Bean_name” scope=”page” class=”包名.className”/>

          在JSP页面中可以无限次修改page范围的Bean的属性值,但是,当页面关闭时,所有的变动都会丢失,而恢复到最初状态。

    (2)request范围

        生命周期范围为requestBeanrequest对象的生命周期相同。当在JSP页面中使用<jsp:forward>操作指令转向另一个JSP程序,或者使用<jsp:include>指令导入另外的JSP页面时,第一个JSP页面会把request对象传递到下一个JSP页面。属于request作用域的JavaBean组件也将伴随着request对象送出,被第二个JSP页面接收。

        JSP内置对象request存取其他对象的方法是setAttribute()getAttribute()。如果一个JavaBean对象被设置为request范围时,JSP引擎会把<jsp:useBean>标签中的ID属性值当作索引值,通过setAttribute()方法将新产生的JavaBean对象放置在request对象中,当下一个JSP程序通过forward取得前面传来的request()对象时,就可以通过getAttribute()方法和索引值获取这个Bean对象。

    (3)session范围

        作用域为sessionBeansession对象的生命周期相同,且Bean在创建它们的会话中始终可以被引用。

    (4)application范围

        作用域为appllicationBean的生命周期是最长的。当application范围的JavaBean被实例化后,除非是特意将它删除,否则application范围等我生命周期可以说是和JSP相当。当某个JavaBean属于application范围时,所在同一个JSP引擎下的JSP程序都可以共享这个JavaBean

     

    4、一个有关JavaBean生命周期的应用实例

        (1)在MyEclipse中新建一个 Web Project,命名为MyJavaBean

        (2)在MyJavaBean项目中新建一个JavaBean类,类名为Student,包名为liu,具体代码如下:

     

    package liu;
    
    public class Student {
        private String classNo;
        private String Name;
        private int age;
        private String gender;
        private String major;
        
        public Student(){
            
        }
    
        public String getClassNo() {
            return classNo;
        }
    
        public void setClassNo(String classNo) {
            this.classNo = classNo;
        }
    
        public String getName() {
            return Name;
        }
    
        public void setName(String name) {
            Name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getGender() {
            return gender;
        }
    
        public void setGender(String gender) {
            this.gender = gender;
        }
    
        public String getMajor() {
            return major;
        }
    
        public void setMajor(String major) {
            this.major = major;
        }
        
    
    }

     

     

        (3)修改index.jsp中代码,具体代码如下:

     

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>JavaBean生命周期示例</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
      </head>
      
      <body>
          <jsp:useBean id="stud1" scope="request" class="liu.Student"/>
          <jsp:setProperty name="stud1" property="classNo" value="2016"/>
          <jsp:setProperty name="stud1" property="name" value="liu"/>
          <jsp:setProperty name="stud1" property="gender" value="Male"/>
          <jsp:setProperty name="stud1" property="age" value="20"/>
          <jsp:setProperty name="stud1" property="major" value="DataBase"/><br>
          你的学号是:
          <jsp:getProperty name="stud1" property="classNo"/><br>
          <jsp:include page="detail.jsp"/>
      </body>
    </html>

     

     

        (4)在MyJavaBean项目中新建一个JSP文件,命名为detail,具体代码如下:

     

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'detail.jsp' starting page</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
    
      </head>
      
      <body>
        <jsp:useBean id="stud1" scope="request" class="liu.Student"/>
        你的详细信息如下:<br>
        Name:<jsp:getProperty name="stud1" property="name"/><br>
        Name:<jsp:getProperty name="stud1" property="gender"/><br>
        Name:<jsp:getProperty name="stud1" property="age"/><br>
        Name:<jsp:getProperty name="stud1" property="major"/><br>
      </body>
    </html>

     

     

        (5)打开Tomcat,给MyJavaBean项目配置Tomcat后,打开浏览器输入:http://localhost:8080/MyJavaBean,即可看到如下图结果:

     

    图一:未修改index.jsp运行结果

        然后,修改index.jsp文件中相应value值,然后刷新浏览器中打开的页面,即可看到如下结果:

     

    图二:修改index.jsp文件中value值代码后的运行结果

  • 相关阅读:
    Redhat Enterprise Linux 磁带机质朴把持
    Lotus 认证介绍
    Delphi 与 DirectX 之 DelphiX(1): 安装测试
    关于结构体与类型转换的一点小技巧
    提取网页中的所有链接、点击第 n 个链接 回复 "刘丽" 的问题
    Delphi 与 DirectX 之 DelphiX(2): DelphiX 各单元概览
    模拟点击网页中的按钮 回复 "starcraft_ly" 的问题
    求助! 谁有 《inside delphiX》这本书?
    类型转换出现在赋值运算符左边的情况
    绘制一个钢琴键盘
  • 原文地址:https://www.cnblogs.com/liuzhen1995/p/5678634.html
Copyright © 2011-2022 走看看