一、JavaBean简介

JavaBean是一种特殊的Java类,它遵从一定的设计模式,
        开发工具和其他组件可以根据这种模式来调用JavaBean。
    JSP中使用的JavaBean非常简单,这种简单JavaBean的设计,具有如下两个特点:
        (1)用作JavaBean的类必须具有一个公共的、无参数的构造方法,
            这个方法可以是通过编译器自动产生的那个默认构造方法。
        (2)JavaBean的属性通过遵循某种规范的公共方法暴露给外部,
            外部的其他程序可以通过Java的反射API来查找JavaBean中
            遵循这一规范的方法,从而发现JavaBean中的属性。

二、JavaBean的属性

JavaBean的属性简介
        JavaBean的属性与普通Java类的属性的概念不一样,
            JavaBean的属性是以方法定义的形式出现的。
            用于对属性赋值的方法称为属性修改器或setter方法;
            用于读取属性值的方法称为属性访问器或getter方法。
        属性修改器必须以小写的set前缀开始,后跟属性名,且属性名的第一个字母要改为大写。
        属性访问器必须以小写的get前缀开始,后跟属性名,且属性名的第一个字母要改为大写。
        JavaBean的属性名是根据setter方法与getter方法的名称来生成的,
            setter方法或getter方法中除去前缀“set”和“get”后的部分即为属性名,
            但属性名的首字母必须小写。
            如果一个属性只有访问器,则该属性为只读属性;
            如果一个属性只有修改器,则该属性为只写属性,只写属性比较少见;
            如果一个属性既有修改器,又有访问器,则该属性为读写属性,读写属性最为常见。
        根据属性的复杂性,可以将JavaBean的属性分为简单属性和Indexed属性。
    简单属性
        简单属性就是非数组类型的属性。
        由于属性修改器仅仅是用于设置属性的值,而不用返回任何结果,所以其返回值类型是void;
            简单属性的修改器必须接受一个参数,参数类型由属性的特性决定,可以是任意类型的。
        简单属性的访问器仅仅是用于返回属性的值,它不接受任何参数,但它要返回一个值,
            返回值的类型必须与修改器所接受的参数类型一致。
        如果属性的类型是一个布尔型的逻辑值,不管访问器返回的类型是boolean(基本数据类型)
            还是Boolean(包装数据类型),访问器名称都可以不使用get为前缀,
            而是以is代替。如果JavaBean中同时存在getXxx和isXxx方法,
            那么xxx属性的访问器为isXxx方法。
    Indexed属性
        Indexed属性就是数组类型的属性。
        Indexed属性的修改器有两种重载形式:
            一个是对整个数组进行赋值;另外一个则是对数组中的每个元素进行赋值。
        Indexed属性的访问器也有两种重载形式:
            一个用于返回整个数组;另外一个则是用于返回数组中的单个元素。

三、JavaBean在JSP中的应用

