Javabean的总结

一、 javabean 是什么?

Javabean 就是一个类,这个类就定义一系列 get<Name> 和 set<Name> 方法。 So simple !

Javabean 就是为了和 jsp 页面传数据化简交互过程而产生的。

自己的理解:

使用 javabean 和不用 javabean 的区别:

一个 javabean 就是为 jsp 页面上的元素一一开辟一个空间,然后根据需要赋值、读值。而如果不用 javabean ,就直接使用 HttpServlet 的 request 对象:

只在 jsp 页面间传递获取数据:

String name=req.getParameter(“name”);

显示数据: out.println(name);

存数据入 DB :在 jsp 中直接嵌入 java 代码,用 insert 语句存入。

 

感觉就像当年自己毕设做的 asp 代码一样。 .asp 页面中一系列的 req.getParameter 代码和嵌入一大堆的 sql 语句,代码很乱,很难维护。

而使用 javabean 之后,优势也就是 java 的优势:组件技术,代码重用,易于维护。(在 jsp 页面中数据的显示很清晰。)

 

具体 javabean 是什么?有待查资料

解决:

1 http://www.itlearner.com/article/2004/551.shtml

软件组件就是指可以进行独立分离、易于重复使用的软件部分。 JavaBean 就是一种基于 Java 平台的软件组件思想。

2 ) http://www.chinaitpower.com/A200507/2005-07-27/170233.html

JavaBean到底是个什么东西

1.      JavaBean与EJB
(1)JavaBean与EJB规范在以下方面有共同的目标:通过标准的设计模式推广Java程序代码,提升开发过程和开发工具之间的重复运用性可携性.但是这两种规格的原始问题却是为了解决不同的问题.
定义于JavaBean组件模型中的标准规范,被设计来产生可重复运用的组件,而这些组件通常被用于IDE开发工具,而且通常是可视化组件,当然并不一定是可视化组件.
(2)EJB规范所定义的组件模弄,刚是用来开发服务端的Java程序,由于EJB可能执行在不同的服务器平台上,包括无图形的大型主机上,所以EJB无法使用类似AWT或SWING之类的图形化程序库.

2.      JavaBean与类库的区别:
(1)并不是所有有用的模块都必须转化成Bean.Bean主要是能被用来可视化操作去完成一些效果.
(2)类库是一个提供函数操作给编程者的一个有效操作,但是并不能从可视化操作中来获益.
(3)举个例子来说:提供JDBC数据库访问的API作为一个类库比作为一个bean要好,因为JDBC的核心是用一个可编程的API,并不是能够直接展现于可视化操作.然而,写一个数库库访问Bean在JDBC的顶层还是有意义的.例如,你可以写一个能定制的"Select"bean以助于用户去组成一个查询语句,并且程序运行时用JDBC去运行这个查询语句,并显示结果集.

3.      在可视化编程中,可以看出,组件是一段程序代码,通过被存为class内,关键在程序开发工具如何发现组件的属性和事件.VB和Delphi都是通过某种机制来实现这点的,而Java则通过JavaBeans将可视化组件开发带进了一个更高的境界,因为一个Bean就是一个Class.针对以上的内容,JavaBean有如下的规则

(1)针对一个名为xxx的属性,你通常要写两个函数,getXxx()和setXxx().
(2)你可以用get/set方式来处理boolean,可以用is来代替get.
(3)Bean的一般函数不需要遵守上述的命名规则,但是需要为public.
(4)对于事件,你可以使用Swing的监听器作法来处理.

4.      JavaBean的体系结构
JavaBean体系结构是第一个全面的基于组件的标准模型之一.在集成的IDE中使JavaBean在设计时可以操作.组件模型见如下图:

结合所查资料得到自己的体会和总结:

(以后有问题都google和baidu,唉这个问题去年上J2EE课的时候,问了很多同学,包括苏老师,他们都没有很好的回答出来。)

1.     javabean是一种软件组件,所谓组件也就是一个java类而已。就像一个机械零件一样,可以重复的用它来组装形成产品。但是并不是每个java类都是javabean组件。软件组件是有一定的概念和体系结构的。自己的理解是,javabean组件是定义了需要get和set方法等规则的组件,通过定义这些规则,可以实现发现组件属性和事件的机制。

2.      软件组件的作用:只需编写一回,各处都可执行。

对于程序员来说,最好的一点就是 JavaBean 可以实现代码的重复利用,另外对于程序的易维护性等等也有很重大的意义。

3.        javabean 的特点:

