• JavaBean技术


       引言:

    JavaBeans与一般Java类的编写类似.
    在JSP页面中要使用JavaBeans,只要在JSP页面中使用JavaBeans的操作标记就可以了。
    JavaBeans的编写和使用非常简单,下面举例说明。
       本讲内容:
    1.JavaBeans的编写规范
    2.在JSP中使用JavaBeans的操作标记
    一、JavaBeans的编写规范

    1.  JavaBeans的编写要求

    JavaBeans也是一个Java类,但在定义JavaBeans时一般要遵守下面的要求:
    • nJavaBeans必须是一个公共类(public),即在类定义的前面一定要加访问修饰符public;
    • nJavaBeans必须有一个公共的(public)、不带参数的构造函数。因为构造函数可以重载,所以也可以有其他带参数的构造函数;
    • nJavaBeans一般都属性,这些属性是以类中数据成员的方式定义的,这些属性都是私有的(private),仅能通过一组共有的成员方法对其进行操作。
    • 设置属性的方法名要用setXXX();取得属性的方法名要用getXXX()。

    2.  一个简单的JavaBeans实例

    下面是一个简单的JavaBeans,该JavaBeans只定义了一个字符串属性。
    实例10-1:一个简单的JavaBeans程序(HelloBean.java)

    01: package myBean;

    02: import java.io.*;

    03: public class  HelloBean

    04: {

    05:   //定义属性

    06:   private String name="Hello Bean";

    07:   //定义无参的构造函数

    08:   public HelloBean(){}

    09:   //定义获取属性的getXXX方法

    10:   public String getName()

    11:   {

    12:   return name;

    13:   }

    14:   //定义设置属性的setXXX方法

    15:   public void setName(String  str)

    16:   {

    17:   name=str;

    18:   }

    19:         public static void main(String[] args)

    20:   {

    21:   System.out.println("Example JavaBeans");

    22:   }

    23: }

    • 该实例已经在代码的注释中进行了说明。
    • 由于该实例有main()主函数(一般JavaBeans不需要定义main()函数,因它是提供服务的程序,由其它的程序来调用它),所以在编译后,可以在DOS环境下执行,执行结果为Example JavaBeans。

    3.  在JSP中使用JavaBeans

    • 在JSP中使用JavaBeans,首先要在Tomcat Web服务器中部署已经编译好的JavaBeans。
    • 在TOMCAT_HOMEwebappsjspWEB-INFclasses目录下创建myBean文件夹(这是为了与实例10-1第01行所定义的包名myBean相对应),然后将编译好的字节代码文件复制到该目录中。
    下面是一个使用实例10-1 JavaBeans的实例。
    实例10-2:使用JavaBeans的实例程序(useHelloBean.jsp)

    01: <%@page contentType="text/html;charset=GBK"%>

    02: <HTML>

    03: <HEAD><TITLE>使用JavaBeans</TITLE>

    04: </HEAD>

    05: <BODY>

    06: <H2>该实例说明了在一个JSP中如何使用JavaBeans的属性</H2>

    07: <HR>

    08:<jsp:useBean id="myBean" class="myBean.HelloBean" scope="application"/>

    09: 调用setProperty前name属性的值是:

    10: <jsp:getProperty name="myBean" property="name" />

    11: <P>

    12: <jsp:setProperty name="myBean" property="name" value="Hello World"/>

    13: 调用setProperty后name属性的值是:

    14: <jsp:getProperty name="myBean" property="name" />

    15: </BODY>

    16: </HTML>

    • 将实例10-2复制到TOMCAT_HOMEwebappsjsp目录下,然后在地址栏输入http://localhost:8080/jsp/useHelloBean.jsp,则浏览器窗口显示如图10-1所示的内容。
    • 实例10-2的08行<jsp:useBean…>是说明在该程序要使用一个类名为myBean.HelloBean的JavaBeans,第10行是取得属性名为name的值,第12行是将属性name的值设置为“Hello World”,第14行取得重新设置后属性name的值。
     
     
    二、在JSP中使用JavaBeans的操作标记
    • 在前面介绍过,JSP操作是为了使客户机或服务器实现某种操作而下达的指令。
    • JSP有七个操作标记,即jsp:include、jsp:useBean、jsp:setProperty、jsp:getProperty、jsp:forward、jsp:param和jsp:plugin。其中的jsp:include、jsp:forward、jsp:param和jsp:plugin已经介绍过,下面介绍jsp:useBean、jsp:setProperty和jsp:getProperty三个操作的功能和使用方法。

    1.  jsp:useBean操作

    该操作表示在JSP页面中要使用JavaBeans,它的常用语法格式如下:

      <jsp:useBean id=“beanName” 

                                scope="page|request|session|application“

                                class="package.class"

         />

    其中,id为JavaBeans在该JSP页面中的名称,即JSP页面的设计者所起的在JSP页面中标识该JavaBeans的名称,它的意思就是将一个JavaBeans对象与一个id定义的变量相关联。
     
    scope定义该JavaBeans对象的有效使用范围,它可以取以下4个值中的任一个:
    • page:表示这个JavaBeans在该JSP页面文件及此文件中的所有静态包含文件中有效(<%@ include file=…>)。
    • request:表示这个JavaBeans在该页面发出的请求中有效。
    • session:表示这个JavaBeans将作为一个对象绑定于session会话中,即在客户机与服务器的一个会话期内有效。
    • application:表示这个JavaBeans将做为一个对象绑定于application中,在本应用中有效。
                    scope缺省的值page,表明此JavaBeans只能应用于当前页。
                    通过定义scope属性,可以使此JavaBeans不只在当前页面有效。
                    class说明存储JavaBeans的字节代码文件名(.class)。
    注意:如果在JavaBeans中定义了包(package),则这里要指出整个包名。实例10-2的08行就是使用jsp:useBean操作创建了一个myBean.HelloBean类的实例,该实例在JSP页面中的名称为“myBean”。

    2.  jsp:setproperty操作

    n当在JSP中创建了JavaBeans对象之后,就可以通过jsp:setproperty操作标记设置JavaBeans的属性值。
    n其常用语法如下:

      <jsp:setProperty name="beanName " 

                                                 property="propertyName" 

                                                 value="propertyValue“

                   />

    其中,name表示jsp:useBean操作中定义的id名称,property表示JavaBeans中定义的某个属性,该属性要设置一个值,value表示为该属性将要设置的新值。
    在上面的格式中,jsp:setproperty操作标记用在jsp:useBean操作之后,这种情况下,此jsp:setProperty操作不管是新的JavaBeans实例还是原有的JavaBeans对象,都会执行。jsp:useBean操作还可以用在jsp:useBean实体之内,表示如下:

    <jsp:useBean id="beanName " ... >

    ..

    <jsp:setProperty name=" beanName " property=" propertyName"  value="propertyValue" />

    </jsp:useBean>

    这种情况下,此操作只在一个新的JavaBeans对象产生时才执行。
    注意:jsp:setProperty操作必须使用在jsp:useBean操作之后。

    3.  jsp:getProperty操作

    jsp:getProperty操作取得JavaBeans属性的值,并将其转换成字符串值,最后插入到输出结果中。
    如实例10-2中第10行和14行。它的常用语法格式如下:

    <jsp:getProperty name="beanName "  property="propertyName" />

    其中,name表示通过jsp:useBean得到的此JavaBeans在JSP页面中的名字,property表示要取出其值并插入JSP页面中的属性名。
    出处:http://wenku.baidu.com/view/be43723e25c52cc58bd6be93.html

    ================================================================

    以下代码是我根据上面的说明,写的简单的测试:

    方式一:

    package Java.Bean;
    
    import java.util.Date;
    import java.text.*;
    public class Test1 {
        public Test1(){}
        public String say()
        {
            String time=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
            return " Welcome! Now :"+time; 
        }
    }
    --------------------------------------
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@page import="Java.Bean.*"%>
    <html>
    <body>
    <h1>Hi <%= new Java.Bean.Test1().say()%></h1> 
    </body>
    </html>

    方式二:

    package mybean;
    
    public class Test1 {
        public Test1(){}
        public String say()
        {
            return " Welcome Java Bean."; 
        }
    }
    --------------------------------------------
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <jsp:useBean id="my" scope="request" class="mybean.Test1"></jsp:useBean>
    <html>
    <body>
    <h1>Hi <%=my.say()%></h1> 
    </body>
    </html>
  • 相关阅读:
    Java内存泄漏的排查总结
    多文本匹配 AC算法(Aho-Corasick)
    Linux下进程管理利器—supervise(监控并将死掉的程序重启)
    maven pom项目的dependencies转gradle格式
    Protocol Buffers官方文档(开发指南)
    Spring的工具类StringUtils使用
    springboot2 中Druid和ibatis(baomidou) 遇到org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.iflytek.pandaai.service.multi.mapper.TanancyMapper
    gradle 多模块Springboot项目 compile project引用其他模块的坑
    JAVA 运行springboot jar包设置classpath
    mysql8
  • 原文地址:https://www.cnblogs.com/mq0036/p/3873508.html
Copyright © 2020-2023  润新知