一. 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"
}
{
/> |
> other elements </jsp:useBean>
}
二. JSP动作元素useBean使用示例:
<jsp:useBean id="cart" scope="session" class="session.Carts" />
<jsp:setProperty name="cart" property="*" />
<jsp:useBean id="checking" scope="session" class="bank.Checking" >
<jsp:setProperty name="checking" property="balance" value="0.0" />
</jsp:useBean>
三. JSP动作元素useBean执行步骤:
<jsp:useBean>元素用来定位或初始化一个JavaBeans组件。<jsp:useBean>首
先会尝试定位Bean实例,如果其不存在,则会依据class名称(class属性指定)或序
列化模板(beanName属性指定)进行实例化。
进行定位或初始化Bean对象时,<jsp:useBean>按照以下步骤执行。
步骤1: 尝试在scope属性指定的作用域使用你指定的名称(id属性值)定位Bean对
象;
步骤2: 使用你指定的名称(id属性值)定义一个引用类型变量;
步骤3: 假如找到Bean对象,将其引用给步骤2定义的变量。假如你指定类型(type
属性),赋予该Bean对象该类型;
步骤4: 假如没找到,则实例化一个新的Bean对象,并将其引用给步骤2定义的变
量。假如该类名(由beanName属性指定的类名)代表的是一个序列化模
板(serialized template),该Bean对象由java.beans.Beans.instantiate初始
化;
步骤5: 假如<jsp:useBean>此次是实例化Bean对象而不是定位Bean对象,且它有体
标记(body tags)或元素(位于<jsp:useBean>和</jsp:useBean>之间的内容,则执
行该体标记。
<jsp:useBean>和</jsp:useBean>之间经常包含<jsp:setProperty>,用来设置该
Bean的属性值。正如步骤5所描述的,该元素仅在<jsp:useBean>实例化Bean对象时
处理。假如Bean对象早已存在,<jsp:useBean>是定位到它,则体标记毫无用处。
我们可以使用<jsp:useBean>元素来定位或实例化一个JavaBean对象,但不能是
EJB。对于EJB,我们可以通过创建自定义标记来直接调用彧采用其它方式。
四. <jsp:useBean>元素各属性解析:
1. id="beanInstanceName"
一个用来标识你指定作用域的变量。可以在JSP文件的表达式或脚本小应
用程序中使用该变量名称。
该名称大小写敏感,必须符合JSP页面中脚本语言的命名规则。假如你使
用的是Java语言,则该名称遵守的是Java命名规范。假如该Bean对象已由
其它<jsp:useBean>元素创建,则该值必须和实例化该Bean对象
的<jsp:useBean>元素id属性值一致,才能实现定位到该Bean对象。
2. scope="page | request | session | application"
Bean对象存在的作用范围,默认值为 page. 不同作用域解释如下:
1) page: 你可以在<jsp:useBean>元素所在JSP页面或其静态包含页面使
用该JavaBean对象,直到该页面发送响应回客户端或跳转(forwards)至其
它页面。
2) request: 你可以在处理同一个请求的任意一个页面使用该JavaBean对
象,直到该页面发送响应回客户端或产生新的请求。你可以使用request
对象访问该JavaBean对象,示例:
request.getAttribute(beanInstanceName).
3) session: 你可以在同一次会话的任意一个页面使用该JavaBean对象,该
JavaBean对象在整个会话期间一直存在。使用<jsp:useBean/>创建JavaBean对象的
页面的<%@page %>指令元素的session属性值必须设置为true;
4) application: 你可以在创建该JavaBean对象的同一个应用的任意一个页面
使用该JavaBean对象,该JavaBean对象在整个应用期间一直存在。应用中任意一个
页面均可使用它。
3. class="package.class"
从一个class实例化Bean对象,使用new关键字调用class的构造方法完
成。
该 class 必须不能是抽象,必须有一个 public、无参的构造器。包名和
类名称大小写敏感。
4. type="package.class"
用来指定该Bean对象的数据类型,假如既没有指定 class 或 beanBean, 没
有Bean对象能被实例化。包和类名称大小写敏感。
5. class="package.class" type="package.class"
使用class属性指定的类实例化JavaBean对象,并声明其数据类型为type
属性指定的类型;type属性值可和class属性值同,或为其超类、接口。
class属性中所指定类名称必须不能为抽象的,必须包含有public,无参的
构造方法。class和type属性所指定的包名,类名均大小写敏感。
6. beanName="{package.class | <%= expression %>}" type="package.class"
使用java.beans.Beans.instantiate方法实例化beanName属性指定的类或序列
化模板对应的Bean对象,赋予JavaBean对象type属性指定的数据类型。
Beans.instantiate方法会检查beanName属性指定的名称是类名称还是序列化模板
的名称。假如该JavaBean对象已被序列化,则Beans.instantiate使用类加载器读
取序列化的内容,更多信息可参考JavaBeans.
beanName属性值要么是一个完整类名,要么是一个可以转化为完整类名的表达式。
用来传给Beans.instantiate方法。type属性值可和beanName属性值同,或为其超
类、接口。
beanName和type属性所指定的包名,类名均大小写敏感。
五. JSP动作元素useBean使用剖析:
对于<jsp:useBean>执行步骤的理解,我们可以通过阅读JSP转化成的Servlet源码
完成。以下给出二段示意代码, 可参阅之前步骤进行深化理解:
1) 通过beanName指定要实例化的JavaBean类名:
JSP源码 :
------------------------------------
-------
<jsp:useBean id="u" type="bean.User" beanName="bean.User"/>
JSP转译成Servlet的源码 :
------------------------------------
-------
bean.User u = null;
synchronized (_jspx_page_context) {
u = (bean.User) _jspx_page_context.getAttribute("u",
PageContext.PAGE_SCOPE);
if (u == null){
try {
u = (bean.User)
java.beans.Beans.instantiate(this.getClass().getClassLoader(),
"bean.User");
} catch (ClassNotFoundException exc) {
throw new InstantiationException(exc.getMessage());
} catch (Exception exc) {
throw new ServletException("Cannot create bean of class " +
"bean.User", exc);
}
_jspx_page_context.setAttribute("u", u,
PageContext.PAGE_SCOPE);
}
}
2) 通过class指定要实例化的JavaBean类名:
JSP源码 :
------------------------------------
-------
<jsp:useBean id="u" type="bean.User" class="bean.User"/>
JSP转译成Servlet的源码 :
------------------------------------
-------
bean.User u = null;
synchronized (_jspx_page_context) {
u = (bean.User) _jspx_page_context.getAttribute("u",
PageContext.PAGE_SCOPE);
if (u == null){
u = new bean.User();
_jspx_page_context.setAttribute("u", u,
PageContext.PAGE_SCOPE);
}
}
六. 注意几点:
1) class或beanName不能同时存在;它们用来指定实例化的类名称或序列化模板;
如果确信JavaBean对象已存在,class和beanName属性均可无须指定, 可只须指定
type属性。
2) class可以省去type独自存在,beanName必须和type一起使用;
3) class指定的是类名,beanName指定的是类名或序列化模板的名称;
4) class指定的类名必须包含public、无参的构造方法;在对象已实例化时,
beanName指定的名称可以为其接口、父类;
5) 如果JavaBean对象已存在,<jsp:useBean>只是用来定位JavaBean,则只需使用
type属性即可,class和beanName这时舍去不影响使用。
6) class或beanName指定的类名必须包括包名称,type可以省去包名,通过<%
@page import=""%>指定所属包亦可。
7) class通过new创建JavaBean对象;beanName通过
java.beans.Beans.instantiate初始化JavaBean对象。
分享到:
相关推荐
`<jsp:setProperty>`则用于设置JavaBean的属性值,通常与`<jsp:useBean>`配合使用,以便在请求参数与Bean的属性之间进行映射。 6. 示例: ```jsp <jsp:useBean id="myBean" class="com.example.MyBean" /> <jsp:...
自动属性填充是指在JSP页面中通过`<jsp:useBean>`标签来实例化一个Bean,并利用`<jsp:setProperty>`标签将表单提交的数据或者请求参数自动设置到Bean的属性中。这种方式大大减少了手动设置属性的代码量,提高了代码...
### JSP标准动作详解 ...通过以上对JSP标准动作的详细介绍,可以看出这些动作元素极大地简化了JSP页面的开发工作,提高了代码的可维护性和重用性。开发者可以根据实际需求灵活地选择合适的标准动作来实现各种功能。
以下是对JSP指令和动作的详细说明: 1. **指令(Directive)**: - **page指令**:设置JSP页面的特性,例如指定脚本语言(如Java)、页面的父类(servlet的扩展类)、导入其他Java类、设置缓冲区大小、是否自动...
标准动作元素是JSP提供的一些基本动作元素,例如<jsp:include>、<jsp:param>、<jsp:forward>、<jsp:useBean>、<jsp:getProperty>、<jsp:setProperty>和<jsp:plugin>等。自定义动作元素是开发者根据需求自定义的动作...
本文将详细介绍JSP的基本语法,并通过具体的示例来帮助读者更好地理解和掌握。 #### HTML注释 HTML注释是在客户端可见的注释形式,用于在HTML源代码中添加备注或说明。这种方式可以让开发者在“查看源代码”时看到...
在本压缩包中,我们聚焦于“JSP程序开发范例宝典”这本书的第二章内容,这是一份宝贵的学习资源,旨在为JSP初学者和开发者提供实用的示例和详细资料。JSP(JavaServer Pages)是Java平台上的一个核心技术,用于创建...
本篇将详细介绍基于JSP(Java Server Pages)的上机练习,这些练习源自清华大学的“jsp程序设计”课程。JSP是Java平台上的一个核心技术,它允许开发人员创建动态、交互式的Web应用程序。在进行JSP编程时,我们需要...
以下是对这些知识点的详细说明: 1. **文件上传**: 文件上传是Web应用中常见的功能,通常涉及到表单提交和服务器端的处理。在JSP中,可以使用`<input type="file">`创建文件选择控件。服务器端通常利用Servlet来...
这个压缩包中的“JSP实用编程实例集锦(PDG)”可能是PDF格式的详细教程,涵盖上述多个方面,可能包括代码示例和解释。"说明.htm"和"readme.txt"通常用于提供关于压缩包内容的简要介绍和使用指南。通过深入学习这些...
以下是一些围绕JSP核心知识点的详细说明: 1. **JSP基础知识**:JSP是一种动态网页开发技术,它允许将Java代码嵌入到HTML或XML文档中,以便在服务器端执行。JSP文件由HTML标记、脚本元素、指令元素和动作元素组成。...
除了`<jsp:useBean>`之外,还可以使用`<jsp:getProperty>`和`<jsp:setProperty>`来获取和设置JavaBean的属性值。 - `<jsp:getProperty>`用于获取JavaBean的属性值。 - `<jsp:setProperty>`用于设置JavaBean的属性值...
本资源“JSP精华编程与文档说明”是针对JSP高级编程的详细指南,旨在帮助初学者和有一定基础的开发者深入理解和提升JSP开发技能。 1. **JSP基本概念** - **JSP元素**:包括指令(directives)、脚本元素...
以下是这些知识点的详细说明: 1. JSP基本类:JSP页面在运行时会自动加载一些基础类,如`java.lang.*`、`javax.servlet.*`和`javax.servlet.jsp.*`。`java.io.*`不是JSP本身加载的,但经常在JSP页面中使用,用于...
以下是一些关键的JSP API组件和概念的详细说明: 1. **JSP页面元素**:JSP页面由三部分组成:静态内容(HTML、CSS、JavaScript)、声明式元素(如JSP脚本元素、指令)和动作元素。例如,`<jsp:include>`用于在运行...
**描述:“jsp示例,及基本操作语法结构的说明,经供参考,能力有限”** - 描述中提到的是该压缩包提供了JSP的基本示例和语法结构的介绍,这可能包括了如何创建、使用变量、控制流程、调用Java方法等基本概念。...
以下是对JSP相关知识点的详细说明: 1. JSP加载的基本类: JSP在运行时会自动加载一些基础的Java类库,包括`java.lang.*`、`java.io.*`以及`javax.servlet.*`。然而,`javax.servlet.jsp.*`不是JSP本身加载的基本...
- `<jsp:useBean>`:创建或查找一个JavaBean,并将其绑定到页面作用域。 - `<jsp:setProperty>`和`<jsp:getProperty>`:设置和获取JavaBean的属性。 5. **示例文件分析** - `getxml.jsp`:可能涉及到解析XML文件...
本文将详细介绍几种常用的JSP标签及其用法,并介绍JSP页面的四大作用域。 #### JSP 标签详解 1. **<jsp:include>标签** - **用途**: 表示包含一个静态的或动态的文件。 - **示例**: `<jsp:include page=...
**正文** 《jsp帮助文档API》是一份详细阐述JavaServer Pages (JSP)技术的API文档,主要面向开发者,提供...这份文档不仅涵盖了基本概念,还包含了丰富的示例和详细的API接口说明,是JSP开发者不可或缺的参考资料。