1. 执行 java.io.Serializable 接口
2. 提供无参数的构造器
3. 提供 get set 方法访问它的属性 .

 

二、 javabean 的两种使用方式:(嵌入 java 代码方式和使用 jsp 标记符方式)【也就是当作普通的类来使用者在 jsp 页面处理时有特殊的标记符处理方式】

以下是使用 javabean 的每个功能的两者不同方式比较:(用了 javabean 只是方便一点,并且可以实现组件重用而已。)

a ) jsp 中使用 javabean 的类的两种方法:(这两行代码的作用是一样的)

法一: jsp 中使用 <jsp:useBean> 标记符访问 javabean :

<jsp:useBean id="test" class="test.TestBean" />

 

法二: jsp 中嵌入 java 代码方式访问 javabean :

首行导入 javabean :

<%@ page import="com.javaBean.TestBean" %>

下边就可以像在 java 语言中那样用了:

<% TestBean testBean=new TestBean(); %>

 

b)jsp 页面之间传递和获取数据的两种方法:

l         获取数据:

法一:使用属性标记符:

<jsp:getProperty name="test" property="message" />

法二:直接嵌入 java 代码:(更简单)

<%=testBean.getName()%>

l         存数据:

法一:使用属性标记符:

设置单个元素值:

<jsp:setProperty name="test" property="name" value="jcm"  />

设置 jsp 页面中所有元素的值:

<jsp:setProperty name="test" property="*" />

注:这个方法特别方便,只需要在接收数据并负责显示的 jsp 页面使用 <jsp:useBean> 之后加上这一行代码,所有数据就自动赋值了。然后在接下来的 jsp 代码中就可以使用 get 方法显示出数据了。

法二:直接嵌入 java 代码:

<%

String name=req.getParameter(“name”);

testBean.setName(name)

String pwd=req.getParameter(“password”);

testBean.setName(pwd)

 

%>

注:

通常 javabean 函数中除了 get 和 set 方法外,还有一个把数据存入 DB 中的方法(也就是和 DB 连接并实现 insert 语句)。

 

 

问题:

1.       一个 javabean 当作一个普通的类来使用,( import 类,通过 new 方法构造一个对象,然后通过对象调用方法),和通过 jsp 标记符 <jsp:useBean> 来使用有区别吗?它和普通的类有什么区别呢? javabean 也可以通过普通类的使用方式来访问呀。上面总结的内容就是这样的呀。

2.       是不是只有通过标记符 <jsp:useBean> 来使用才能真正体检 javabean 组件的优势:自动赋值?如果不使用标记符 <jsp:useBean> 可以实现自动赋值吗?

有待实验解决。

解决:(终于明白过来了!)

参考资料:

http://www.faq-it.org/archives/jsp/52ae59e6bc6d13af9ee621213347274a.php

关于 javaBean 原理性的两个问题

作者 :bdsc


初次接触 javaBean ,遇到了两个原理性的问题,没有找到确定的资料得到答案,希望在这儿能得到大家的帮助。
 1 、 javaBean 的 class 与普通 java 的 class 有什么区别? javaBean 的类代码有没有明确的规定,比如一定要继承什么类?如没有那怎么说一个 java 的 class 是 javaBean ,或不是呢?
2 、 javaBean 是在客户端执行还是在服务器执行呢?
2.1 如果在客户端执行,那是不是在客户端一定要有 jvm ,并且要下载对应的
javaBean 的 class 文件?但我怎么没有在自己的系统盘中找不到相应 javaBean 的
class 文件呢?那 applet 也是在客户端运行,为什么要出现 javaBean 呢?
2.2 如果在服务器执行,那 javaBean 是在客户端生成用户界面而产生的,那服
务器端执行的代码怎么在客户端生成用户界面呢?
---------------------------------------------------------------

1 、对于 javaBean 于普通 java 的 class 类的分别并非很明确 主要是 javabean 通常在 jsp 页面上有特殊的引用方法。
2 、 javabean 是在服务器端执行的。 javabean 并不直接生成用户界面(那是 applet 做的事情),而通常只做数据的组织、处理工作。然后通过 jsp 页面来生成用户的界面。

以上只是我个人的理解。我也希望与大家一起讨论。
---------------------------------------------------------------

javaBean 是一种(符合要求的) java

*.jsp 在服务器端编译运行,通过封装的 socket (你看到的是 outputStream/ 名字也许不正确 一类的对象)向客户( webbrowser __ie/navigator) 发送普通字符流(按 http 协议 ), 这个字符流由浏览器接受,解释然后按一定的格式显示
---------------------------------------------------------------

