在JSP网页中,既可以通过程序代码来访问JavaBean,也可以通过特定的JSP标签来访问JavaBean。采用后一种方法,可以减少JSP网页中的程序代码,使他更接近与HTML页面。下面介绍访问JavaBean的JSP标签。

1.导入JavaBean类

如果在JSP网页中访问JavaBean,首先要通过<%@ page import %> 指令引入Java类。

2.声明JavaBean对象

<jsp:useBean>标签用来声明JavaBean对象,例如:

<jsp:useBean id="myBean" class="com.xdl.bean.BeanDemo" scope="session" />

上述代码声明了一个名字为"BeanDemo"的JavaBean对象,<jsp:useBean>标签具有以下属性:

id属性:代表JavaBean对象的ID,实际上表示引用JavaBean对象的局部变量名,以及存放在特定范围内的属性名。JSP规范要求存放在所有范围内的每个JavaBean对象都有唯一的ID,例如不允许在会话范围内存在两个ID为"BeanDemo"的JavaBean,也不允许在会话范围和请求范围内分别存在ID为"BeanDemo"的JavaBean。

class属性:用来指定JavaBean的类名。

scope属性:用来指定JavaBean对象的存放范围,可选值包括page(页面范围)、request(请求范围)、session(会话范围)和application(Web应用范围)。scope属性的默认值为page,范例中的scope属性取值为"session",表示会话范围。

以上实例代码中的<jsp:useBean>标签的处理流程如下:

(1)定义一个名为myBean的局部变量。

(2)尝试从scope指定的会话范围内读取名为" myBean"的属性,并且使得myBean局部变量引用具体的属性值,即BeanDemo对象。

(3)如果在scope指定的会话范围内,名为"myBean"的属性不存在,那么久通过BeanDemo类的默认构造方法创建一个BeanDemo对象,并把它存放在会话范围内,令其属性名为"myBean",此外,myBean局部变量也引用这个BeanDemo对象。

3.访问JavaBean属性

JSP提供了访问JavaBean属性的标签,如果要将JavaBean的某个属性输出到网页上,可以用<jsp:getProperty>标签,例如:

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

以上<jsp:getProperty>标签根据name属性的值"myBean"找到由<jsp:useBean>标签声明的ID为"myBean"的CounterBean对象,然后打印它的count属性,它等价于以下Java表达式:

<%=myBean.getCount() %>

Servlet容器在运行<jsp:getProperty>标签时,会根据property属性指定的属性名,自动调用JavaBean的相应的get方法。属性名和get方法之间存在固定的对应关系。如果在JavaBean中不存在get方法时,那么Servlet容器在运行<jsp:getProperty>标签时就会抛出异常。由此尅安,只有开发人员创建的JavaBean类严格遵守JavaBean的规范,才能保证JSP中的访问JavaBean的标签能正常运行。

如果要给JavaBean的某个属性赋值,可以使用<jsp:setProperty>标签,例如:

<jsp:setProperty name="myBean" property="count" value="1" />

以上<jsp:setProperty>标签根据name属性的值"myBean",找到由<jsp:useBean>标签声明的ID为"myBean"的BeanDemo对象,然后给它的count属性赋值。

值得注意的是,如果一个JSP文件通过<jsp:setProperty>或<jsp:getProperty>标签访问一个JavaBean的属性,要求改JSP文件先通过<jsp:useBean>标签声明这个JavaBean,否则<jsp:setProperty>和<jsp:getProperty>标签在运行时会抛出异常。