在JSP中如何使用JavaBean
        如果把JSP页面中的业务逻辑代码封装到一个JavaBean中,JSP页面再调用JavaBean,
            则可提供一种分离显示内容和业务逻辑的简单方式,
            并且有利于软件的组织化、模块化。
        为了能在JSP页面中集成JavaBean组件和支持JavaBean的功能,
            JSP规范专门定义了三个JSP标签:<jsp:useBean>、<jsp:setProperty>
            和<jsp:getProperty>,它们分别用于创建和查找JavaBean的实例对象,
            设置JavaBean对象的属性,读取JavaBean对象的属性。
        对于JSP页面来说,只要一个类具有一个公共的、
            无参数的构造方法,就可以把这个类当做JavaBean来使用。
        如果类中有不接受任何参数的getter方法或只接受一个参数的setter方法,
            就可以把前缀“get”或“set”后面的部分当作一个属性名来引用。
    <jsp:useBean>标签
        <jsp:useBean>标签用于在某个指定的
            域范围(application、session、request、pageContext等)中
            查找一个指定名称的JavaBean对象,
            如果存在则直接返回该JavaBean对象的引用,
            如果不存在则实例化一个新的JavaBean对象,
            并将它按指定的名称存储在指定的域范围中。
            <jsp:useBean>标签的语法定义如下:
            <jsp:useBean
                id="beanInstanceName"
                scope="page | request | session | application"
                {
                    class="package.class" |
                    type="package.class" |
                    class="package.class" type="package.class" |
                    beanName="{package.class | <%=expression %>}" type="package.class"
                }
            />
        其中,class属性用于指定JavaBean的完整类名,JSP引擎将使用这个类名
            来创建JavaBean的实例对象或作为查找到的JavaBean对象的类型;
            id属性用于指定JavaBean实例对象的引用名称和其存储在域范围中的名称;
            scope属性用于指定JavaBean实例对象所存储的域范围,其取值只能是page、
                request、session和application四个值中的任何一个,其默认值为page。
            type属性用于指定JavaBean实例对象的引用变量的类型,
                它必须是JavaBean对象的类名称、超类名称和所实现的接口名称中的一个。
                默认值为class属性的设置值。
            beanName属性用于指定JavaBean的名称,这个名称不是JavaBean实例对象的
                引用名称,而是JavaBeans规范中定义的一种名称。
        <jsp:useBean>标签首先在指定的域范围中查找指定名称的JavaBean实例对象,
            如果能找到,这时候只需要为<jsp:useBean>标签设置type属性或class属性。
            如果在指定的域范围中查找不到指定名称的JavaBean实例对象,
                那么必须设置class属性或beanName属性来指定产生JavaBean实例对象的
                类名或资源名,class属性和beanName属性不能同时设置。
            因为type属性的默认值为class属性的设置值,所以设置class属性时
                可以省略type属性,而设置beanName属性时必须同时设置type属性。
        <jsp:useBean>标签按容器元素的格式进行使用:
            <jsp:useBean ...>
                Body
            </jsp:useBean>
            这种格式被称之为带标签体的<jsp:useBean>标签,
                Body部分的内容只在<jsp:useBean>标签创建JavaBean的实例对象时才执行。
    <jsp:setProperty>标签
        <jsp:setProperty>标签用于设置JavaBean对象的属性,
            也就是调用JavaBean对象的setter方法,其使用语法如下:
            <jsp:setProperty name="beanInstanceName"
                {
                    property="propertyName" value="{string | <%=expression %>}" |
                    property="propertyName" [ param="parameterName" ] |
                    property="*"
                }
            />
            name属性是必不可少的,它用于指定JavaBean实例对象的名称,
                其值应与<jsp:useBean>标签的id属性值相同。
            property属性是必不可少的,它用于指定JavaBean实例对象的属性名。
            value属性是可选的,它用于指定JavaBean实例对象的某个属性的值。
                value属性的设置值可以是一个字符串,也可以是一个表达式。
                如果value属性的设置值是字符串,
                    那么它将被自动转换成所要设置的JavaBean属性的类型。
                如果value属性的设置值是一个表达式,
                    那么该表达式的结果类型必须与所要设置的JavaBean属性的类型一致。
            param属性是可选的,它用于将一个请求参数的值
                赋值给JavaBean实例对象的某个属性,它可以将作为字符串类型
                返回的请求参数值自动转换成要设置的JavaBean属性的类型。
                如果当前请求消息中没有param属性所指定的请求参数,
                那么<jsp:setProperty>标签什么事情也不做。
            value和param属性不能同时使用,只能使用其中任意一个。
            如果<jsp:setProperty>标签的param属性和value属性都没有设置,则表示
                将当前要设置的JavaBean实例对象的属性设置为与该属性同名的请求参数值。
            property="*",
                表示将请求消息中的参数逐一与JavaBean实例对象中的属性进行比较,
                如果能找到同名的属性,则将该参数值赋给该属性。
        在<jsp:useBean>标签后面除了可以使用<jsp:setProperty>标签
            设置JavaBean的属性外,还可以在JSP脚本片断中调用id属性
            所命名的JavaBean实例对象的setter方法来设置其属性。
    <jsp:getProperty>标签
        <jsp:getProperty>标签用于读取JavaBean对象的属性,
            也就是调用JavaBean对象的getter方法,
            然后将读取的属性值转换成字符串后插入进输出的响应正文中,其使用语法如下:
            <jsp:getProperty name="beanInstanceName" property="PropertyName" />
            其中,name属性用于指定JavaBean实例对象的名称,
            其值应与<jsp:getProperty>标签的id属性值相同,
            property属性用于指定JavaBean实例对象的属性名。
            如果一个JavaBean实例对象的某个属性的值为null,那么,
            使用<jsp:getProperty>标签输出该属性的结果将是一个内容为“null”的字符串。
    使用JavaBean的注意事项
        1、因为JavaBean要被JSP页面调用,所以,
            JavaBean应放置在JSP页面的类装载器或其父级类装载器所能装载的目录里,
            通常放置于Web应用程序下的WEB-INF/classes目录里。
        2、有些版本的Tomcat不会自动重新加载修改过的JavaBean,
            如果JSP页面加载JavaBean以后又修改和重新编译了JavaBean程序,
            那么需要修改JSP页面或者重新启动Tomcat,
            否则,JSP页面使用的仍然是修改前的JavaBean对象。
        3、由于带包名的类无法调用不带包名的类,
            且JSP页面所翻译成的Servlet程序都带有包名,
            所以,JavaBean必须带有包名,不能用默认包名。
        4、在选择存储JavaBean的域范围时,
            如果使用request域能够满足需求的话,则不要使用Session域。

四、JSP开发模式

