一:javaBean
何为javaBean? javaBean是一个遵循特定写法的java类 它通常具有以下特点:
① 这个java类必须具有一个无参的构造函数
②属性必须私有化
③私有化的属性必须通过public的方法暴露给其他程序 (每个类至少有一个属性 因为继承Object类 Object 类中有个 getClass 所以 有个Class属性)并且方法的命名也必须遵循一定的命名规范
在J2EE开发中 javaBean 通常用来封装数据 完成事务处理 其他程序可以通过反射技术实例化javaBean 对象 并且通过反射哪些遵循命名规范的方法 从而获知 javaBean 的属性进而调用器属性保存数据
以下是一个javabean的demon
package com.tb.Manager;
import java.util.Date;
public class Person {
private String name;
private String id;
private Date date;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public Person() {
// TODO Auto-generated constructor stub
}
public Person(String name, String id, Date date) {
super();
this.name = name;
this.id = id;
this.date = date;
}
@Override
public String toString() {
return "Person [name=" + name + ", id=" + id + ", date=" + date
+ "]";
}
}
二: 在jsp中 使用 javaBean
Jsp 技术提供了三个关于javaBean 组件的动作元素 即jsp标签 它们分别为:
①<jsp:useBean>标签: 用于在jsp 页面中查找或实例化一个javaBean
②<jsp:setProprty>标签:用于在jsp 页面设置一个javaBean的属性
③<jsp:getProprty>标签: 用于在jsp页面中获取一个javaBea属性
<jsp:useBean>
<!-- id javabean 实例对象的引用存在域中的名称 如果这个id已经在相对应的域中存在了 则直接取出来 否则是先实例化 class javabean完整类名 sacope javabean实例对象引用所存的域 默认是page 取值有 page request session 和 application -->
<jsp:useBean id="person" class="com.tb.Manager.Person" scope="page">
</jsp:useBean>
<%=person.getName() %>
这里还有个细节 在<jsp:useBean> Body </useBean>中 Body 部分的内容只在<jsp:useBean>标签创建javaBean的实例对象时才执行
<jsp:useBean id="person" class="com.tb.Manager.Person" scope="session">
ddddd
</jsp:useBean>
<%=person.getName() %>
点击刷新 请看结果
原因是 这个Bean 存在session 域中 第一次执行是创建了Bean实例对象 而再次刷新是直接从session中取得
<jsp:setProperty>
<!-- id javabean 实例存在域中的名称 class javabean完整类名 sacope javabean所存的域 默认是page 取值有 page request session 和 application -->
<jsp:useBean id="person" class="com.tb.Manager.Person" scope="page">
</jsp:useBean>
<!-- name:相对应得javabean的引用存在相对应域中的名称 property:javabean的属性 value 给相对性的属性赋值 param 通过请求参数给属性赋值 -->
<jsp:setProperty property="name" name="person" value="XXX"/>
<jsp:setProperty property="id" name="person" param="id"/>
<%= pageContext.findAttribute("person") %>
从这两种赋值能将所设置的值直接赋给相对应属性的值 但是前提是相对应Bean属性类型要是八种基本数据类型 如果不是的话就会出现出异常 如下图 parma 赋值方法同理
<jsp:setProperty property="date" name="person" value="2000-05-01"/>
如果想将所设值赋给相对属性 也不是不可以 我们只要用脚本片段 做个小小转换就好
<jsp:setProperty property="date" name="person" value="<%= new Date() %>"/>
再介绍一个小技巧 通过所有请求参数给Bean赋值
<jsp:setProperty property="*" name="person"/>
一定注意参数和属性同名
<jsp:getProperty>
<jsp:getProperty property="name" name="person"/><br/>
<jsp:getProperty property="id" name="person"/><br/>
<jsp:getProperty property="date" name="person"/>
<%-- <%= pageContext.findAttribute("person") %> --%>
可以看出这个东东的效果就是这样 当然 如果某个属性值是没有 它就会打印出null 而在开发中 null 是不能给予客户的 所以我们还得做处理 比较麻烦 不过还有又El表达式 这东东就会自动做处理。当然弄这个的时候