一. 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 useBean连接 Access 数据库,不使用数据源
JSP之访问JavaBean的一个简单例子 使用useBean,jsp:setProperty,jsp:getProperty使用的一个简单例子 博客参考地址:https://blog.csdn.net/qq_36631076/article/details/79693890
exception)、JavaBean组件、JSP标准动作(<jsp:forward>,<jsp:param>,<jsp:setProperty>,<jsp:plugin>,<jsp:include>,<jsp:useBean>,<jsp:getProperty>)、JSP中使用数据库(JDBC常用API)、JSTL的配置步骤、核心...
<jsp:useBean>标签用来在JSP页面中创建一个JavaBean实例并指定他的名字以及作用范围 <jsp:setProperty>此操作和setBean一起协作,用来设置JavaBean的属性 <jsp:getProperty>操作是对<jsp:setProperty>操作的补充,...
JAVA程序员JSP开发员面试必备的宝典。面向职场的高级宝典。
在JSP页面中,为了把其他资源的输出内容插入到当前JSP页面的输出内容中,JSP技术提供了<jsp:include>动作元素。其语法格式为: <jsp:include page="relativeURL" flush="true|false" /> 指定被引入资源的相对路径 ...
Java Web程序设计任务驱动教程课后习题参考答案 - 蓝敏、周伟敏、杨茜
学生管理系,jsp+javabean编写,功能强大
<jsp:useBean> 8 <jsp:getProperty> 10 <jsp:setProperty> 11 六、JSP內建對象 12 out輸出數據 12 request對象 13 response對象 15 page對象 16 session對象 16 application對象 17 exception對象 19 pageContext對...
6.12 <jsp:useBean> 18 7 服务器参数设置 19 8 JavaBean 20 9 数据库连接 21 10 JSP与XML的结合 23 10.1 标签库的定义 24 10.2 标签的组件 25 10.3 建立自己的标签 26 10.4 如何利用JSP开发DOM应用? 30 10.5 如何...
1.使用<jsp:useBean> 去掉Category.jsp、Product.jsp 和Item.jsp 中的new语句。 2用EL达式输出Java对象属性的值方法随Category.jsp/Product.jsp和Item.jsp代码。 3.使用JSTL的<c:forEach>标签取代Category.isp和...
例如:<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1" isErrorPage="true"%> ② jsp的工作原理:访问浏览器-->web容器将访问的jsp文件转换成java文件(9个内建对象可在此种找到)--&...
例如:<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1" isErrorPage="true"%> ② jsp的工作原理:访问浏览器-->web容器将访问的jsp文件转换成java文件(9个内建对象可在此种找到)--&...
例如:<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1" isErrorPage="true"%> ② jsp的工作原理:访问浏览器-->web容器将访问的jsp文件转换成java文件(9个内建对象可在此种找到)--&...
7.2.3、使用<jsp:useBean>指令 7.3、JavaBean与表单 7.4、设置属性:<jsp:setProperty> 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置具体内容 7.5、取得属性:<jsp:getProperty> ...
7.2.3、使用<jsp:useBean>指令 7.3、JavaBean与表单 7.4、设置属性:<jsp:setProperty> 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置具体内容 7.5、取得属性:<jsp:getProperty> ...
7.2.3、使用<jsp:useBean>指令 7.3、JavaBean与表单 7.4、设置属性:<jsp:setProperty> 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置具体内容 7.5、取得属性:<jsp:getProperty> 7.6...
7.2.3、使用<jsp:useBean>指令 7.3、JavaBean与表单 7.4、设置属性:<jsp:setProperty> 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置具体内容 7.5、取得属性:<jsp:getProperty> ...
7.2.3、使用<jsp:useBean>指令 7.3、JavaBean与表单 7.4、设置属性:<jsp:setProperty> 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置具体内容 7.5、取得属性:<jsp:getProperty> 7.6...
7.2.3、使用<jsp:useBean>指令 7.3、JavaBean与表单 7.4、设置属性:<jsp:setProperty> 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置具体内容 7.5、取得属性:<jsp:getProperty> 7.6...