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

认识JavaBean

JavaBean是一个遵循特定写法的Java类,它通常具有如下特点:

这个Java类必须具有一个无参的构造函数

属性必须私有化。

私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范。

JavaBean在J2EE开发中,通常用于封装数据,对于遵循以上写法的JavaBean组件,其它程序可以通过反射技术实例化JavaBean对象,并且通过反射那些遵守命名规范的方法,从而获知JavaBean的属性,进而调用其属性保存数据。

JavaBean的属性

JavaBean的属性可以是任意类型,并且一个JavaBean可以有多个属性。每个属性通常都需要具有相应的setter、 getter方法,setter方法称为属性修改器,getter方法称为属性访问器。

属性修改器必须以小写的set前缀开始,后跟属性名,且属性名的第一个字母要改为大写,例如,name属性的修改器名称为setName,password属性的修改器名称为setPassword。

属性访问器通常以小写的get前缀开始,后跟属性名,且属性名的第一个字母也要改为大写,例如,name属性的访问器名称为getName,password属性的访问器名称为getPassword。

一个JavaBean的某个属性也可以只有set方法或get方法,这样的属性通常也称之为只写、只读属性。

在JSP中使用JavaBean

JSP技术提供了三个关于JavaBean组件的动作元素,即JSP标签,它们分别为:

<jsp:useBean>标签:用于在JSP页面中查找或实例化一个JavaBean组件。

<jsp:setProperty>标签:用于在JSP页面中设置一个JavaBean组件的属性。

<jsp:getProperty>标签:用于在JSP页面中获取一个JavaBean组件的属性。

<jsp:useBean>标签

<jsp:useBean>标签用于在指定的域范围内查找指定名称的JavaBean对象:

如果存在则直接返回该JavaBean对象的引用。

如果不存在则实例化一个新的JavaBean对象并将它以指定的名称存储到指定的域范围中。

常用语法:

<jsp:useBean id="beanName" class="package.class"

scope="page|request|session|application"/>

id属性用于指定JavaBean实例对象的引用名称和其存储在域范围中的名称。

class属性用于指定JavaBean的完整类名(即必须带有包名)。

scope属性用于指定JavaBean实例对象所存储的域范围,其取值只能是page、request、session和application等四个值中的一个,其默认值是page。

<jsp:useBean>执行原理

<jsp:useBean id="currentDate" class="java.util.Date"/>

翻译成的Servlet源码:

java.util.Date currentDate = null;

synchronized (_jspx_page_context) {

currentDate = (java.util.Date)          _jspx_page_context.getAttribute(

"currentDate", PageContext.PAGE_SCOPE);

if (currentDate == null){

currentDate = new java.util.Date();

_jspx_page_context.setAttribute("currentDate",

currentDate, PageContext.PAGE_SCOPE);

}

}

带标签体的<jsp:useBean>标签

语法:

<jsp:useBean ...>

Body

</jsp:useBean>

功能:

Body部分的内容只在<jsp:useBean>标签创建JavaBean的实例对象时才执行。

<jsp:setProperty>标签

<jsp:setProperty>标签用于设置和访问JavaBean对象的属性。

语法格式:

<jsp:setProperty name="beanName"

{

property="propertyName" value="{string | <%= expression %>}" |

property="propertyName" [ param="parameterName" ] |

property= "*"

}/>

name属性用于指定JavaBean对象的名称。

property属性用于指定JavaBean实例对象的属性名。

value属性用于指定JavaBean对象的某个属性的值,value的值可以是字符串,也可以是表达式。为字符串时,该值会自动转化为JavaBean属性相应的类型,如果value的值是一个表达式,那么该表达式的计算结果必须与所要设置的JavaBean属性的类型一致。

param属性用于将JavaBean实例对象的某个属性值设置为一个请求参数值,该属性值同样会自动转换成要设置的JavaBean属性的类型。

<jsp:getProperty>标签

<jsp:getProperty>标签用于读取JavaBean对象的属性,也就是调用JavaBean对象的getter方法,然后将读取的属性值转换成字符串后插入进输出的响应正文中。

语法:

<jsp:getProperty name="beanInstanceName" property="PropertyName" />

name属性用于指定JavaBean实例对象的名称,其值应与<jsp:useBean>标签的id属性值相同。

property属性用于指定JavaBean实例对象的属性名。

如果一个JavaBean实例对象的某个属性的值为null,那么,使用<jsp:getProperty>标签输出该属性的结果将是一个内容为“null”的字符串。

在JSP中使用JavaBean相关推荐

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

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

  2. jsp中的javabean

    一.JavaBean简介 JavaBean是一种特殊的Java类,它遵从一定的设计模式,         开发工具和其他组件可以根据这种模式来调用JavaBean.     JSP中使用的JavaBe ...

  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. IOS,十六进制颜色和RGB颜色的宏定义
  2. ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法
  3. PV(page view)
  4. Linux常用的基本命令vi、ps、kill(四)
  5. GMV突破1300亿,Lazada下一站去哪?
  6. urlencode python_python爬虫之url中的中文问题
  7. 用vue实现模态框组件
  8. 客服系统微服务架构的演化
  9. 对va_list; va_start ; va_end ;vsprintf理解(转)
  10. 微信小程序-colorUI组件库
  11. elasticsearch-head离线安装
  12. win10强制关闭飞行模式_Win7已毕业,你为什么还不用Win10?
  13. vue js 清除 data数据
  14. 基于SpringBoot的分销商城的设计与实现(论文+源码)_kaic
  15. C++期末课程设计:设计一个学生学籍管理系统
  16. 专有钉钉 浙政钉 前端 对接流程(小程序)
  17. C语言 - 深度剖析数据的存储
  18. 无痕去水印软件哪个好用?
  19. ppt html5转换,PPT还能转H5?这大概是制作招聘H5最快的方法了...
  20. Flex ComboBox 加载xml数据

热门文章

  1. python多线程有用吗_当CPU利用率已经接近100%时,多线程有帮助吗?
  2. 语言防止鼠标连点_全球化设计系列 | 多语言设计的“小锦囊”
  3. Cmake-add_library()
  4. 生成用于ASP.NET Web API的C#客户端API
  5. 前端技术及开发模式的演进,带你了解前端技术的前世今生
  6. 晶体封装越小esr越大_晶振
  7. 群里又会python的吗_自从会了Python在群里斗图就没输过,Python批量下载表情包!...
  8. html和ascll有什么关联,什么是HTML ASCII(HTML ASCII)?
  9. Eclipse运行程序报错: Errors running builder ‘Integrated External Tool Builder‘ on project
  10. MySQL Workbench Failed to Connect to MySQL at 127.0.0.1:3306 with user root Bad handshake