javaWeb之JavaBean

1,什么是JavaBean?

   JavaBean是使用java语言开发的一个可重用的组件,在JSP开发中使用javaBean可减少重复代码,使用整个JSP会更加简洁,逻辑清晰;jsp和JavaBean联合使用有以下好处:

  • 可将页面(html,jsp等等)和java代码分离,这样日后的维护比较方便;
  • 可利用JavaBean的有点,将常用的程序写成JavaBean组建,当JSP使用时,只要调用JavaBean组件来执行用户所需要的功能即可;

   在jsp中如果要应用jsp提供的JavaBean的标签来操作简单类,则此类必须要满足一下条件:

  1. 所以的类必须放在一个包(package)中,在WEB中没有包的类是不存在的;
  2. 所有的类必须声明为一个public 的class,这样才能被外部访问;
  3. 类中所有的属性都必须进行封装,即使用private声明;
  4. 封装的属性如果需要被外部所操作,则必须编写对应的setter,getter方法;
  5. 一个javaBean中至少要存在一个无参构造方法,此方法为jsp中的标签所使用;

例如有这样一个JavaBean:

package com.keith.bean;
public class TUser {
	private String name;
        private int age;
	public TUser() {
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
        }
	public int getAge() {
                  return age;
	}
        public void setAge(int age) {
		this.age = age;
        }
}

 这就是一个Bean,其实他就是一个普通的java类而已,还有以下几种称呼:

  • POJO(Plain Ordinary Java Objects):简单java对象;
  • VO(Value Object):用于传递值的操作上;
  • TO(Transfers Object):传输对象,进行远程传输时,对象所在的类必须实现java.io.Serializable接口;

他们并没有什么本质上的不同,都是表示同一种类型的Java;

2,使用JSP的page指令导入所需要的JavaBean:

一个开发完后的JavaBean,可以用<%@ page %>指令导入;

使用刚刚定义的JavaBean,看实例:

<%@ page import="com.keith.bean.*" %>
<%
 //实例化TUser
 TUser user = new TUser();
	//通过setter()方法给其赋值
	user.setName("keith");
	user.setAge(21);
 %>
<%-- 通过getter()取值 --%>
姓名:<%=user.getName() %><br />
年龄:<%=user.getAge() %><br />

 看下页面的输出:

姓名:keith
年龄:21

 3,使用<jsp:userBean />指令

除了使用

<%@ page import="com.keith.bean.*" %>

来找到Bean,还可以使用<jsp:userBean>指令;其语法是:<jsp:useBean id="" scope="" class=""></jsp:useBean>

  • id:表示实例化对象的名称;
  • scope:表示此对象的保存范围;
  • class:表示对象对应的包,类名称;

所有引入:

<jsp:useBean id="user" scope="page" class="com.keith.bean.TUser"></jsp:useBean>

 和

<%@ page import="com.keith.bean.TUser" %>

 效果是一样的;每次修改Bean以后,需要重新启动服务器,Bean才能被刷新加载进来;

为什么<jsp:userBean>指令可以直接进行对象实例化?依靠的是反射机制完成;

特点!JavaBean的特点在于与表单的交互上,可以直接通过request.getParameter()完成对对象的设置!

4,JavaBean的保存范围

   <jsp:useBean>指令上存在一个scope属性,表示一个JavaBean的保存范围,一共有4中:

  • page:保存在一页的范围中,跳转后此JavaBean无效;
  • request:一个JavaBean对象可以保存在一次服务器跳转的范围中;
  • session:在一个用户的操作范围中保存,重新打开浏览器时才会声明新的JavaBean;
  • application:在整个服务器上保存,在服务器关闭时才会消失;

测试:有一个count的类:

package com.keith.bean;
public class Conut {
 private int count = 0;
	public Conut() {
		System.out.println("----------一个新的Count对象产生-------------");
	}
	/**
	 * 每次自增后返回
	 * @return
	 */
	public int getCount() {
		return ++ this.count;
	}
	public void setCount(int count) {
		this.count = count;
	}
}

 测试page范围(只在本页有效,跳转后无效)的JavaBean:

count.jsp:

<jsp:useBean id="ct" class="com.keith.bean.CountBean" scope="page"/>
<body>
第:<jsp:getProperty property="count" name="ct"/>次访问!
<a href="count1.jsp">跳转到另一个JSP</a>
</body>

 count1.jsp:

<jsp:useBean id="ct" class="com.keith.bean.CountBean" scope="page"/>
<body>
第:<jsp:getProperty property="count" name="ct"/>次访问!
</body>

 当我们分别访问count和count1时候,在控制台会输出2次:----------一个新的Count对象产生-------------;

测试request范围的JavaBean:

<jsp:useBean id="ct" class="com.keith.bean.CountBean" scope="request"/>

 测试session范围的JavaBean:

<jsp:useBean id="ct" class="com.keith.bean.CountBean" scope="session"/>

 测试application范围的JavaBean:

<jsp:useBean id="ct" class="com.keith.bean.CountBean" scope="application"/>

  4,删除JavaBean!

对于不同范围的JavaBean;则根据不同而删除:

session.removeAttribute("count");
request.removeAttribute("count");
response.removeAttribute("count");
application.removeAttribute("count");
 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值