JSP_7th_动作指令jsp:useBean
2017-05-31 23:46
573 查看
一、jsp:useBean
1)通过jsp:useBean,可以在JSP中使用在别的java文件中定义好的Bean。
2)jsp要求Bean应该在一个包中,而不能是裸体类。
2)Bean的基本要素:
①必须要有一个不带参数的构造器,在JSP元素创建Bean时会调用空构造器。
②Bean类应该没有任何公共实例变量(都是private的),也就是说,不允许直接访问实例变量,变量名称首字母
必须小写。
③通过getter/setter方法来读/写变量的值,并且将对应的变量首字母改成大写。
3)基本用法,举例说明:
在TestJSP项目的src目录下新建一个包com.hpe.bean,在包下新建CounterBean.java如下所示:
可以看出这个Bean实现了Serializable接口,也就是说CounterBean对象可以被java.io.ObjectInputStream写入、被java.io.ObjectOutputStream写出。
写一个TestBean.jsp如下所示:
这种写法相当于下面这样:
也就是说class属性指定了类的位置,id属性指定了对象名(引用名)。
jsp:useBean有一个属性scope,scope="page|request|session|application"
scope默认为page,即由jsp:useBean生成的Bean对象默认是一个局部变量,用户请求一个jsp页面,服务器就调用其service方法生成一个Bean对象,当service方法结束,该变量也就随之消失。
jsp:useBean有一个属性type,即指定生成的Bean对象的类型,如:
相当于下面这种写法:
即父类用指向子类对象,type默认为class所指定的类的类型。
下面在CounterBean.jsp中加入对Bean对象方法的调用:
访问:http://localhost:8080/TestJSP/TestBean.jsp,多次访问后,统计数依然为1:
这是由于Bean对象的type属性默认值为page,因此生成的Bean对象是局部变量。
除了直接调用使用set方法来获取Bean对象的私有成员变量的值,也可以通过jsp:setProperty来设置指定对象的属性。
可以使用jsp:getProperty来设置指定对象的属性,如下所示:
页面效果:
总结:
jsp:useBean各项参数含义:
①id:对象实例名称。
②class:包名.Bean类名
③scope:Bean作用的范围,默认为page,对仅在当前jsp页面有效。
④type:Bean实例类型,可以是本类,或其父类,或实现的接口,默认为本类。
1)通过jsp:useBean,可以在JSP中使用在别的java文件中定义好的Bean。
2)jsp要求Bean应该在一个包中,而不能是裸体类。
2)Bean的基本要素:
①必须要有一个不带参数的构造器,在JSP元素创建Bean时会调用空构造器。
②Bean类应该没有任何公共实例变量(都是private的),也就是说,不允许直接访问实例变量,变量名称首字母
必须小写。
③通过getter/setter方法来读/写变量的值,并且将对应的变量首字母改成大写。
3)基本用法,举例说明:
在TestJSP项目的src目录下新建一个包com.hpe.bean,在包下新建CounterBean.java如下所示:
package com.hpe.bean; import java.io.Serializable; public class CounterBean implements Serializable { private int count = 0; public CounterBean() { } public int getCount() { return ++count; } public void setCount(int count) { this.count = count; } }
可以看出这个Bean实现了Serializable接口,也就是说CounterBean对象可以被java.io.ObjectInputStream写入、被java.io.ObjectOutputStream写出。
写一个TestBean.jsp如下所示:
<jsp:useBean id="cb" class="com.hpe.bean.CounterBean"> </jsp:useBean>
这种写法相当于下面这样:
<%@ page import="com.hpe.bean.CounterBean" %> <% CounterBean cb = new CounterBean(); %>
也就是说class属性指定了类的位置,id属性指定了对象名(引用名)。
jsp:useBean有一个属性scope,scope="page|request|session|application"
scope默认为page,即由jsp:useBean生成的Bean对象默认是一个局部变量,用户请求一个jsp页面,服务器就调用其service方法生成一个Bean对象,当service方法结束,该变量也就随之消失。
jsp:useBean有一个属性type,即指定生成的Bean对象的类型,如:
<jsp:useBean id="cb" class="com.hpe.bean.CounterBean" type="java.lang.Object"> </jsp:useBean>
相当于下面这种写法:
<%@ page import="com.hpe.bean.CounterBean" %> <% Object cb2 = new CounterBean(); %>
即父类用指向子类对象,type默认为class所指定的类的类型。
下面在CounterBean.jsp中加入对Bean对象方法的调用:
<jsp:useBean id="cb" class="com.hpe.bean.CounterBean"> </jsp:useBean>
<%= cb.getCount() %>
访问:http://localhost:8080/TestJSP/TestBean.jsp,多次访问后,统计数依然为1:
这是由于Bean对象的type属性默认值为page,因此生成的Bean对象是局部变量。
除了直接调用使用set方法来获取Bean对象的私有成员变量的值,也可以通过jsp:setProperty来设置指定对象的属性。
可以使用jsp:getProperty来设置指定对象的属性,如下所示:
<jsp:useBean id="cb" class="com.hpe.bean.CounterBean"> </jsp:useBean>
<jsp:setProperty name="cb" property="count" value="100" />
<%-- 相当于
<% cd.setCount(100); %>
--%>
<jsp:getProperty name="cb" property="count" />
<%-- 相当于
<%= cb.getCount() %>
--%>
页面效果:
总结:
jsp:useBean各项参数含义:
①id:对象实例名称。
②class:包名.Bean类名
③scope:Bean作用的范围,默认为page,对仅在当前jsp页面有效。
④type:Bean实例类型,可以是本类,或其父类,或实现的接口,默认为本类。
相关文章推荐
- JSP的7个动作指令之useBean,setProperty,getProperty指令
- jsp小结06 - 7个动作指令03 useBean、setProperty、getProperty
- JSP动作指令 Include、 Forward、 UseBean、 GetProperty、 SetProperty、 Plugin、param
- JSP指令与动作指令
- JSP中include指令和include动作的区别
- jsp动作元素之forward指令
- JSP的3个编译指令,7个动作指令,9个内置对象
- JSP(2)jsp语法之指令元素、脚本元素、动作元素forward、注释方法
- JSP的7个动作指令之forward指令
- JSP的7个动作指令
- jsp三个编译指令和七个动作指令
- jsp基础知识二(jsp动作指令)
- JSP基础——JSP的7个动作指令
- 关于jsp编译指令include和动作指令include的区别
- JavaWeb笔记——Jsp的指令、内置对象和动作标签
- 002_JSP的三个编译指令和七个动作指令
- JSP九个内置对象及指令、动作标签
- jsp:include动作和include指令的区别
- JSP 之useBean动作
- JSP 3个编译指令,7个动作指令,9个内置对象