IT兄弟连 JavaWeb教程 JSP访问JavaBean的更多相关文章

  1. IT兄弟连 JavaWeb教程 JSP中的注释

    由于JSP页面由HTML.JSP.Java脚本等组成,所以在其中可以使用多种注释格式 HTML中的注释 HTML语言的注释不会被显示在网页中,但是在浏览器中选择查看网页源代码时,还是能够看到注释的信息 ...

  2. IT兄弟连 JavaWeb教程 JSP内置对象经典面试题

    1.请说明cookie.request.session.application的作用域和声明周期? 并说明它们适用与什么场景? request的生命周期是一次请求.可以用于JSP表单提交数据. ses ...

  3. IT兄弟连 JavaWeb教程 JSP经典面试题

    1.JSP标准提供了三种独立的向JSP添加Java代码的技术,请列举. <% %>JSP程序代码块,内部可以直接嵌入Java代码. <%! %>JSP声明区,内部可以声明变量和 ...

  4. IT兄弟连 JavaWeb教程 JSP内置对象1

    JSP内置对象定义 JSP提供了由容器实现和管理的内置对象,也可以称之为隐含对象,这些内置对象不需要通过JSP页面编写来实例化,在所有的JSP页面中都可以直接使用,它们起到了简化页面的作用,JSP的内 ...

  5. IT兄弟连 JavaWeb教程 JSP内置对象2

    application对象 application对象用于保存所有应用程序中的公有数据.它在服务器启动时自动创建,在服务器关闭时销毁,当application对象没有被销毁时,所有用户都可以共享app ...

  6. IT兄弟连 JavaWeb教程 JSP经典案例

    案例需求:定义一个javaBean叫XdlUser,有四个字段int id.String name.int age.double salary.写一个jsp页面,在页面中构建一个列表对象,里面存放几个 ...

  7. IT兄弟连 JavaWeb教程 JSP语法

    在JSP页面中,脚本标识使用的最为频繁,因为他们能够方便.灵活地生成页面中的动态内容,特别是JSP程序代码块.JSP中的脚本标识包括3部分,即JSP声明区.JSP表达式和JSP程序代码块.通过这些标识 ...

  8. IT兄弟连 JavaWeb教程 JSP定义

    JSP页面是指扩展名为.jsp的文件,在一个JSP页面中,可以包括指令标识.HTML代码.JavaScript代码.嵌入的Java代码.注释和JSP动作标识等内容.但这些内容并不是一个JSP页面所必须 ...

  9. IT兄弟连 JavaWeb教程 JSP内置对象经典案例

    案例需求:使用MVC模式编写一个程序当发起一个deptList.do请求时在servlet中准备一个部门列表对象,把这个列表对象放入request作用域中,然后转发到deptlist.jsp,使用js ...

随机推荐

  1. cocos2d-js v3事件管理器

    总概: 1.时间监听器(cc.EventListener)封装用户的事件处理逻辑. 2.事件管理器(cc.eventManager)管理用户注册的事件监听器. 3.事件对象(cc.Event)包含事件 ...

  2. Linux就该这么学--命令集合8(命令行通配符)

    1.查看sda开头的所有设备文件: ls /dev/sda* 2.查看sda后面只有一个字符的设备文件: ls /dev/sda? 3.查看sda后面包含0-9数字的设备文件: ls /dev/sda ...

  3. ZOJ - 3935 2016 【数的筛选】

    题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3935 题意 要求找出 从 2016-990528 中 是闰年 并 ...

  4. 怎样使用alsa API

    翻译文章的链接: http://equalarea.com/paul/alsa-audio.html 关于怎么使用ALSA API教程 这份文档帮助对ALSA API使用入门.不是一个完整的ALSA ...

  5. Nginx中的惊群现象解决方法

    *什么是惊群现象?Nginx中用了什么方法来避免这种问题的发生?本篇就解决这两个问题...→_→* 惊群现象的定义与危害 在Nginx中,每一个worker进程都是由master进程fork出来的.m ...

  6. linux命令行快捷键记录

    摘自: http://www.cnblogs.com/webzhangnan/p/3221410.html [移动光标] Ctrl+A 标移到行首.它在多数文本编辑器和 Mozilla 的 URL 字 ...

  7. Oracle数据查看被锁住的用户

    //lock_date是被锁住时间,如果为空证明这个用户没有被锁住 select username,lock_date from dba_users where username='GFMIS';   ...

  8. poj-3666

    http://vjudge.net/problem/POJ-3666 题目是dp 题目;   简单dp 离散一下就好. 我们先来讲一讲不离散的,简单的懂了,其他的也很容易. dp[i] 代表这个数列以 ...

  9. SecureCRT自动备份脚本-思科

    利用SecureCRT脚本对思科设备进行批量备份: (1)新建文本文件(注意保存路径,本次测试路径为D:\backup\list.txt): x.x.x.x username password ena ...

  10. mysql审计实现方法

    Mysql版本: 5.6.24-72.2 一.通过init-connect + binlog 实现MySQL审计功能 基本原理: 由于审计的关键在于DML语句,而所有的DML语句都可以通过binlog ...