1 、 javaBean 的 class 与普通 java 的 class 有什么区别? javaBean 的类代码有没有明确的规定,比如一定要继承什么类?如没有那怎么说一个 java 的 class 是 javaBean ,或不是呢?
javaBean 其实就是一个 JAVA 程序。可以在 JSP 里面调用。
ENterprise JavaBean 是用于构建企业应用的 EJB 。必须在应用服务器上面部署。

2 、 javaBean 是在客户端执行还是在服务器执行呢?
javaBean 是在服务器执行,返回给客户端的只是 HTML 代码。
如果要在客户端执行,可以用 APPLET
---------------------------------------------------------------

sun 很早提出的 javabean 的概念是解决可视的 application 的模块化提出来的,但由于 java 在客户端开发实在不怎么样,所以 sun 没有在这方面再进行,作为界面模块化开发的 javabean 实际上已经死了。(以上纯粹个人观点,欢迎批评)

但是随着 web 应用的兴起 jsp 的出现, jsp 需要这样的概念,功能 / 表现分开,将功能封装在一个模块中,以便实现最大化的代码复用,就又拾起这个 javabean 将它用在 web/jsp 开发上。


你提到的那篇文章所说的是可视化的 javabean 用在 applet 里的情况 ,以后你可以在心理分清楚(因为也许没人这样看)别人说的是那种 javabean 。

至于具体符合什么要求,说实话我不知道(因为我个人不赞成用 javabean 的)

 

自己的总结:

1. javaBean 是一种(符合要求的) java 类。 javaBean 与普通 java 的 class 类的分别并非很明确,主要是 javabean 通常在 jsp 页面上有特殊的引用方法。

2. 所以 javabean 既可以当作普通的类来使用,也可以在 jsp 页面上有特殊的引用方法。

3.       对于第三个问题:是不是只有通过标记符 <jsp:useBean> 来使用才能真正体检 javabean 组件的优势:自动赋值?如果不使用标记符 <jsp:useBean> 可以实现自动赋值吗?

答:不是的。 Jsp 的自动赋值是指:通过 <jsp:setProperty name=”myBean” property=”*” /> 这个属性访问标记符就可以轻松实现对 jsp 页面上所有参数的赋值,方便一点,而如果用普通类的访问方式,需要一一获取各项值,一一调用 set 方法而已。比如:

<%

StuInfoBean stuInfoBean=new StuInfoBean();

String stuNo=request.getParameter("stuNo");

String stuName=request.getParameter("stuName");

stuInfoBean.setStuNo(stuNo);

stuInfoBean.setStuName(stuName);

%>

4.       所以 javabean 只是一个符合必须有 set 和 get 方法,并且可以在 jsp 上有特殊引用方式的 java 类。

二、 一个例子,分别使用 jsp 特殊引用方式和普通类的使用方式来实现对 javabean 的调用:

主要的区别在于两个地方:

1 ) 对类的使用:

l         jsp 标记符方式:使用 <jsp:useBean />

l         普通类方式: <%@ page import="com.javaBean.StuInfoBean" %>

2 ) 对属性的赋值:

l         jsp 标记符方式: <jsp:setProperty name="stuInfoBean" property="*" />

l         普通类方式:

<%

StuInfoBean stuInfoBean=new StuInfoBean();

String stuNo=request.getParameter("stuNo");

String stuName=request.getParameter("stuName");

stuInfoBean.setStuNo(stuNo);

stuInfoBean.setStuName(stuName);

%>

具体代码如下:

1.       使用 jsp 特殊引用方式( StuInfo.jsp )

<% @ page contentType = " text/html;charset=GBK "   %>

< html >

< head >

< title > I use javabean individually </ title >

</ head >

< jsp:useBean id = " stuInfoBean "  scope = " session "   class = " com.javaBean.StuInfoBean "    />

< jsp:setProperty name = " stuInfoBean "  property = " * "   />  

< body >

< center >

< form name = " myForm "  action = " test.jsp " >

< table >

< tr >

< td >

stuNo is: 

</ td >

< td >

< input type = " text "  size = 20  name = " stuNo "  value = "" >

</ td >

</ tr >

< tr >

< td >

stuName is: 

</ td >

< td >

< input type = " text "  size = 20  name = " stuName "  value = "" >

</ td >

</ tr >

< tr >

< td >

< input type = " submit "    value = " 显示 " >

</ td >

</ tr >

</ table >

</ form >

< hr >

< table >

< tr >

< td >

stuNo is: 

</ td >

< td >

<%= stuInfoBean.getStuNo() %>

</ td >

