jsp与javaBean

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









  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值