`

<jsp:useBean>元素使用详解

阅读更多

一. 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" 
        } 
  </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>

 

上面两种使用方式都可以,但是两种还是有差别的。

第一种的话,不管在session里面是否存在了Bean的实例,下面的<jsp:setProperty name="cart" property="*" /> 都会被

执行的

第二种的话,如果在session里面存在了Bean的实例,中间的<jsp:setProperty name="checking" property="balance" value="0.0" /> 是不会被执行的,意思就是说,中间的语句只有在Bean第一次被实例化的时候才会调用

三. <jsp:useBean>元素各属性解析
        
1. class="package.class" 

        必须是严格的package.class,即不能指定其父类
        
2. type="package.class" 

 

    可以指定其父类或接口的类型,譬如我是想实例化ArrayList,但是type我可以填List

 

3.class="package.class" type="package.class" 

  先创建一个type的实例,赋值null,然后在scope内查找这个实例,如果找不到则new一个


4. beanName="{package.class | <%= expression %>}" type="package.class" 

先创建一个type的实例,赋值null,然后在scope内查找这个实例,如果找不到则通过instantiate()方法

实例化一个类


四. 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标准动作

    该标记的语法格式为:&lt;jsp:useBean id="bean name" class="class name" /&gt;,其中 id 属性指定了 Bean 的名称,class 属性指定了 JavaBean 的类名。 jsp:setProperty 标记用于设置 Bean 的属性。该标记的语法格式为...

    JSP动作元素.pptx

    标准动作元素是JSP提供的一些基本动作元素,例如&lt;jsp:include&gt;、&lt;jsp:param&gt;、&lt;jsp:forward&gt;、&lt;jsp:useBean&gt;、&lt;jsp:getProperty&gt;、&lt;jsp:setProperty&gt;和&lt;jsp:plugin&gt;等。自定义动作元素是开发者根据需求自定义的动作...

    JSP应用开发详解下载

    除了基本的脚本元素,JSP还提供了一系列的动作标签,如`&lt;jsp:include&gt;`, `&lt;jsp:forward&gt;`, `&lt;jsp:useBean&gt;`, `&lt;jsp:setProperty&gt;`等,它们简化了页面的控制逻辑。例如,`&lt;jsp:useBean&gt;`用于在页面作用域内创建或查找...

    (JSP应用开发详解)JSP应用开发详解

    JSP动作元素如`&lt;jsp:useBean&gt;`, `&lt;jsp:setProperty&gt;`, `&lt;jsp:getProperty&gt;`用于管理JavaBean,而`&lt;jsp:include&gt;`用于包含其他页面,`&lt;jsp:forward&gt;`用于页面跳转。 4. **内置对象** JSP提供了九个内置对象,如`...

    JSP应用开发详解源代码-1.rar

    在JSP中,`&lt;jsp:useBean&gt;`可以实例化和使用JavaBean,`&lt;jsp:setProperty&gt;`和`&lt;jsp:getProperty&gt;`则用来设置和获取Bean的属性值。 7. **MVC模式**:在JSP应用开发中,常采用Model-View-Controller(模型-视图-控制器...

    JSP教材JSP语法

    - 使用`&lt;jsp:getProperty&gt;`之前需要先使用`&lt;jsp:useBean&gt;`标签创建Bean实例。 - 确保Bean类中提供了正确的getter方法以获取属性值。 - 如果Bean中的属性未设置或不存在,可能需要进行适当的异常处理。 总结来说...

    jsp详解含javabean el表达式等

    在JSP中,`&lt;jsp:useBean&gt;`和`&lt;jsp:setProperty&gt;`动作可用于创建和设置JavaBean的属性,如下所示: ```jsp &lt;jsp:useBean id="see" class="com.bluedot.student.entity.StudentEntity" scope="request" /&gt; &lt;jsp:set...

    jsp大作业上机练习

    JSP的动作标签如`&lt;jsp:useBean&gt;`、`&lt;jsp:setProperty&gt;`、`&lt;jsp:forward&gt;`等,简化了页面操作。例如,`&lt;jsp:useBean&gt;`用于实例化JavaBean,`&lt;jsp:setProperty&gt;`设置JavaBean的属性。 **五、JSP与Servlet的关系** ...

    JSP+UseBean网上购书系统

    1. **JavaBeans的使用**:在JSP页面中,`&lt;jsp:useBean&gt;`标签首先会查找在指定作用域(如page、request、session或application)中是否存在指定类型的JavaBean。如果不存在,它会根据类名创建一个新的实例,并将其放...

    javaJSP应用开发详解

    3. **JSP动作**:如`&lt;jsp:useBean&gt;`, `&lt;jsp:setProperty&gt;`, `&lt;jsp:getProperty&gt;`等,用于管理JavaBeans组件,以及`&lt;jsp:forward&gt;`, `&lt;jsp:include&gt;`等用于控制流程。 4. **EL(Expression Language)**:一种简洁的...

    jsp2.0基本语法

    - `&lt;jsp:useBean&gt;`:查找或实例化一个JavaBean。 - `&lt;jsp:setProperty&gt;`:设置JavaBean的属性。 - `&lt;jsp:getProperty&gt;`:获取JavaBean的属性。 7. **EL(Expression Language)** EL简化了JSP中的数据访问,...

    jsp实现的用户登录模块

    - JSP脚本元素:如`&lt;jsp:useBean&gt;`、`&lt;jsp:setProperty&gt;`、`&lt;jsp:getProperty&gt;`等,用于管理Java对象。 2. **用户界面设计** 用户界面应包含两个输入字段(username和password),以及一个提交按钮。这些字段的...

    JSP动作标签详细的实例代码

    它通常与`&lt;jsp:include&gt;`或`&lt;jsp:forward&gt;`一起使用。 ```jsp &lt;jsp:include page="search.jsp"&gt; &lt;jsp:params&gt; &lt;jsp:param name="keyword" value="java"/&gt; &lt;/jsp:params&gt; &lt;/jsp:include&gt; ``` 在这个例子中,`...

    jsp实用编程百例.rar_jsp_jsp编程

    - `&lt;jsp:useBean&gt;`:创建或查找JavaBean,并将其绑定到一个作用域。 3. **EL(Expression Language)与JSTL(JavaServer Pages Standard Tag Library)** - EL表达式:用于简化数据访问,如`${expression}`。 - ...

    JSP指令web开发基础篇

    #### &lt;jsp:useBean&gt;, &lt;jsp:setProperty&gt;, &lt;jsp:getProperty&gt; 动作元素详解 这三个动作元素用于管理JavaBeans: - **&lt;jsp:useBean&gt;**:用于在JSP页面中声明并使用一个JavaBean。 - **&lt;jsp:setProperty&gt;**:用于设置...

    jsp技术开发网站实例

    JSP动作元素如`&lt;jsp:useBean&gt;`, `&lt;jsp:setProperty&gt;`, `&lt;jsp:getProperty&gt;`等,用于管理Java对象。例如,`&lt;jsp:useBean&gt;`可以用来实例化和引用JavaBean。 ```jsp &lt;jsp:useBean id="courseBean" class=...

    jsp课件(适合自学)

    - **指令元素**:如`&lt;jsp:include&gt;`(包含其他页面)、`&lt;jsp:forward&gt;`(转发请求)、`&lt;jsp:param&gt;`(传递参数)和`&lt;jsp:useBean&gt;`(创建或查找Java Bean)。 - **EL(Expression Language)**:JSP表达式语言,...

    大三下学期JSP实验答案

    4. **JSP动作标签**:JSP动作标签负责处理服务器端的任务,如`&lt;jsp:useBean&gt;`用于实例化JavaBean,`&lt;jsp:setProperty&gt;`设置Bean的属性,`&lt;jsp:getProperty&gt;`读取Bean的属性,`&lt;jsp:forward&gt;`转发请求,以及`&lt;jsp:...

    JSP 常用的标签以及用法举例

    - **说明**: 该标签必须与&lt;jsp:include&gt;或&lt;jsp:forward&gt;一起使用,以确保参数能够正确传递。 4. **&lt;jsp:useBean&gt;标签** - **用途**: 用于在JSP页面中创建一个bean实例,并指定其名字和作用范围。 - **示例**: ...

    关于jsp中的JSP详解

    **JSP元素**:JSP页面由静态内容和动态元素组成,动态元素包括JSP指令(如`&lt;%@ page %&gt;`, `&lt;%@ taglib %&gt;`, `&lt;jsp:include&gt;`)、脚本元素(如`&lt;% %&gt;`,`&lt;scriptlet&gt;`,`&lt;expression&gt;`)和JSP动作(如`&lt;jsp:useBean&gt;`...

Global site tag (gtag.js) - Google Analytics