</ tr >

< tr >

< td >

stuName is: 

</ td >

< td >

<%= stuInfoBean.getStuName() %>

</ td >

</ tr >

</ table >

</ center >

</ body >

</ html >

2.       普通类的使用方式( StuInfo.jsp )

<% @ page contentType = " text/html;charset=GBK "   %>

<% @ page  import = " com.javaBean.StuInfoBean "   %>

< html >

< head >

< title > I use javabean individually </ title >

</ head >

< body >

< center >

<%

StuInfoBean stuInfoBean
= new  StuInfoBean();

String stuNo
= request.getParameter( " stuNo " );

String stuName
= request.getParameter( " stuName " );

stuInfoBean.setStuNo(stuNo);

stuInfoBean.setStuName(stuName);

%>

 

 

< form name = " myForm "  action = " StuInfo.jsp " >

< table >

< tr >

< td >

stuNo is: 

</ td >

< td >

< input type = " text "  size = 20  name = " stuNo "  value = "" >

</ td >

</ tr >

< tr >

< td >

stuName is: 

</ td >

< td >

< input type = " text "  size = 20  name = " stuName "  value = "" >

</ td >

</ tr >

< tr >

< td >

< input type = " submit "    value = " 显示 " >

</ td >

</ tr >

</ table >

</ form >

 

< hr >

< table >

< tr >

< td >

stuNo is: 

</ td >

< td >

<%= stuInfoBean.getStuNo() %>

</ td >

</ tr >

< tr >

< td >

stuName is: 

</ td >

< td >

<%= stuInfoBean.getStuName() %>

</ td >

</ tr >

< table >

</ center >

</ body >

</ html >

