JSP基础(九)——Java Web的两种开发模式

来源:互联网 发布:软件开发java 高级证书 编辑:程序博客网 时间:2024/05/16 10:14

SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式:一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式。

一. JSP+JavaBean开发模式

1.1 JSP+JavaBean的开发模式架构

        在jsp+javabean架构中,JSP负责控制逻辑、表现逻辑、业务对象(javabean)的调用。

  JSP+JavaBean模式适合开发业务逻辑不太复杂的web应用程序,这种模式下,JavaBean用于封装业务数据,JSP即负责处理用户请求,又显示数据。


1.2 JSP+JavaBean的开发模式特点

  (1)直接使用JSP文件开发所有功能对于初学者来说,逻辑简单、容易理解。但很难实现复杂的页面功能,在大型项目中:

     ◆HTML和Java强耦合在一起    ◆极难维护与扩展     ◆不方便调试

  (2)JSP+JavaBean开发模式特点

相比完全使用JSP文件开发:

    ◆纯净的JSP页面(业务逻辑和数据库操作已从JSP页面中剥离出来)

    ◆可重用组件(设计良好的JavaBean可以重用,甚至可做为产品销售)

    ◆方便进行调试(复杂的操作都封装在一个或多个JavaBean中,错误比较容易定位)

    ◆易维护易扩展(系统的升级或更改往往集中在一组JavaBean中,而不用编辑所有的JSP页面)

缺陷:程序逻辑开发和页面设计纠缠在一起,既不方便分工合作也不利于代码的重用,致使程序的健壮性和可伸缩性都不好。


二. Servlet+JSP+JavaBean开发模式

    在平时的Java Web项目开发中,在不使用第三方mvc开发框架的情况下,通常会选择Servlet+JSP+JavaBean开发模式来开发JavaWeb项目,Servlet+JSP+JavaBean组合开发就是一种MVC开发模式了,控制器(Controller)采用Servlet、模型(Model)采用JavaBean、视图(View)采用JSP。在讲解Servlet+JSP+JavaBean开发模式之前,先简单了解一下MVC开发模式。


2.1 Web开发中的请求-响应模型

  

 因此,在Web世界里:都是Web客户端发起请求,Web服务器接收、处理并产生响应。

  一般Web服务器是不能主动通知Web客户端更新内容。虽然现在有些技术如服务器推(如Comet)、还有现在的HTML5 websocket可以实现Web服务器主动通知Web客户端。

  到此我们了解了在web开发时的请求/响应模型,接下来我们看一下标准的MVC模型是什么。


2.2 标准MVC模式概述

  MVC模型:是一种架构型的模式,本身不引入新功能,只是帮助我们将开发的结构组织的更加合理,使展示与模型分离、流程控制逻辑、业务逻辑调用与展示逻辑分离。如下图:

 

 

2.3 MVC(Model-View-Controller)的概念

  首先让我们了解下MVC(Model-View-Controller)的概念:

  Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型(domain)或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据) 和 服务层(行为)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。

  View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。

  Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。 也就是说控制器做了个调度员的工作。

    在标准的MVC中模型能主动推数据给视图进行更新(观察者设计模式,在模型上注册视图,当模型更新时自动更新视图),但在Web开发中模型是无法主动推给视图(无法主动更新用户界面),因为在Web开发是请求-响应模型。

  那接下来我们看一下在Web里MVC是什么样子,我们称其为 Web MVC 来区别标准的MVC。



2.4 Web MVC模式

     Web MVC中的MVC概念和标准MVC概念一样,只不过,在Web MVC模式下,模型无法主动推数据给视图,如果用户想要视图更新,需要再发送一次请求(即请求-响应模型)。

 

 

2.5Servlet+JSP+JavaBean开发模式介绍

  Servlet+JSP+JavaBean架构其实可以认为就是我们所说的Web MVC模型,只是控制器采用Servlet、模型采用JavaBean、视图采用JSP,如图



三、Servlet+JSP+JavaBean开发模式的缺点

    Servlet+JSP+JavaBean(Web MVC)架构虽然实现了视图和模型分离以及控制逻辑和展示逻辑分离,但也有一些比较严重的缺点。


3.1 Servlet作为控制器的缺点

  1、控制逻辑可能比较复杂,其实我们可以按照规约,如请求参数submitFlag=toLogin,我们其实可以直接调用toLogin方法,来简化控制逻辑;而且每个模块基本需要一个控制器,造成控制逻辑可能很复杂。现在流行的Web MVC框架(如Struts2)都支持"请求参数submitFlag=toAdd,就可以直接调用toAdd方法"这样的处理机制,在Struts2中类似这样的处理机制就称为"动态方法调用"

  2、请求参数到模型的封装比较麻烦,如果能交给框架来做这件事情,我们可以从中得到解放。

       当有几十个甚至上百个参数需要封装到模型中时,这样写恐怕就痛苦万分了,要写几十次甚至上百次这样的代码,估计写到吐了,所以现在流行的Web MVC框架(如Struts2)都提供了非常方便的获取参数,封装参数到模型的机制,减少这些繁琐的工作。

     3、选择下一个视图,严重依赖Servlet API,这样很难或基本不可能更换视图。

     4、给视图传输要展示的模型数据,也需要使用Servlet API,更换视图技术也要一起更换,很麻烦。

 

 3.2 JavaBean作为模型的缺点

     JavaBean组件类既负责收集封装数据,又要进行业务逻辑处理,这样可能造成JavaBean组件类很庞大,所以一般现在项目都是采用三层架构,而不直接采用JavaBean



3.3 视图的缺点

     现在被绑定在JSP,很难更换视图,比如Velocity、FreeMarker;比如我要支持Excel、PDF视图等等。





 

原创粉丝点击