在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. 图片转base64存储

    图片转base64存储 base64.b64encode(r.content) url='http://www.heze.cn/info/themes/heze/Public/tel/?tel=MDU ...

  2. windows 复制 文本文件内容 到剪切板

    shell  打开 type filename | clip

  3. 一起来学linux:PAM模块

    在Linux中执行有些程序时,这些程序在执行前首先要对启动它的用户进行认证,符合一定的要求之后才允许执行,例如login, su等 在Linux中进行身份或是状态的验证程序是由PAM来进行的,PAM( ...

  4. MQ发送的消息都到了死信队列中了

    MQ在发送消息的时候,设置的过期时间太短.(昨天项目上线遇到了,开发中也遇到一次.)谨记!!!

  5. Xcode各个版本及模拟器下载

    如果你嫌在 App Store 下载 Xcode 太慢,你也可以选择从网络上下载: Xcode下载(Beta版打的包是不能提交到App Store上的) 绝对官方源!!!绝对官方源!!!绝对官方源!! ...

  6. HDU6025 Coprime Sequence —— 前缀和 & 后缀和

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6025 Coprime Sequence Time Limit: 2000/1000 MS (Java/ ...

  7. RobotFramework教程使用笔记——Selenium2Library库

    selenium之前已经学习介绍过了,它是一个支持多语言.多平台.多浏览器的web自动化测试框架,在robotframework中也可以导入selenium库来进行web自动化测试.它使用seleni ...

  8. hdu 6058

    \(f(l,r,k)=\)区间[\(l\),\(r\)]的第k大. \(\sum_{l=1}^{n}{\sum_{r=l}^{n}{f(l,r,k)}}\) 参考题解,claris大佬题解.赛后AC. ...

  9. Python:深浅拷贝

    导入模块: >>> import copy 深浅拷贝: >>> X = copy.copy(Y) #浅拷贝:只拷贝顶级的对象,或者说:父级对象 >>&g ...

  10. Spring 事务管理高级应用难点剖析: 第 3 部分

    本文是“Spring 事务管理高级应用难点剖析” 系列文章的第 3 部分,作者将继续深入剖析在实际 Spring 事务管理应用中容易遇见的一些难点,包括在使用 Spring JDBC 时如果直接获取 ...