<think>首先,用户要求根据给定的引用内容回答关于JavaBean的问题。这些引用来自不同的来源,我需要基于这些信息来构建回答。 引用内容总结: - [^1]: JavaBean的定义:可重用的Java组件,用于封装业务逻辑和数据操作,分为封装数据和封装业务。 - [^2]: JavaBean的用途:节省开发时间,通过重用组件。 - [^3]: JavaBean的开发规范:必须放在包中,public类,属性私有,有get/set方法,无参构造器;JSP中使用<jsp:useBean>标签调用。 - [^4]: 一个JavaBean的示例代码:类FirstBean在包com中,有私有属性x,无参构造器,setX和getX方法。 用户的问题是:“我想获取关于JavaBean的相关信息,可能包括定义、使用方法、规范等 请问JavaBean的详细介绍及使用方法” 回答结构: - 系统级指令要求:使用$...$用于行内数学表达式(但这里可能不需要数学公式),独立公式用$$...$$,LaTeX语法正确,使用中文回答,生成相关问题。 - 回答需要结构清晰,帮助用户逐步解决问题,保证真实可靠。 - 末尾添加引用标识,如[^1]。 - 生成相关问题。 内容结构: 1. **定义**:解释什么是JavaBean,基于引用[^1]:可重用的Java组件,用于封装业务逻辑和数据库操作。 2. **重要性**:引用[^1]提到在Web程序中很重要,处理业务逻辑和数据。 3. **分类**:引用[^1]说分为封装数据和封装业务。 4. **使用方法**: - 开发规范:基于引用[^3]:放在包中,public类,属性私有,有get/set方法(遵守命名规范),无参构造器。 - JSP中使用:引用[^3]描述如何使用<jsp:useBean>标签。 - 优点:引用[^2]:节省时间,重用代码。 5. **示例**:基于引用[^4],给出一个简单JavaBean的例子。 6. **完整回答**:综合所有信息,逐步介绍。 生成相关问题: - 指令说“生成相关问题”,在回答末尾添加类似示例中的相关问题部分。 - 例如:§§相关问题§§,然后列出几个问题。 语言: - 使用中文回答。 - 引用内容末尾添加引用标识。 可能的回答大纲: 1. 介绍JavaBean的定义和作用。 2. 详细说明开发规范。 3. 解释在JSP中的使用方法。 4. 给出一个代码示例。 5. 总结优点。 6. 添加相关问题。 引用标识: - 当提到引用内容时,在末尾添加像[^1]这样的标识。 - 示例中是在句末添加。 最终输出: - 以清晰段落形式。 - 生成相关问题在最后。 </think>### JavaBean的详细介绍及使用方法 JavaBeanJava开发中的一种可重用组件设计模式,主要用于封装业务逻辑和数据操作,从而提高代码的可维护性和复用性。它本质上是一个Java类,遵循特定的规范来确保跨平台兼容性。以下我将逐步介绍JavaBean的核心内容,包括定义、分类、开发规范、使用方法以及示例。回答基于提供的引用内容,确保信息真实可靠。 #### 1. **JavaBean的定义与重要性** JavaBean是一种可跨平台重用的Java组件,常用于Web应用程序中封装业务逻辑(如用户验证规则)和数据库操作(如数据增删改查)。它帮助开发者将程序分解为独立的模块,减少代码冗余并提升开发效率。在Web开发中,JavaBean是处理数据和业务的核心组件,例如在JSP页面中调用它来处理用户请求[^1]。JavaBean从功能上可分为两类: - **封装数据**:例如存储用户信息(用户名、密码等),属性通过getter/setter方法访问。 - **封装业务**:例如实现购物车逻辑或数据验证规则。 这种设计模式的核心优点是提高代码复用性,开发者只需编写一次组件,即可在多个场景调用,节省开发时间[^2]。 #### 2. **JavaBean的开发规范** 编写JavaBean必须遵守严格的规范,以确保组件能被正确实例化和调用。主要规范如下(基于引用内容): - **包管理**:JavaBean必须放在一个包中(包名通常小写),例如`package com;[^3]`。 - **类声明**: - 类必须是`public`的,且类名与文件名一致。 - 必须提供无参数的公共构造方法(默认构造器),因为JSP等容器需要它初始化对象[^3]。 - **属性封装**: - 所有属性(字段)应声明为`private`以实现封装。 - 通过公共的getter和setter方法访问属性,方法命名必须遵循驼峰式规范:例如属性名为`userName`,则getter方法为`getUserName()`,setter方法为`setUserName(String value)`[^3]。 - 这确保了属性的安全性和一致性,防止直接访问内部数据。 - **其他要求**:类应专注于单一职责,避免包含过多无关逻辑。 #### 3. **JavaBean的使用方法** JavaBean主要在JSPJava Server Pages)或Servlet中使用,通过标准标签或Java代码调用。以下是常见使用步骤: - **在JSP中调用JavaBean**: - 使用`<jsp:useBean>`标签创建JavaBean对象。语法如下: ```xml <jsp:useBean id="beanObject" class="com.ExampleBean" scope="page|request|session|application" /> ``` - `id`:对象的引用名,用于后续访问。 - `class`:类的全路径名(包括包名)。 - `scope`:指定对象的作用域,包括: - `page`:对象仅在当前页面有效。 - `request`:对象在一次HTTP请求中有效。 - `session`:对象在用户会话中有效。 - `application`:对象在整个Web应用中有效[^3]。 - 调用方法:通过`<jsp:getProperty>`和`<jsp:setProperty>`标签操作属性,例如: ```xml <jsp:setProperty name="beanObject" property="propertyName" value="newValue" /> <jsp:getProperty name="beanObject" property="propertyName" /> ``` - **优点**:重用JavaBean可以减少重复代码,例如将数据库查询逻辑封装为一个Bean,在多个页面调用它来处理数据[^2]。这提高了开发效率和系统可维护性。 #### 4. **JavaBean示例** 以下是一个简单的JavaBean示例,展示如何封装数据(Simple属性)。代码基于引用[^4],演示了规范的实现: ```java // 包名小写,类名大写 package com; // JavaBean放在包com中 public class FirstBean { private String x; // 私有属性,封装数据 // 无参公共构造方法 public FirstBean() { x = "This is the first javabean"; // 初始化默认值 } // setter方法(public,命名规范) public void setX(String x) { this.x = x; // this关键字避免歧义 } // getter方法(public,命名规范) public String getX() { return x; } } ``` - **解释**:在这个示例中: - `FirstBean`类封装了一个字符串属性`x`。 - 无参构造器初始化默认值。 - `setX()`和`getX()`方法提供对属性的访问。 - 在JSP中使用: ```jsp <jsp:useBean id="firstBean" class="com.FirstBean" scope="session" /> <% // 调用setter设置属性 firstBean.setX("Hello, JavaBean!"); // 调用getter获取属性 out.println(firstBean.getX()); // 输出:Hello, JavaBean! %> ``` 这样,JavaBean实现了数据封装和重用[^4]。 #### 总结 JavaBeanJava EE开发的关键组件,它通过规范化的设计(如封装属性、getter/setter方法)支持代码重用和模块化。尤其在Web应用中,结合JSP标签使用,能高效处理数据和业务逻辑。其核心优势是提升开发速度和系统可靠性[^2][^3]。开发者应严格遵守规范(如无参构造器和包管理)以避免运行时错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值