jsp与javaBean

来源:互联网 发布:linux常用查看命令 编辑:程序博客网 时间:2024/06/08 06:30

一: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;}@Overridepublic 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表达式 这东东就会自动做处理。当然弄这个的时候









2 1