javaBean
- 格式:doc
- 大小:38.50 KB
- 文档页数:4
JavaBean中包含四种类型的属性,它们分别是简单属性(simple property)、索引属性(indexed property)、绑定属性(bound property)和约束属性(constrained property),首先对前两种属性进行介绍。
1、简单属性简单属性是非数组类型的属性,它的修改器必须接受一个参数,参数类型由属性的特性决定,可以是任意类型。
而简单属性的访问器仅仅是用于返回属性的值,它不接受任何参数,但它要返回一个值,返回值的类型必须与修改器所接收的参数类型一致。
public class Book {private double price;publicString getPrice() {return price;}public voidsetPrice(double price) {this.price= price;}}2、索引属性索引属性是数组类型的属性,JavaBean中需要对索引索性提供两对setter和getter方法,一对用于设置和获取数组本身,另一对用于设置和获取数组中的元素。
接下来就通过一个JavaBean来演示索引属性的定义,代码如例程所示。
class Person {// 索引属性hobbiesprivateString[] hobbies;// 设置和获取属性本身publicString[] getHobbies() {returnhobbies;}publicvoid setHobbies(String[] hobbies) {this.hobbies= hobbies;}// 设置和获取属性中的元素publicString getHobbies(int i) {returnhobbies;}publicvoid setHobbies(int i, String hobby) {hobbies= hobby;}}在例程所示的JavaBean中,定义了一个索引属性hobbies,为了使外界能够方便的操作该属性,提供了一对重载的setHobbies()方法和一对重载的getHobbies()方法,其中setHobbies(String hobbies)方法用于设置数组属性hobboes本身,而setHobbies(int i,String hobby)方法用于设置数组属性中的元素。
如何简单理解Javabean?
⼀、Bean的基本概念
1、Java⾯向对象,对象有⽅法和属性,那么就需要对象实例来调⽤⽅法和属性(即实例化);
2、凡是有⽅法或属性的类都需要实例化,这样才能具象化去使⽤这些⽅法和属性;
3、规律:凡是⼦类及带有⽅法或属性的类都要加上注册Bean到Spring IoC的注解;
4、把Bean理解为类的代理或代⾔⼈(实际上确实是通过反射、代理来实现的),这样它就能代表类拥有该拥有的东西了
⼆、JavaBean ⾄少满⾜的条件
1. 有⼀个public默认构造器(例如⽆参构造器,)
2. 属性使⽤public 的get,set⽅法访问,也就是说设置成private,同时get,set⽅法与属性名的⼤⼩也需要对应。
例如属性name,get⽅
法就要写成,public String getName(){},N⼤写。
3. 需要序列化。
这个是框架,⼯具跨平台反映状态必须的
三、Bean的特点
1、所有属性为private
2、提供默认构造⽅法
3、提供getter和setter
4、实现serializable接⼝。
JavaBean简单介绍及其应⽤Bean的中⽂含义是“⾖⼦”,顾名思义JavaBean是⼀段Java⼩程序。
JavaBean实际上是指⼀种特殊的Java类。
它通经常使⽤来实现⼀些⽐較经常使⽤的简单功能。
并能够⾮常easy的被重⽤或者是插⼊其它应⽤程序中去。
全部遵循⼀定编程原则的Java类都能够被称作JavaBean。
⼀. Java Bean技术概述Java Bean是基于Java的组件模型,由属性、⽅法和事件3部分组成。
在该模型中,JavaBean能够被改动或与其它组件结合以⽣成新组件或完整的程序。
它是⼀种Java类,通过封装成为具有某种功能或者处理某个业务的对象。
因此。
也能够通过嵌在JSP页⾯内的Java代码訪问Bean及其属性。
Bean的含义是可反复使⽤的Java组件。
所谓组件就是⼀个由能够⾃⾏进⾏内部管理的⼀个或⼏个类所组成、外界不了解其内部信息和执⾏⽅式的群体。
使⽤它的对象仅仅能通过接⼝来操作。
⼆. Java Bean编写规范Java Bean实际上是依据JavaBean技术标准所指定Bean的命名和设计规范编写的Java类。
这些类遵循⼀个接⼝格式。
以便于使函数命名、底层⾏为以及继承或实现的⾏为,其最⼤的长处在于可以实现代码的可重⽤性。
Bean并不须要继承特别的基类(BaseClass)或实现特定的接⼝(Interface)。
Bean的编写规范使Bean的容器(Container)可以分析⼀个Java类⽂件。
并将其⽅法(Methods)翻译成属性(Properties),即把Java类作为⼀个Bean类使⽤。
Bean的编写规范包含Bean类的构造⽅法、定义属性和訪问⽅法编写规则。
2.1. Bean组件的⼯作机制在JavaBeansVersion1.01 A规范中定义了该组件的5种重要机制:(1)内省(Introspection):组建能够发表其⽀持的操作和属性。
同⼀时候也⽀持在其它组件中发现反复利⽤的对象库,如⽤户权限控制和电⼦邮件⾃⼰主动回复等。
简述javabean规范都有哪些?篇一:JavaBean规范POJO = Plain Ordinary Java Object,是MartinFowler等发明的一个术语,用来表示普通的Java对象,不是JavaBean, EntityBean 或者SessionBean。
POJO不担当任何特殊的角色,也不实现任何特殊的Java框架的接口如,EJB,JDBC 等等。
即POJO是一个简单的普通的Java对象,它不包含业务逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。
下面是摘自Martin Fowler个人网站的一句话:We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it's caught on very nicely.-- 我们疑惑为什么人们不喜欢在他们的系统中使用普通的对象,我们得到的结论是——普通的对象缺少一个响亮的名字,因此我们给它们起了一个,并且取得了很好的效果。
——Martin FowlerJavaBean规范(1)JavaBean 类必须是一个公共类,并将其访问属性设置为public ,如:public class user{......}(2)JavaBean 类必须有一个空的构造函数:类中必须有一个不带参数的公用构造器(3)一个javaBean类不应有公共实例变量,类变量都为private ,如:private int id;(4)属性应该通过一组存取方法(getXxx 和setXxx)来访问,一般是IDE(Eclipse、JBuilder) 为属性生成getter/setter 方法一般JavaBean属性以小写字母开头,驼峰命名格式,相应的getter/setter 方法是get/set 接上首字母大写的属性名。
JSP+JavaBean1、JavaBean类1、显示学生信息内容JavaBeanpackage com.DataBase;import java.sql.*;public class MyDbBean{private Statement stmt = null;ResultSet rs = null;private Connection conn = null;private String dsn;//构造函数public MyDbBean() { }//根据dsn参数,加载驱动程序,建立连接public void getConn(String dbname, String uid, String pwd) throws Exceptiontry{dsn = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=" +dbname;Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();conn = DriverManager.getConnection(dsn, uid, pwd);}catch (Exception ex){System.err.println("aq.executeQuery: " + ex.getMessage());}}//执行查询类的SQL语句,有返回集public ResultSet executeQuery1(String sql){rs = null;try{stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONL Y);rs = stmt.executeQuery(sql);}catch(SQLException ex){System.err.println("aq.executeQuery:"+ex.getMessage());}return rs;}//执行更新类的SQL语句,无返回集public void executeUpdate2(String sql){stmt = null;rs=null;try{stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONL Y);stmt.executeQuery(sql);stmt.close();conn.close();}catch(SQLException ex){System.err.println("aq.executeQuery: " + ex.getMessage());}}//关闭对象public void closeStmt()try{ stmt.close(); }catch(SQLException ex){System.err.println("aq.executeQuery: " + ex.getMessage());}}public void closeConn(){try{ conn.close(); }catch(SQLException ex){System.err.println("aq.executeQuery: " + ex.getMessage());}}}“list.jsp”<%@page contentType="text/html" pageEncoding="UTF-8"%><%@page import="java.sql.*" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><jsp:useBean id="testbean" scope="session" class="com.DataBase.MyDbBean" /><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>学籍管理系统</title></head><%! String url,sql; %><%! int i;%><body bgcolor="#ffffff"><div align="center"><font color="#000000" size="5">学籍管理系统</font> </div> <table width="75%" border="1" cellspacing="1" cellpadding="1" align="center"><tr><td width=16% align=center>学号</td><td width=16% align=center>姓名</td><td width=8% align=center>性别</td><td width=8% align=center>年龄</td><td width=16% align=center>籍贯</td><td width=12% align=center>更改</td><td width=12% align=center>删除</td></tr><%//调用getConn方法与数据库建立连接testbean.getConn("Data_Stu", "sa","");sql="select * from stuInfo";ResultSet rs=testbean.executeQuery1(sql);//查询数据库while(rs.next()){%><tr><td width=16% align=center><%=rs.getString(1)%></td><td width=16% align=center><%=rs.getString(2)%></td><td width=8% align=center><%=rs.getString(3)%></td><td width=8% align=center><%=rs.getInt(4)%></td><td width=16% align=center><%=rs.getString(5)%></td><td width=12% align=center><%=rs.getString(6)%></td><td width=12% align=center><a href="change.jsp?xuehao=<%=rs.getString(1)%>">修改</a></td> <td width=12% align=center><a href="del.jsp?xuehao=<%=rs.getString(1)%>">删除</a></td></tr><%}rs.close();testbean.closeStmt();testbean.closeConn();%></table><div align="center"><a href="insert.jsp">添加新记录</a> </div></body></html>2、添加记录“insert.jsp”<%@page contentType="text/html" pageEncoding="UTF-8"%><%@page import="java.sql.*,java.util.*;" errorPage=""%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>添加记录</title></head><body bgcolor="#FFFFFF" text="#000000"><div align="center"><font color="#000000" size="5">添加新记录</font></div><form name="form1" method="post" action="query.jsp"><table width="35%" border="1" cellspacing="1" cellpadding="1" align="center"> <tr><td width="46%" align="center">学号</td><td width="54%"> <input type="text" name="xuehao" size="7"></td></tr><tr><td width="46%" align="center">姓名</td><td width="54%"> <input type="text" name="name" size="8"></td></tr><tr><td width="46%" align="center">性别</td><td width="54%"> <select name="sex" size="1"><option value="男" selected> 男</option><option value="女">女</option></select></td></tr><tr><td width="46%" align="center">年龄</td><td width="54%"> <input type="text" name="age" size="2"></td></tr><tr><td width="46%" align="center">籍贯</td><td width="54%"> <input type="text" name="jiguan" size="8"></td></tr><tr><td width="46%" align="center">院系</td><td width="54%"> <input type="text" name="department" size="8"></tr><tr align="center"><td colspan="2" align="center"><input type="submit" name="Submit" value="提交"> <input type="reset" name="reset" value="清空"></td></tr></table></form></body></html>“query.jsp”<%@page contentType="text/html" pageEncoding="UTF-8"%><%@page import="java.sql.*,java.util.*" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><jsp:useBean id="query" scope="session" class="com.DataBase.MyDbBean"/> <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>插入数据</title></head><body><%! String xuehao,name,sex,age,jiguan,department,url,sql; %><%! int i;%><%xuehao=request.getParameter("xuehao").trim();name=request.getParameter("name").trim();name=new String(name.getBytes("ISO-8859-1"),"UTF-8");//编码转换sex=request.getParameter("sex").trim();sex=new String(sex.getBytes("ISO-8859-1"),"UTF-8");age=request.getParameter("age").trim();i=Integer.parseInt(age);jiguan=request.getParameter("jiguan").trim();jiguan=new String(jiguan.getBytes("ISO-8859-1"),"UTF-8");department=request.getParameter("department").trim();department=new String(department.getBytes("ISO-8859-1"),"UTF-8");if(xuehao.length()!=7){//检查学号的位数response.sendRedirect("err.jsp");}response.sendRedirect("err.jsp");}//调用getConn()方法与数据库建立连接query.getConn("Data_Stu","sa","");sql="select * from stuInfo where 学号='"+xuehao+"'";ResultSet rs=query.executeQuery1(sql);if(rs.getRow()>0){ response.sendRedirect("err.jsp"); }sql="insert into stuInfo(学号,姓名,性别,年龄,籍贯,院系)";sql=sql+"values('"+xuehao+"','"+name+"','"+sex+"','"+i+"','"+jiguan+"','"+department+"')";query.executeUpdate2(sql);out.println("<font size=3 color=blue>正在处理信息,请稍后......</font><meta http-equiv='refresh' content='2;url=list.jsp'>");rs.close();query.closeStmt();query.closeConn();%></body></html>3、更改记录“change.jsp”<%@page contentType="text/html" pageEncoding="UTF-8"%><%@ page import="java.sql.*,java.util.*;" errorPage=""%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><jsp:useBean id="modify" scope="session" class="com.DataBase.MyDbBean"/><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>修改记录</title></head><body bgcolor="#FFFFFF" text="#000000"><div align="center"><font color="#000000" size="5">修改记录</font> </div><%! String xuehao,url,sql,sex; %><%xuehao=request.getParameter("xuehao").trim();//调用getConn()方法与数据库建立连接modify.getConn("Data_Stu","sa","");sql="select * from stuInfo where 学号='"+xuehao+"'";ResultSet rs=modify.executeQuery1(sql);while(rs.next()){%><form name="form1" method="post" action="change_query.jsp?xuehao=<%=xuehao%>"><table width="35%" border="1" cellspacing="1" cellpadding="1" align="center"><tr><td width="46%" align="center">学号</td><td width="54%"> <%=rs.getString(1)%></td></tr><tr><td width="46%" align="center">姓名</td><td width="54%"> <input type="text" name="name" size="8" value=<%=rs.getString(2)%>></td></tr><tr><td width="46%" align="center">性别</td><td width="54%"> <%sex=rs.getString(3).trim();if(sex.equals("男")){%><option value="男" selected>男</option><option value="女">女</option></select><% }else{%><select name="sex" size="1"><option value="男" >男</option><option value="女"selected>女</option></select><% } %></td></tr><tr><td width="46%" align="center">年龄</td><td width="54%"> <input type="text" name="age" size="2" value=<%=rs.getInt(4)%>></td></tr><tr><td width="46%" align="center">籍贯</td><td width="54%"> <input type="text" name="jiguan" size="8" value=<%=rs.getString(5)%>></td></tr><tr><td width="46%" align="center">院系</td><td width="54%"> <input type="text" name="department" size="8" value=<%=rs.getString(6)%>></td></tr><tr align="center"><td colspan="2" align="center"><input type="submit" name="Submit" value="提交"> <input type="reset" name="reset" value="清空"></td></tr></table></form><%}rs.close();modify.closeStmt();modify.closeConn();%></body></html>“change_query.jsp”<%--Document : change_queryCreated on : 2010-5-8, 17:32:29Author : Administrator--%><%@page contentType="text/html" pageEncoding="UTF-8"%><%@page import="java.sql.*,java.util.*" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><jsp:useBean id="modify" scope="session" class="com.DataBase.MyDbBean"/><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>修改记录</title></head><body><%! String xuehao,name,sex,age,jiguan,department,url,sql; %><%! int i;%><%xuehao=request.getParameter("xuehao").trim();out.print(xuehao);name=request.getParameter("name").trim();name=new String(name.getBytes("ISO-8859-1"),"UTF-8");sex=request.getParameter("sex").trim();sex=new String(sex.getBytes("ISO-8859-1"),"UTF-8");age=request.getParameter("age").trim();i=Integer.parseInt(age);jiguan=request.getParameter("jiguan").trim();jiguan=new String(jiguan.getBytes("ISO-8859-1"),"UTF-8");department=request.getParameter("department").trim();department=new String(department.getBytes("ISO-8859-1"),"UTF-8");if(name.equals("")){response.sendRedirect("err1.jsp");}try{//调用getConn()方法与数据库建立连接modify.getConn("Data_Stu","sa","");sql="update stuInfo set 姓名= '"+name+"',性别= '"+sex+"',年龄="+i+",籍贯= '"+jiguan+"',院系=modify.executeUpdate2(sql);out.println("<font size=3 color=blue>正在修改记录,请稍后......</font><meta http-equiv='refresh' content='2;url=list.jsp'>");modify.closeStmt();modify.closeConn();}catch(Exception e){response.sendRedirect("err.jsp");}%></body></html>4、删除记录“del.jsp”<%@page contentType="text/html" pageEncoding="UTF-8"%><%@page import="java.sql.*,java.util.*" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><jsp:useBean id="del" scope="session" class="com.DataBase.MyDbBean"/><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>删除记录</title></head><body><%! String xuehao,url,sql; %><%xuehao=request.getParameter("xuehao").trim();try{//调用getConn()方法与数据库建立连接del.getConn("Data_Stu","sa","");sql="delete from stuInfo where 学号='"+xuehao+"'";del.executeUpdate2(sql);out.println("<font size=3 color=blue>正在删除数据,请稍后......</font>" +"<meta http-equiv='refresh' content='2;url=list.jsp'>");del.closeStmt();del.closeConn();}catch(Exception e){response.sendRedirect("err.jsp");}%></body></html>JSP+ Servlet 访问数据库<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>无标题文档</title></head><body><form name="form1" method="post" action="servlet"><p>客户查询</p><p>请输入用户名:<input type="text" name="USERNAME"><input type="submit" name="Submit" value="提交"></p><p> </p></form><form name="form2" method="get" action="servlet"><p>根据总数查询</p><p>总数范围在<input type="text" name="totalmin">和<input type="text" name="totalmax">之间</p><p><input type="submit" name="Submit2" value="提交"></p></form><p> </p></body></html>package tree;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;import java.util.*;import java.sql.*;public class queryextends HttpServlet {private static final String CONTENT_TYPE = "text/html; charset=GB2312";//Initialize global variablespublic void init() throws ServletException {super.init();}//执行HTTP Post请求public void doPost(HttpServletRequest request,HttpServletResponse response) throwsServletException,IOException{PrintWriter out=response.getWriter();response.setContentType(CONTENT_TYPE);//设置响应的MIME类型。
JavaBean详解JavaBean的概念:Javabean是一个可重复使用的软件组件,实际上是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称beanJavaBean本质上是Java类,按照编写类的方法编写, 需要注意一下四点:①如果类的成员变量为XXX,那么获取和更改属性的方法必须为getXxx和setXxx.②对于boolean类型的成员变量,还可以使用isXxx获得这个属性.③类中声明的方法访问属性都必须是public的④类中声明的构造方法必须是public, 无参数的保存bean的字节码:Tomcat服务器使用字节码文件创建bean,字节码文件必须保存在特定的目录中.(Web服务器子目录\WEB-INF\classes中), Classes中还必须有与包对应的子目录结构. 比如包名为com.donaljdohn, 那么在Classes下应该建立子目录结构com\donaljdohn创建与使用bean:<jsp:useBean id="给bean起得名字" class="创建bean的类" scope="bean有效范围" type=“class_or_interface_name”></jsp:useBean>或<jsp:useBean id="给bean起的名字" class="创建bean的类" scope="bean有效范围"/>●在JSP页面中, 必须有相应的import指令●<%@ page import="com.donaldjohn.*"%>●创建bean的类中必须要带有包名.id=“"在所定义的范围中确认Bean的变量,在定义某个JavaBean时,需要指定它的ID,通过此ID对JavaBean的实例对象进行引用。
javaBean实验报告一、实验目的1、深入理解 JavaBean 的概念和作用。
2、掌握如何创建、使用和配置 JavaBean。
3、学会在 Java Web 应用中运用 JavaBean 来提高代码的可维护性和可复用性。
二、实验环境1、操作系统:Windows 102、开发工具:Eclipse IDE for Java EE Developers3、服务器:Apache Tomcat 904、 JDK 版本:JDK 18三、实验原理JavaBean 是一种遵循特定规范的 Java 类,它具有私有属性、公共的 getter 和 setter 方法,以及一个无参的构造函数。
通过这些规范,可以方便地对属性进行访问和修改,同时也有利于代码的封装和复用。
四、实验内容(一)创建 JavaBean创建一个名为`Student` 的 JavaBean 类,包含学生的学号(`id`)、姓名(`name`)和年龄(`age`)三个属性。
代码如下:```javapublic class Student {private int id;private String name;private int age;public Student(){}public int getId(){return id;}public void setId(int id) {thisid = id;}public String getName(){return name;}public void setName(String name) {thisname = name;}public int getAge(){return age;}public void setAge(int age) {thisage = age;}}```(二)在 JSP 页面中使用 JavaBean创建一个名为`useStudentjsp` 的 JSP 页面,通过`<jsp:useBean>`标签实例化`Student` 对象,并通过`<jsp:getProperty>`和`<jsp:setProperty>`标签来获取和设置属性值。
JAVA中究竟什么是bean,它的实质是什么?2007-05-19 00:40JAVA中究竟什么是bean,它的实质是什么?JavaBean是描述Java的软件组件模型,有点类似于Microsoft的COM组件概念。
在Java模型中,通过JavaBean可以无限扩充Java程序的功能,通过JavaBean 的组合可以快速的生成新的应用程序。
对于程序员来说,最好的一点就是JavaBean可以实现代码的重复利用,另外对于程序的易维护性等等也有很重大的意义。
比如说一个购物车程序,要实现购物车中添加一件商品这样的功能,就可以写一个购物车操作的JavaBean,建立一个public的AddItem成员方法,前台Jsp 文件里面直接调用这个方法来实现。
如果后来又考虑添加商品的时候需要判断库存是否有货物,没有货物不得购买,在这个时候我们就可以直接修改JavaBean 的AddItem方法,加入处理语句来实现,这样就完全不用修改前台jsp程序了。
一个简单的JavaBeanFirstJavaBean.javaimport java.io.*;public class FirstJavaBean {private String FirstProperty = new String("");public FirstJavaBean() {}public String getFirstProperty() {return FirstProperty;}public void setFirstProperty(String value) {FirstProperty = value;}public static void main(String[] args){System.out.println("My First JavaBean!");}}如果运行这个程序,就会出现下面的结果:First JavaBean!这是一个很典型的JavaBean的代表,简单地解释一下,FirstProperty是其中的一个属性(Property),外部通过get/set方法可以对这个属性进行操作,如果您写过VB的class的话,对这个就再也熟悉不过了。
简述javabean的定义规则JavaBean是一种Java语言编写的可重用组件,它是一种特殊的类,遵循一定的命名规则和属性规则。
JavaBean可以被用于各种应用场景,例如Web开发、桌面应用程序等。
定义规则:1. 类名必须是一个合法的Java标识符,并且首字母必须大写。
2. 必须提供一个无参构造方法,如果没有显式地声明,则默认提供一个public的无参构造方法。
3. 所有属性必须使用private修饰,并且提供对应的setter和getter方法。
4. 对于布尔类型的属性,getter方法名称必须以is开头。
5. 属性名称必须是一个合法的Java标识符,并且首字母小写。
6. setter和getter方法名称必须遵循JavaBean命名规范,即set或get后面跟随属性名称,属性名称首字母大写。
7. 可以提供其他方法来实现类的功能,但不应该暴露在外部使用。
示例代码:public class User {private String name;private int age;private boolean isMale;public User() {}public String getName() {return name;}public void setName(String name) { = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public boolean isMale() {return isMale;}public void setMale(boolean isMale) {this.isMale = isMale;}}简述javabean的优点和缺点优点:1. JavaBean可以被轻松地重用,因为它们是标准的Java类。
2. JavaBean具有良好的可读性和可维护性,因为它们使用了标准的命名规则和属性规则。
javaBean
目录[隐藏]
JavaBean(Java豆)
JavaBean设计注意事项
JavaBean 的范围
[编辑本段]
JavaBean(Java豆)
JavaBean 概述
JavaBean 是一种JAVA语言写成的可重用组件。
为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。
JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。
众所周知,属性名称符合这种模式,其他Jav a 类可以通过自身机制发现和操作这些JavaBean 属性。
用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用jav a代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。
用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。
JavaBean 的发展
最初,JavaBean的目的是为了将可以重复使用的软件代码打包标准。
特别是用与帮助厂家开发在综合开发环境(IDE)下使用的java软件部件。
这些包括如Grid
控件,用户可以将该部件拖放到开发环境中。
从此,JavaBean就可以扩展为一个ja va web 应用的标准部件,并且JavaBean部件框架已经扩展为企业版的Bean(EJ B)
JavaBean需求
JavaBean是java类,属于某些特定的译码指导方针,并且扩展了适应性和范围,允许用户访问内部的属性和方法。
通过这些,JavaBean类可以用于下列方法:1.在IDE中,JavaBean的功能允许应用开发者浏览其中的方法,即使JavaB ean是被编译的,并且无法利用原始的源文件。
2.在Remote Method Invocation(RMI) 的分布式风格中,这项功能听起来并不让人兴奋,但是在未来的包含企业版的JavaBean后,将改变这种情况。
3.为了JavaBean的属性值和状态可以保存到磁盘上。
这里说的有些简单,如果想了解更多的东西,可以查阅一些资料。
[编辑本段]
JavaBean设计注意事项
实际应用中,在表现对象或者处理前扩展JavaBean的设计非常有用。
通常认为如果提供信息,web开发者将在功能上满足用户对JavaBean的需求。
例如:HTML中显示敏感的数据时,用户可以屏蔽的条目,如密码、电话号码等。
良好规划设计的JavaBean是值得信赖的。
Java 中的null 不同于SQL 中的null
看这样一道测试程序:
public class NullTest
{
public static void main(String[] args)
{
int I = 0;
// int I = null;// not a valid initialization
String str = null;
String strZeroOutValue = “”;
StringBuffer sb = new StringBuffer(“Null test: String initialized as null = “);
sb.append(str);
sb.append(“\n String representing a Zero Out Value:”);
sb.append(strZeroOutValue);
System.out.println(sb.toString());
}
}
这个程序将产生下面的结果:
Null test: String initialized as null = null
String representing a Zero Out Value:
在JavaBean中,我们将I 变量声明为一个int,我们必须处理与该变量相关的值,因为I 默认的没有值,int 类型无法初始化为null,如果int 值没有进行明确的初始化,编译器将提示错误。
执行NullTest 程序,将验证在文本中空字符串是空值的替代,用于显示SQL 的插入和更新。
如果我们需要删除一些信息,通过删除表单区域的文本,需要将数据库发送长度为0的字符串。
尽管大多数数据库将空字符串作为空值进行操作,如果我们使用的数据库不支持处理空字符串的话,我们必须写入附加的java代码,来创建自己的SQL插入声明。
例如:
if(test.length==0)
{
sb.append(“null”);
}
else
{
sb.append(test);
}
[编辑本段]
JavaBean 的范围
JavaBean 的范围。
Scope 是一个具有生命时间的变量。
JavaBean的范围在<jsp:useBean scope=”….>标志中右边进行表示。
将产生一个JavaBean的快捷参考。
说明:jsp服务器引擎将剥离<jsp。
标记。
并且在最终用户的浏览器上无法显示实际代码。
存在下面四种范围:页面、请求、对话、应用。
对话范围:
对话范围的JavaBean 主要应用与跨多个页面和时间段:例如填充用户信息。
添加信息并且接受回馈,保存用户最近执行页面的轨迹。
对话范围JavaBean保留一些和用户对话ID 相关的信息。
这些信息来自临时的对话cookie,并在当用户关闭浏览器时,这个cookie将从客户端和服务器删除。
页面/请求范围:
页面和请求范围的JavaBean有时类似表单的bean ,这是因为他们大都用与处理表单。
表单需要很长的时间来处理用户的输入,通常情况下用于页面接受HT TP/POST或者GET请求。
另外页面和请求范围的bean可以用于减少大型站点服务器上的负载,如果使用对话bean,耽搁的处理就可能会消耗掉很多资源。
应用:
应用范围通常应用于服务器的部件,例如JDBC 连接池、应用监视、用户计数和其他参与用户行为的类。
在Bean中限制HTML的产生:
理论上,JavaBean 将不会产生任何HTML,因为这是jsp层负责的工作;然而,为了动态消息提供一些预先准备的格式是非常有用的。
产生的HTML将被标注的Ja vaBean方法返回。
这里有一些非常重要的事情:
1. 不要试图在JavaBean返回的HTML中放置任何字体尺寸。
并不是所有的浏览器都相同。
很多浏览器无法处理完整的字体尺寸。
2. 不要试图在JavaBean返回的HTML中放置任何脚本或者DHTML。
向页面直接输出脚本或者DHTML相当于自我毁灭,因为某些浏览器版本在处理不正确的脚本时会崩溃(非常少但是有)。
如果用户的JavaBean在运行时是动态的推出复杂的HTML语言,用户将陷入调试的噩梦。
另外,复杂的HTML将限制Java Bean的寿命和灵活性。
3. 不要提供任何的选择。
如果用户使用不同的系统浏览页面,可以提供一种可以替换的方法。
按着Sun公司的定义,JavaBean是一个可重复使用的软件组件。
实际上JavaB ean是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称bean。
由于javabean是基于java语言的,因此javabean不依赖平台,具有以下特点:
1.可以实现代码的重复利用
2.易编写、易维护、易使用
3.可以在任何安装了Java运行环境的平台上的使用,而不需要重新编译。
编写javabean就是编写一个java的类,所以你只要会写类就能编写一个bean,这个类创建的一个对象称做一个bean。
为了能让使用这个bean的应用程序构建工具(比如JSP引擎)知道这个bean的属性和方法,只需在类的方法命名上遵守以下规则:
1.如果类的成员变量的名字是xxx,那么为了更改或获取成员变量的值,即更改或获取属性,在类中可以使用两个方法:
getXxx(),用来获取属性xxx。
setXxx(),用来修改属性xxx.。
2.对于boolean类型的成员变量,即布尔逻辑类型的属性,允许使用"is"代替上面的"get"和"set"。
3.类中方法的访问属性都必须是public的。
4.类中如果有构造方法,那么这个构造方法也是public的并且是无参数的。