MVC设计模式
        MVC(模型-视图-控制器)。
            模型(Model)部分负责管理程序的业务逻辑,
            视图(View)部分负责显示界面,
            控制器(Controller)部分则负责与用户进行交互(接收请求和选择响应视图)。
        采用MVC模式构建的应用系统具有极高的可维护性、可扩展性、可移植性和组件可复用性。
    JSP开发模式
        Sun在早期的JSP规范中定义了两种使用JSP的模式:
            模式一主要采用JSP+JavaBean技术
            模式二主要采用Servlet+JSP+JavaBean技术
    用模式一实现用户登录功能
    用模式二实现用户注册功能

jsp中的javabean相关推荐

  1. java bean id_在 JSP中使用JavaBean的标签是 ,其中 id的用途是 __________________学小易找答案...

    [多选题]Flash渐变动画分为().P22 [单选题]关于 JavaBean,下列的叙述哪一项是不正确的?( ) [填空题]用户在实际 Web应用开发中,编写Bean除了要使用 __________ ...

  2. 在JSP中使用JavaBean

    JavaBean与Jsp.在JSP中使用JavaBean(<jsp:useBean>标签.<jsp:setProperty>标签.<jsp:getProperty> ...

  3. jsp在java软件中_5.2在JSP中使用JAVABEAN

    问题:设计Wed程序,计算任意两个整数的和,并在网页上显示结果.要求在JAVAbean中实现数据的求和功能 分析:该问题需要两个网页input.jsp和show.jsp,以及一个实现数据计算的Jana ...

  4. 在JSP中应用JavaBean

    1. 解决中文乱码的JavaBean 在JSP页面中,处理中文字符经常会出现字符乱码的现象,特别是通过表单传递中文数据时容易产生.它的解决办法有很多,如将request的字符集指定为中文字符集,编写J ...

  5. Java-Web JSP指令、javabean和EL表达式

    目录 一.JSP指令 1.JSP指令概述 2.page指令 (1)pageEncoding和contentType (2)import (3)errorpage和isErrorpage (4)web. ...

  6. JSP简单练习-javaBean的简单应用

    /** javaBean代码*/ package bean;public class Box {double length;double width;double height;public Box( ...

  7. 东软实训2-在jsp中使用javaBean

    在JSP中可以像使用普通类一样访问JavaBean,在脚本元素中实例化类的对象,调用对象的方法.JSP提供了3个动作元素,和来访问JavaBean. 1.1 动作用于初始化JavaBean,或者定位一 ...

  8. JSP技术之JavaBean

     在Java程序或JSP程序中,其实有很多的代码段是可以重复使用的,比如对数据库的操作.用户的有效性检查及某些项特定功能的实现等.为了很好的解决这个问题,提高开发效率,Sun公司推出了JavaBean ...

  9. java代码在jsp中怎么写_在jsp中写java代码

    该服务器上的所有的访问者的所有 jsp 页面 D.该服务器上的所有的访问者的所有 jsp 页面和 Java 程序 6.在 JSP 中调用 JavaBean 时不会用到的标记是( )...... jav ...

最新文章

  1. Alphabet旗下自驾公司Waymo入华,变身“慧摩”!
  2. python画三维温度散点图-matplotlib在python上绘制3D散点图实例详解
  3. 记TX实习生笔试归来
  4. 【GDOI2016模拟3.11】历史
  5. mysql存储过程和游标遍历
  6. Springboot注册Listener
  7. 项目部署到tomcat6.0启动成功后访问页面报500_.net core IIS部署教程
  8. 杭电 1233 最小生成树 kruskal()算法
  9. Android入门(11)| 全局广播与本地广播
  10. 这个可能打败Python的编程语言,正在征服科学界
  11. fastjson 不转某些字段_全面总结Fastjson过滤字段、排除字段的5种方法(含示例)...
  12. 利用非数组的方法输出杨辉三角
  13. c语言程序.cpp文件,[轉]C语言程序设计基础之文件
  14. 1119 九九乘法表的值(%-4d等 的含义)
  15. 哪个版本好_揭秘爱他美奶粉哪个版本好?不同版本爱他美奶粉区别差异是什么?...
  16. tp框架修改后台访问地址
  17. 《Android之大话设计模式》--设计原则 第二章:单一职责原则 乔峰VS慕容复
  18. Ellisys Bluetooth Sniffer 文档 (EEN-BT09) - 访问链接密钥的方法
  19. 医院公厕智能化管理需要实现哪些功能
  20. TensorFlow2学习七、使用MNIST手写体识别数据集识别自己手写图片

热门文章

  1. 获取当前周的周一的日期和周日的日期
  2. FabFilter Pro-C 2 压缩效果器
  3. C# 对象序列化之序列化为Json文件(一)
  4. SQL数据库CTE的用法
  5. 2019猪年flag
  6. 《Excel 职场手册:260招菜鸟变达人》一第 31 招 国际象棋棋盘式底纹设置方法...
  7. 改变QLabel背景颜色
  8. Word使用目录设置(避坑)
  9. 【一日一logo_day_23】五角星
  10. 这个项目真香,快速搭建API接口商城,最快当天上线,还有源代码