JavaBean是一种可重复使用、且跨平台的软件组件。
JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean;
还有一种是没有用户界面的,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。JSP通常访问的是后面一种JavaBean。
MVC设计模式:(model view controller)
【模型视图控制器】
JavaBean的特征:
——JavaBean是一个公共类
——JavaBean有一个不带参数的构造方法
——通过setter和getter分别来设置和获取属性值。
这样子可以成功地通过反射来调用JavaBean的方法。
jsp访问JavaBean的语法:
1、导入JavaBean类
<%@page import="mypackage.counterBean"%>
2、声明JavaBean的对象
<jsp:useBean id="myBean" class="mypackage.counterBean" scope="session"></jsp:useBean>
也可以直接用java代码:
<%counterBean myBean = new counterBean();%>
3、访问JavaBean的对象
把JavaBean count属性输出到屏幕中,注意name要和声明JavaBean对象的id一致。
<jsp:getProperty name="myBean" proerty="count"/>
同理用java代码:
<%=myBean.geCount()%>
4、可以通过下面语句把JavaBean的count属性赋值
<jsp:setProperty name="myBean" property="count" value="0"/>
<%information.setCount(0);%>
和getProerty的不同是多了value的值。
value后面的字符串会被编译器自动转换成目标需要的类型。
动态赋值时可以用param,但是param与value不可以共存。param的赋值其实是由请求的数据赋值的。
假定前一个页面request传来HelloWorld=50,
param=“HelloWorld”等价request.getParameter(“HelloWorld”);
<jsp:getProperty name="Person" property="age" param="HelloWorld"/>
会打印50、
JavaBean的属性以及用法:
id = "beanInstanceName
在所定义的范围中确认Bean的变量,使之能在后面的程序中使用此变量名来分辨不同的Bean,这个变量名也是对大小写敏感的,必须符合所使用的脚本语言的规定。
如果Bean已经在别的
<jsp:useBean>
中已经创建,则当使用这个已经创建过的Bean时,id的值必须相等,否则意味着创建了同一个类的两个不同对象。
Scope属性决定了JavaBean对象的存在范围。scope的可选值包括:
——page(默认值,当前页面)
客户每次请求jsp页面时,都会创建新的JavaBean对象。
即一下两种情况都会结束生命期:
客户请求访问的当前的jsp网页通过forward标记请求转发到另外一个文件;
客户请求访问的当前jsp页面执行完毕后并向客户端发回响应。
——request(可以被转发到下一个页面)
客户每次请求jsp页面时,都会创建新的JavaBean对象。
有效范围:(1)客户请求访问的当前页面
(2)和当前jsp页面共享同一个客户请求的网页,即当前jsp网页中%@include指令和<forward>标记包含的其他jsp文件
结束生命周期:当所有共享同一个客户请求的jsp页面执行完毕并向客户端发回响应时结束。
假设在jsp1页面:<jsp:userBean id="person" class="www.Person" scope="request"/>
jsp2可以通过getAttribute来获取javaBean对象:
out.print(p.getAge())%>```
——session
JavaBean对象被创建后,它存在于整个Session的生命周期内,同一个Session中的JSP文件共享这个JavaBean对象。
JavaBean对象作为属性保存到HttpSession对象中,属性名为JavaBean的id,属性值为JavaBean对象。除了可以通过JavaBean的id引用JavaBean对象外,也可以通过HttpSession.getAttribute()方法取得JavaBean对象,例如:
```Person p = (Person)session.getAttribute("person");```
——application
JavaBean对象被创建后,它存在于整个WEb应用的生命周期内,Web应用中的所有jsp文件都能共享同一个JavaBean对象。
和其他的scope值一样,也是有两种访问方式,一种是根据JavaBean的id或者用方法(Person)application.getAttribute("person")来访问JavaBean对象。
*记得把对象强制转换*
记住JavaBean必须遵守特定的规范,比如Person的age属性,必须提供getCount()和setCount()方法,而不能随心所欲定义其他如insertcount()等其他名字的原因是:
>当所有JavaBean遵守相同额规范,<jsp:getProperty>和<jsp:setProperty>标记就能够自动根据JavaBean的属性来推断出它的get和set方法。