javaweb自定义MVC框架的设计与实现(1)

来源:互联网 发布:专业房屋设计软件 编辑:程序博客网 时间:2024/06/04 08:43



首先,在开始学习构建一个MVC框架之前,有必要学习一下MVC模型。

MVC模型

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


 web MVC开发模式

传统的mvc开发模式采用jsp+servlet+javabean的方法。servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据。 该模式程序各个模块之间层次清晰,控制器(Controller)采用Servlet、模型(Model)采用JavaBean、视图(View)采用JSP,如图

这里重点讨论一下该模式中的控制器。该模式中,控制器由Servlet承担;

Servlet的主要功能有:

  • 获取请求数据封装(可以通过BeanUtils实现请求数据封装的优化)
  • 调用Service处理业务逻辑(Service层可以通过调用Dao层处理数据)
  • 实现请求转发或者重定向(跳转代码写死,不方便扩展)

传统的MVC开发模式的局限性

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

1、Servlet作为控制器的缺点

  此处的控制器使用Servlet,使用Servlet作为控制器有以下几个缺点:

  1、控制逻辑可能比较复杂。现在流行的Web MVC框架(如Struts2)都支持"请求参数submitFlag=toAdd,就可以直接调用toAdd方法"这样的处理机制,在Struts2中类似这样的处理机制就称为"动态方法调用"

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

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

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

例如:使用Servlet API提供的request对象的getRequestDispatcher方法选择要展示给用户看的视图

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

例如:使用Servlet API提供的request对象给视图传输要展示的模型数据

2、JavaBean作为模型的缺点

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

三层架构:表现层+业务逻辑层+持久层

3、视图的缺点

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

  


我们将在下一节通过一个简单的注册登录实例来具体开始我们的MVC框架学习之旅!







0 1
原创粉丝点击