Javabean是什么?
JavaBean是一种可重用的Java组件,它可以被Applet、Servlet、JSP等Java应用程序调用.也可以可视化地被Java开发工具使用。它包含属性(Properties)、方法(Methods)、事件(Events)等特性。
JavaBean是一种软件组件模型,就跟ActiveX控件一样,它们提供已知的功能,可以轻松重用并集成到应用程序中的java类。任何可以用Java代码创造的对象都可以利用JavaBean进行封装。通过合理的组织具有不同功能的JavaBean,可以快速的生成一个全新的应用程序,如果将这个应用程序比作一辆汽车,那么这些JavaBean就好比组成这辆汽车的不同零件。对软件开发人员来说,JavaBean带来的最大的优点是充分提高了代码的可重用性,并且对软件的可维护性和易维护性起到了积极作用。
JavaBean的种类按照功能可以划分为可视化和不可视化两类。可视化的JavaBean就是拥有GUI图形用户界面的,对最终用户是可见的。不可视化的JavaBean不要求继承,它更多的被使用在JSP中,通常情况下用来封装业务逻辑、数据分页逻辑、数据库操作和事物逻辑等,这样可以实现业务逻辑和前台程序的分离,提高了代码的可读性和易维护性,使系统更健壮和灵活。随着JSP的发展,JavaBean更多的应用在非可视化领域,并且在服务器端应用方面表现出了越来越强的生命力。
一般情况下,javabean有哪些具体的规范?
1. 必须要有一个公共无参构造(写了带参构造必须添加一个,都不写则有默认)
2. Javabean类不应有公共属性,属性都应该是 private
3. 为私有(private声明)属性提供符合命名规范的get/set方法
4. 应该要实现serializeable 接口
5. javaBean类必须是一个公共类,将其访问属性设置为public
例如:
public class Article {
private int id;
private String title;
private String author;
public Article(){}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
在JSP中使用JavaBean
JSP技术提供了三个关于JavaBean组件的动作元素,即JSP标签,它们分别为:
<jsp:useBean>标签:用于在JSP页面中查找或实例化一个JavaBean组件。
<jsp:useBean id="article" class="bean.Article"></jsp:useBean>
<%--id的值要和bean名相同,class的值是bean所在的包--%>
<jsp:setProperty>标签:用于在JSP页面中设置一个JavaBean组件的属性。
<jsp:setProperty property="id" name="article" value="25" />
<jsp:setProperty property="title" name="article" value="信JAVA,高工资,走上人生癫疯" />
<jsp:setProperty property="author" name="article" value="郑十一" />
<%--property="属性值" name="JavaBean实例名" value="赋予值"--%>
<jsp:getProperty>标签:用于在JSP页面中获取一个JavaBean组件的属性。
编号:<jsp:getProperty property="id" name="article" /><br />
书名:<jsp:getProperty property="title" name="article" /><br />
作者:<jsp:getProperty property="author" name="article" /><br />
<%--property="属性值" name="JavaBean实例名"--%>
JavaBean就是一个Java类且满足以下2点 :
- public 修饰的类 ,public 无参构造
- 所有属性(如果有) 都是private,并且提供set/get