天天写Spring,你敢说自己会javabean吗?
点击关注公众号,Java干货及时送达
前言
我记得在学习java的时候,老师提到过java程序中除了属性就是函数,不过还有一个:事件,我记得java和C++不一样的地方就是java无法多继承,如果你想实现事件或者多重继承等操作的话就不可避免的要写大量的胶水代码。
javabean就是为了解决这样的问题诞生的,任何一项技术都是为了解决某种问题而研究出来的,只少流行的技术是这样的。
javabean其实就是个特殊的java类,javabean是java用于描述软件组件模型的类,这些类遵循一个接口格式,这是为了方便函数命名、继承等,你也可以把Java类视为标准的javabean组件进行构造和应用。
javabean一般分为可视化组件和非可视化组件两种,前者可以是简单的或者是复杂的GUI元素,而后者一般用于封装业务逻辑,数据库操作等比较高端的地方。
javabean中都有什么
既然javabean是一个类,那么就必然会有属性,同时还有大量的set/get函数,那有什么是属于javabean自己的呢?有的
javabean中必须有一个无参数的构造函数(这好像并不是特殊哈)
javabean中的属性一般都是私有的
javabean中定义函数setXxx()和getXxx()来对属性进行操作,其中Xxx是首字母大写的私有变量名称;
javabean中的属性和一般的java类中的属性没有什么两样,在javabean的世界中,他的属性主要分为以下四种:
Simple属性
一个Somple表示一个有set/get函数的变量,
public class JS
{
string str="asa";
public JS()
{
setBackground(Color.red);
setForeground(Color.blue);
}
public void setString(String newstring)
{
str=newstring;
}
public String getString()
{
return str;
}
}
Index属性
一个Index属性表示一个数组值,可以一次设置或者 是获取 整个 数组的值。
public class JSb
{
int [] dataset={122,4,5,,5};
public JSb()
{
setBackground(Color.red);
setForeground(Color.blue);
}
public void setDataset(int[] x)
{
dataset=x;
}
public void setdataset(int index,int x)
{
dataset[index]=x;
}
public int[] getdataset()
{
return dataset;
}
public int getdataset(int x)
{
return dataset[x];
}
}
Bound属性
Bound提供一种机制,是一种通知监听器监视javabean组件发生的改变,每当属性值发生改变的时候,就会触发Propertychang事件,Propertychang事件中封装了属性名、属性变化前后的值。
Constrained属性
和上面的属性类似,不过属性的变化值首先被所有的监听器监听验证之后,变化后的值才能在javabean中发挥作用。
我们如何在JSP中使用Javabean?
JSP可以说是我们java人接触的第一个框架了,我当初学习的时候第一个学习的就是JSP,能够在JSP中使用javabean,和其他的java类一样先导包。
<%@ page import="javabean-1"%>
接着就是声明javabean对象
<jsp:useBean id="scassa">
Scope="page|request|session|application"
{
Class="pageage.class"[type="pageage.class"]|
BeanName="{package.class|<%=expression%>}"
Type="pageage.class"|
Type="pageage.class"
}
{/>|other elements</jsp:useBean>}
然后访问javanbean属性,
<jsp:getProperty name="b" property="aasdas"/>
还可以设置属性
<jsp:setProperty name="b" property="xxx" value=“0”/>
都有自己的地盘,javabean在JSP中有多大地盘?
Page
当javabean被设定为page范围内有效的时候,一旦用户进入某一个页面就会创建一个page对象,而当用户刷新页面或跳转到别的页面的时候,page对象就变成了垃圾
package com;
public class Counter
{
private int inlinenum=0;
public Counter()
{
}
public int getonlinenum()
{
return onlinenum;
}
public void setonlienum(int count)
{
this.onlinenum=
}
把javabean设定page范围内有效时的JSP页面
<%@ page language="java" pageEncoding="GB1232"%>
<%@ page import="com.*">
<html>
<head>
<title>
121232
</title>
</head>
request
把javabean设定request范围内有效时,用户对每个页面发送一次请求都会创建一个javabean,并且可以在多个相互请求的页面中共享数据,他的范围是page要大一点。
session
session代表一个联机客户端,每当一个用户连接到某个服务器的时候就会产生一个session对象,用户断开连接之后对象才会终止,session的范围又比request大一点,其作用的范围包括客户的当前对话。
application
从名字就可以看出来,application代表一个应用程序,每当用户连接服务器的时候,就会创建一个application对象,如果所有的用户都断开连接了对象才会终止。
总结
这就是我们每天都会打交道的javabean,他其实和普通的java类没有什么不同。