javaBean和Servlet区别

一、什么是javaBean

在JSP中调用JAVA类和使用JAVABEAN有什么区别?

你可以像使用一般的类一样使用JavaBean,Bean只是一种特殊的类。
特殊在可以通过<jsp:useBean />调用JavaBean而其他类,你可以和一般java中一样使用.
Bean 的参数中还可以指定范围, <jsp:useBean scope="application" /> 该Bean在服务器的JVM 中将只有一个实例.
Bean是和WebServer相关的, 不同的页面可以通过 Bean 交互. 而你在一个页面中的类,就没有这个功能, 除非通过session, 那又是另外一回事了.


bean其时也是class文件,只是普通的java文件没有什么限制,如果你按bean的规范来制作class文件,那他就是一个bean。而按bean的规范来制作就相当是一个组件,换句话说bean就是组件技术,至于bean的规范,你可以在书上或网上查一下。


JavaBean的规范
JavaBean必须包含一个无参数的public构造方法。
JavaBean必须包含符合命名规范的get和set方法,以便访问JavaBean的属性。
JavaBean应该是可串行化(serializable)的。
JavaBean不应包含事件处理方法。
JavaBean示例:public class PersonBean implements java.io.Serializable {
private String name;
private boolean deceased;
// No-arg constructor (takes no arguments).
public PersonBean() {
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
// Different semantics for a boolean field (is vs. get)
public boolean isDeceased() {
return this.deceased;
}
public void setDeceased(boolean deceased) {
this.deceased = deceased;
}


为了确保一个java类成为javabean,有以下四个简单的也是必须的规范:

这个类是可序列化的,即必须实现java.io.Serializable接口。
这个类必须带有一个无参数的构造方法。
这个类的属性必须通过get、set和其他按标准规范命名的方法来操作:若成员变量名为XXX,那么要有方法getXXX(),用来获取属性;setXXX(),用来修改属性;对于Boolean类型的成员变量,可用is代替get和set类中的方法的访问。属性都必须是public的。类中如果有构造方法,那么这个构造方法也是public的,并且无参数。
这个类包含所有必需的事件处理方法。

二、JavaBean和Servlet的不同

Type1: 一般的JavaBean中,只有属性声明和该属性对应的setXxx和getXxx方法,(一般不建议)不包含业务逻辑;这种JavaBean你可以简单地理解为“数据对象”即可。

Type2: 还有一种JavaBean,其内包含业务处理逻辑,用于处理特定的业务数据;一般使用上面所述的“数据对象”(当然也可能不使用)。

Servlet主要是用来:接收请求、封装‘Type1’的JavaBean、调用‘Type2’的JavaBean的相应业务逻辑方法、向客户端发出响应。

以上是Struts 1.x所使用的模式:ActionForm 就是 Type1的JavaBean,ActionBean就是Type2的JavaBean,ActionServlet即是上面所述的Servlet。

Struts 2.x则是使用 Type1 + Type2的方式(数据对象和业务处理)和Servlet相结合的方式(实际上就是Webwork的方式)。


javaBean 和Servlet有什么区别啊?
什么时候用javaBaen?什么时候用Servlet,什么时候二者结合使用呢?

javabean无非就是里面有些set和get方法呀
servlet用来处理一些逻辑层

javabean说笼统点是实现....servlet是控制,一个是mvc的m一个是c....

javabean、servlet、jsp分别对应M(odel)、C(ontroller)、V(iew)
举例:
servlet查询数据库
javabean保存查询结果
jsp显示查询结果

javabean就是一个普通的Java类,里面为属性增加了getter和setter并提供默认构造。可以在多层架构的各层存在。想用它作什么都行。
而Servlet是展示层的东西……应当只在展示层存在。常作为MVC中的控制器。

一般说的Mvc模式,Servlet主要充当了C的作用,
你可以想象,
你有个对象,叫Model(javabean),你通过Servlet来Control它,然后再通过Jsp来显示给其他View。 具体Servlet如何Control,这要根据具体的Model来编写了。同样Jsp也是。

javabean和servlet应该是两回事吧.因为javabean是一个组件,可以用在任何地方,当然就可以用在servlet里了


这个问题看似有些“初级”,但实际上它涉及了对Java EE理解的一个最基本的问题,什么是Java EE,什么不是。本人正在研究Sun公司官方的 "The Java EE 5 Tutorial ",按照Sun的定义,所谓的Java EE应用,是由两大部分组成:(1)组件,表示业务逻辑、表现逻辑,这部分由开发人员完成;(2)标准的系统服务,由Java EE平台,亦即容器来提供,这个范围之外的都不属于Java EE应用的范畴。而Servlet,作为Java EE应用表现逻辑的组件之一,当然是Java EE应用的一部分。而JavaBean,产生的年代早于J2EE,其技术用途更为广泛不限于Java EE使用,按照sun的定义,不属于Java EE技术范围。原文如下
"The server and client tiers might also include components based on the JavaBeans component architecture (JavaBeans components) to manage the data flow between an application client or applet and components running on the Java EE server, or between server components and a database. JavaBeans components are NOT considered Java EE components by the Java EE specification. "
大意是:尽管服务器层和客户层都使用基于JavaBean组件架构的组件来管理客户端与服务器端以及服务器端与服务器的数据流,但Java EE规范并没没有把JavaBean组件看作是Java EE的组件。
如果问Servlet和JavaBean的区别是什么,这就是最根本的区别了。其实真正大规模使用JavaBean组件技术的是在Swing中,wing中的所有控件包括JButton,JTree等用的都是JavanBean技术,这些控件的基本编程模型正是大名鼎鼎的MVC模型,不信找出Swing API来,好好研究一下JTree、JTable,你就知道什么是真正的JavaBean了。而Servlet是只能在Java EE容器中存活的特殊Java类,就像是鱼缸里的鱼,没有容器Servlet是不能生存的。而JavaBean则可以脱离Java EE环境单独存在,按照Sun的说法,既可以用在客户端,也可以用在服务器端。所谓的POJO,就是EJB把E字去掉,剩下的JB就是JavaBean,换句话说,JavaBean在J2EE里,甚至可以充当某些EJB完成的任务,用途远大于Servlet。最后的区别,楼上已经有人指出了,就是在基于 MVC模式的Java Web应用中,Servlet和JavaBean扮演的角色不同,按照上述引用的Sun的Java EE 5规范的说法,JavaBean的主要用途在于管理Java EE应用各个层之间的数据流,所以在一些框架中(如Struts)有FormBean和ActionBean的说法,其本质都是为了管理数据。相信如果把上述几点搞清,区分Servlet和JavaBean应当不会很困难的。


JSP和SERVLET到底在应用上有什么区别,很多人搞不清楚。我来胡扯几句吧。简单的说,SUN首先发展出SERVLET,其功能比较强劲,体系设计也很先进,只是,它输出HTML语句还是采用了老的CGI方式,是一句一句输出,所以,编写和修改HTML非常不方便。 后来SUN推出了类似于ASP的镶嵌型的JSP,把JSP TAG镶嵌到HTML语句中,这样,就大大简化和方便了网页的设计和修改。新型的网络语言如ASP,PHP,JSP都是镶嵌型的SCRIPT语言。 从网络三层结构的角度看,一个网络项目最少分三层:data layer,business layer, presentation layer。当然也可以更复杂。SERVLET用来写business layer是很强大的,但是对于写presentation layer就很不方便。JSP则主要是为了方便写presentation layer而设计的。当然也可以写business layer。写惯了ASP,PHP,CGI的朋友,经常会不自觉的把presentation layer和business layer混在一起。就象前面那个朋友,把数据库处理信息放到JSP中,其实,它应该放在business layer中。根据SUN自己的推荐,JSP中应该仅仅存放与presentation layer有关的东东,也就是说,只放输出HTML网页的部份。而所有的数据计算,数据分析,数据库联结处理,统统是属于business layer,应该放在JAVA BEANS中。通过JSP调用JAVA BEANS,实现两层的整合。实际上,微软前不久推出的DNA技术,简单说,就是ASP+COM/DCOM技术。与JSP+BEANS完全类似,所有的 presentation layer由ASP完成,所有的business layer由COM/DCOM完成。通过调用,实现整合。为什么要采用这些组件技术呢?因为单纯的ASP/JSP语言是非常低效率执行的,如果出现大量用户点击,纯SCRIPT语言很快就到达了他的功能上限,而组件技术就能大幅度提高功能上限,加快执行速度。
  另外一方面,纯SCRIPT语言将presentation layer和business layer混在一起,造成修改不方便,并且代码不能重复利用。如果想修改一个地方,经常会牵涉到十几页CODE,采用组件技术就只改组件就可以了
  综上所述,SERVLET是一个早期的不完善的产品,写business layer很好,写presentation layer就很臭,并且两层混杂。
  所以,推出JSP+BAEN,用JSP写presentation layer,用BAEN写business layer。SUN自己的意思也是将来用JSP替代SERVLET。
  可是,这不是说,学了SERVLET没用,实际上,你还是应该从SERVLET入门,再上JSP,再上JSP+BEAN。
  强调的是:学了JSP,不会用JAVA BEAN并进行整合,等于没学。大家多花点力气在JSP+BEAN上。
在补充几句:
  我们可以看到,当ASP+COM和JSP+BEAN都采用组件技术后,所有的组件都是先进行编译,并驻留内存,然后快速执行。所以,大家经常吹的SERVLET/JSP先编译驻内存后执行的速度优势就没有了。
  反之,ASP+COM+IIS+NT紧密整合,应该会有较大的速度优势呈现。而且,ASP+COM+IIS+NT开发效率非常高,虽然BUG很多。
  那么,为什么还用JSP+BEAN?因为JAVA实在前途远大。微软分拆后,操作系统将群雄并起,应用软件的开发商必定要找一个通用开发语言进行开发,JAVA一统天下的时机就到了。如果微软分拆顺利,从中分出的应用软件公司将成为JAVA的新领导者。目前的JAVA大头SUN和IBM都死气沉沉,令人失望。希望新公司能注入新活力。不过,新公司很有可能和旧SUN展开JAVA标准大战,双方各自制定标准,影响JAVA夸平台。
  另外,现在的机器速度越来越快,JAVA的速度劣势很快就可以被克服。

javabean可以作为模型+控制,也可以单做模型,也可以只用来做数据传递(JSP发送数据到BEAN,BEAN执行EXECUTE,操作数据库,反之也可)


如果你还没学到其它框架,如HIBERNATE,SPRING,STRUTS等。那javabean的作用是用来作数据的装载,这种 bean我称为数据bean,比如你从数据库上查询出的记录可以保存在数据bean中,javabean的另一外作用是用来处理一些业务逻辑,比如可以在 javabean中用JDBC去访问数据库,从而从数据库中加载信息到数据bean中,也可以从数据库中删除、保存数据等。而SERVLET的作用主要是用来控制页面的跳转,比如说从login.jsp发一个请求到SERVLET中,SERVLET调用业务bean的方法去查询数据库是否有此密码和用户名,如果正确SERVLET就可以用request或者response对象的方法跳转到你想要的页面。

JSP开发的两种模式

模式一:JSP+JavaBeans

这就是指JSP+JavaBean技术。在模式一中,JSP页面独自响应请求并将处理结果返回客户。所有的数据通过Bean来处理JSP实现页面的表现。模式一技术也实现了页面的表现--和页面的商业逻辑相分离。

大量使用模式形式,常常会导致页面被嵌入大量的脚本语言或JAVA代码。当需要处理的商业逻辑很复杂时,这种情况会变得非常糟糕。大量的代码会使整个页面变得非常复杂。对于前端界面设计人员来说,这简直不可想象。

这种情况在大项目中最为常见,这也造成了代码的开发和维护出现困难,造成了不必要的资源浪费,在任何项目中,这样的模式总会导致多多少少的定义不清的响应和项目管理的困难。

综上所诉,模式一不能满足大型项目的需要,但是可以较好的满足小型应用,在简单的应用中可以考虑模式一。



模式二:JSP+Servlet+JavaBeans

Servlets技术是一种采用JAVA技术来实现CGI功能的一种术。Servlets技术是运行在WEB服务器上,用来生成WEB页面。Servlets技术非常适用于服务器端的处理和编程,并且Servlet会长期驻留在他们所处的位置。

但是在实际的项目开发过程中,页面设计者可以方便地使用普通HTML工具来开发JSP页面Servlet却更适合于后端开发者使用,开发Servlet需要的是JAVA集成开发环境,也就是说Servlet技术更需要编程人员。

模式二技术结合了JSP和Servlet技术充分体现了两者的技术优点。在此模式中通过JSP来表现页面。通过Servlet来完成大量的事务处理。 Servlet充当一个控制者的角色,并负责向客户发送请求。Servlet创建JSP所需要的Bean和对象,然后根据用户的请求行为,决定将哪个 JSP页面发送给客户。

从开发的观点,模式二具有更清晰的页面表现,清楚的开发者角色划分,可以充分利用开发小组的界面设计人员,这些优势在大型项目开发中表现的尤为突出,使用这一模式,可以充分发挥每个开发者各自的特长,界面设计人员可以充分发挥自己的表现力,设计出优美的界面表现形式,设计人员可以充分发挥自己的商务处理思维,来实现项目中的业务处理。在大型项目中,模式二更被采用。
本篇文章来自<A href='http://www.soidc.net'>IDC专家网</a> 原文链接:http://www.soidc.net/discuss/1/040317/19/331843_1.html


Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的Web页面。

  Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
  Java Servlet 与 JSP(JavaServer Pages) 的比较:

JavaServer Pages(JSP)是一种实现普通静态HTML和动态HTML混合编码的技术,JSP并没有增加任何本质上不能用Servlet实现的功能。但是,在 JSP中编写静态HTML更加方便,不必再用println语句来输出每一行HTML代码。更重要的是,借助内容和外观的分离,页面制作中不同性质的任务可以方便地分开:比如,由页面设计者进行HTML设计,同时留出供Servlet程序员插入动态内容的空间。


JSP动态Web内容可能是动态Web内容的一项伟大的技术,并可将内容和表示presentation相分离,
有些人仍然觉得奇怪,为什么servlets仍然有必要和JSP同时实施。


其实servlets的实用性并不是一个问题。它们在服务器端处理方面的表现非常优秀,而且,由于它们引人注目的安装方式而继续存在着。事实上,你可以将 JSP看作一种servlets的高级抽象,它以Servlet 2.1 API扩展的形式来实现。


你仍然不应该不加选择地使用servlets;它们可能并不适用于每个人。例如,当一个页面设计者可以很简单地使用方便的HTML或XML工具来编写 JSP页面时,servlets可能更适合那些在后端的开发者,因为他们经常使用某种IDE来编写-- 这是一种通常需要较高编程经验的处理工作。

当发布servlets时,甚至开发者都不得不小心确保在presentation和内容之间不存在紧密结合。你通常可以通过增加一个第三方发行包如 htmlKona来做到这一点。但即使可以做到这一点,虽然可以通过简单的屏幕上的调整提供一些灵活性,仍无法为你保证在presentation自身格式上的变化。例如,如果你的presentation从HTML改变到DHTML,你将仍然需要确保发行包和新的格式相一致,在最坏的case -- scenario中,如果一个发行包无法得到,你将结束在动态web的内容中对presentation使用手写代码。


所以,解决方法是什么呢?
方法之一就是同时使用JSP和servlet技术来建立应用系统。

本篇文章来自<A href='http://www.soidc.net'>IDC专家网</a>
原文链接:http://www.soidc.net/discuss/1/040317/19/331843_1.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值