简单留言管理平台实现中 包含的 MVC,另:javabean和servlet的区别

    xiaoxiao2024-11-29  4

    首先,JavaBean和Servlet虽都是Java程序,但是是完全不同的两个概念。 引用mz3226960提出的MVC的概念,即M-model-模型:JavaBean;V-view-表现:JSP页面;C-control-控制和处理:Servlet。 其实所有的程序都可以写在jsp页面里,但是存在以下问题: 1、执行效率低下; 2、不安全,所有的程序都在jsp文件中可见,毫无知识保护可言; 3、逻辑混乱。这样让JSP文件的逻辑很难懂。 于是提出了MVC模式,即将一些处理用的程序从JSP中分离出来,让JSP页面只负责显示,几乎是html,只不过可以动态的读取数据和进行少量的逻辑处理,比如循环、判断等。 可能不举例说你还是不懂,我就举个最简单的例子——留言板。 JSP的职责:从数据库取出数据,显示所有的留言信息(当中要用少量的,简单的逻辑处理:循环)、显示签写留言的页面(几乎全部都是html)。 Servlet的职责:接受签写留言页面提交过来的 标单数据,进行数据检验 ,如果正确,则存入数据库并返回留言的显示页面;如果数据有误,给出错误提示后返回签写留言的页面。可以看到,这个就叫做 逻辑处理 。这些你也完全可以放在JSP中实现,但是用Servlet,其效率和安全性高多了,也让JSP页面变得很简洁明了。

    JavaBean的职责:其实一般的留言板是不需要用到JavaBean的,但在这里,为了让你明白,还是牵强的把JavaBean用进来。所谓JavaBean,就是一个很简单的Java类,比如说,网上商城的所有商品是一个商品类,论坛中所有的帖子是一个帖子类,这里,留言板的所有留言是一个留言类,叫做Message类。每个类有着它特定的属性和方法。对于Message类,其属性有主题、内容、日期、留言者等,其方法可以有添加留言、删除留言、修改留言等。使用JavaBean,主要是为了让JSP编程能够适应Java程序员的习惯,直接对类和实例进行操作,而不是直接去操作数据库。

    JavaBeanServlet的不同 

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

    Type2: 还有一种JavaBean,其内包含业务处理逻辑,用于处理特定的业务数据;一般使用上面所述的“数据对象”(当然也可能不使用)。     Servlet主要是用来:接收请求、封装‘Type1’JavaBean、调用‘Type2’JavaBean的相应业务逻辑方法、向客户端发出响应。

    以上是Struts 1.x所使用的模式:ActionForm 就是 Type1JavaBeanActionBean就是Type2JavaBeanActionServlet即是上面所述的Servlet Struts 2.x则是使用 Type1 + Type2的方式(数据对象和业务处理)和Servlet相结合的方式(实际上就是Webwork的方式)。 

    javaBeanServlet有什么区别?

    什么时候用javaBaen?

    什么时候用Servlet,什么时候二者结合使用?

    n         javabean无非就是里面有些setget方法

    n         servlet用来处理一些逻辑层 

    n         javabean说笼统点是实现

    n         javabeanservletjsp分别对应Model)、Controller)、View 

    举例: servlet查询数据库-----javabean保存查询结果-----jsp显示查询结果 

    javabean就是一个普通的Java类,里面为属性增加了gettersetter并提供默认构造。可以在多层架构的各层存在。想用它作什么都行。 

    Servlet是展示层的东西……应当只在展示层存在。常作为MVC中的控制器。  一般说的Mvc模式,Servlet主要充当了C的作用。

    javabeanservlet是两回事.因为javabean是一个组件,可以用在任何地方,当然就可以用在servlet里了      按照Sun的定义,所谓的JavaEE应用,是由两大部分组成:(1)组件,表示业务逻辑、表现逻辑,这部分由开发人员完成;(2)标准的系统服务,由JavaEE平台,亦即容器来提供,这个范围之外的都不属于JavaEE应用的范畴。而Servlet,作为JavaEE应用表现逻辑的组件之一,当然是JavaEE应用的一部分。而JavaBean,产生的年代早于J2EE,其技术用途更为广泛不限于JavaEE使用,按照sun的定义,不属于JavaEE技术范围。

    其实真正大规模使用JavaBean组件技术的是在Swing中,wing中的所有控件包括JButtonJTree等用的都是JavanBean技术,这些控件的基本编程模型正是大名鼎鼎的MVC模型,不信找出Swing API来,好好研究一下JTreeJTable,就知道什么是真正的JavaBean了。

    Servlet是只能在JavaEE容器中存活的特殊Java类,就像是鱼缸里的鱼,没有容器Servlet是不能生存的。而JavaBean则可以脱离JavaEE环境单独存在,按照Sun的说法,既可以用在客户端,也可以用在服务器端。

    所谓的POJO,就是EJBE字去掉,剩下的JB就是JavaBean,换句话说,JavaBeanJ2EE里,甚至可以充当某些EJB完成的任务,用途远大于Servlet。最后的区别,就是 JavaBean的主要用途在于管理JavaEE应用各个层之间的数据流,所以在一些框架中(如Struts)有FormBeanActionBean的说法,其本质都是为了管理数据。相信如果把上述几点搞清,区分ServletJavaBean应当不会很困难的。 

    JSPServlet到底在应用上有什么区别?

    简单的说,SUN首先发展出Servlet,其功能比较强劲,体系设计也很先进,只是,它输出HTML语句还是采用了老的CGI方式,是一句一句输出,所以,编写和修改HTML非常不方便。 后来SUN推出了类似于ASP的镶嵌型的JSP,把JSP TAG镶嵌到HTML语句中,这样,就大大简化和方便了网页的设计和修改。

    新型的网络语言如ASPPHPJSP都是镶嵌型的SCRIPT语言。 从网络三层结构的角度看,一个网络项目最少分三层:data layer,business layer, presentation layer。当然也可以更复杂。

    Servlet用来写business layer是很强大的,但是对于写presentation layer就很不方便。JSP则主要是为了方便写presentation layer而设计的。当然也可以写business layer

    写惯了ASPPHPCGI的朋友,经常会不自觉的把presentation layerbusiness layer混在一起,就像把数据库处理信息放到JSP中。其实,它应该放在business layer中。根据SUN自己的推荐,JSP中应该仅仅存放与presentation layer有关的东西,也就是说,只放输出HTML网页的部份。而所有的数据计算,数据分析,数据库联结处理,统统是属于business layer,应该放在JavaBean中。通过JSP调用JavaBean,实现两层的整合。

    实际上,微软前不久推出的DNA技术,简单说,就是ASP+COM/DCOM技术。与JSP+BEANS完全类似,所有的presentation layerASP完成,所有的business layerCOM/DCOM完成。通过调用,实现整合。

    为什么要采用这些组件技术呢?因为单纯的ASP/JSP语言是非常低效率执行的,如果出现大量用户点击,纯SCRIPT语言很快就到达了他的功能上限,而组件技术就能大幅度提高功能上限,加快执行速度。    另外一方面,纯SCRIPT语言将presentation layerbusiness layer混在一起,造成修改不方便,并且代码不能重复利用。如果想修改一个地方,经常会牵涉到十几页CODE,采用组件技术就只改组件就可以了    综上所述,Servlet是一个早期的不完善的产品,写business layer很好,写presentation layer就很臭,并且两层混杂。    所以,推出JSP+Bean,用JSPpresentation layer,Beanbusiness layerSUN自己的意思也是将来用JSP替代Servlet    可是,这不是说,学了Servlet没用,实际上,还是应该从Servlet入门,再上JSP,再上JSP+BEAN    强调的是:学了JSP,不会用JavaBean并进行整合,等于没学。大家多花点力气在JSP+Bean上。 

    我们可以看到,当ASP+COMJSP+Bean都采用组件技术后,所有的组件都是先进行编译,并驻留内存,然后快速执行。所以,大家经常吹的Servlet/JSP先编译驻内存后执行的速度优势就没有了。    反之,ASP+COM+IIS+NT紧密整合,应该会有较大的速度优势呈现。而且,ASP+COM+IIS+NT开发效率非常高,虽然BUG很多。    那么,为什么还用JSP+Bean

    因为JAVA实在前途远大。微软分拆后,操作系统将群雄并起,应用软件的开发商必定要找一个通用开发语言进行开发,JAVA一统天下的时机就到了。如果微软分拆顺利,从中分出的应用软件公司将成为JAVA的新领导者。

    目前的JAVA大头SUNIBM都死气沉沉,令人失望。希望新公司能注入新活力。不过,新公司很有可能和旧SUN展开JAVA标准大战,双方各自制定标准,影响JAVA夸平台。    另外,现在的机器速度越来越快,JAVA的速度劣势很快就可以被克服。javabean可以作为模型+控制,也可以单做模型,也可以只用来做数据传递(JSP发送数据到BeanBeanN执行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技术更需要编程人员。         模式二技术结合了JSPServlet技术充分体现了两者的技术优点。在此模式中通过JSP来表现页面。通过Servlet来完成大量的事务处理。Servlet充当一个控制者的角色,并负责向客户发送请求。Servlet创建JSP所需要的Bean和对象,然后根据用户的请求行为,决定将哪个JSP页面发送给客户。         从开发的观点,模式二具有更清晰的页面表现,清楚的开发者角色划分,可以充分利用开发小组的界面设计人员,这些优势在大型项目开发中表现的尤为突出,使用这一模式,可以充分发挥每个开发者各自的特长,界面设计人员可以充分发挥自己的表现力,设计出优美的界面表现形式,设计人员可以充分发挥自己的商务处理思维,来实现项目中的业务处理。在大型项目中,模式二更被采用。 

            Servlet是一种独立于平台和协议的位于Web服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,ServletWeb服务器进行加载,该Web服务器必须包含支持ServletJava虚拟机。  

    JavaServletJSP(JavaServerPages)的比较:

    JavaServerPages(JSP)是一种实现普通静态HTML和动态HTML混合编码的技术,JSP并没有增加任何本质上不能用Servlet实现的功能。但是,在 JSP中编写静态HTML更加方便,不必再用println语句来输出每一行HTML代码。更重要的是,借助内容和外观的分离,页面制作中不同性质的任务可以方便地分开:比如,由页面设计者进行HTML设计,同时留出供Servlet程序员插入动态内容的空间。      JSP动态Web内容可能是动态Web内容的一项伟大的技术,并可将内容和表示presentation相分离,那为什么servlets仍然有必要和JSP同时实施?       其实servlets的实用性并不是一个问题。它们在服务器端处理方面的表现非常优秀,而且,由于它们引人注目的安装方式而继续存在着。事实上,可以将 JSP看作一种servlets的高级抽象,它以Servlet2.1API扩展的形式来实现。

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

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

    方法之一就是同时使用JSPservlet技术来建立应用系统。

    转载请注明原文地址: https://ju.6miu.com/read-1294080.html
    最新回复(0)