1、    尽管Servlet + JSP可以完成全部的开发工作,但是代码耦合度高、可读性差、重用性不好,维护、优化也不方便。所以才有了MVC。

MVC是当前WEB开发的主流模式,核心是使用Struts、SpringMVC等框架管理URL映射、调度服务层和视图层。

2、    Struts、SpringMVC等控制层框架可以实现服务层、视图层的调度,而且我们的想法是让它们只负责做这些工作。

但是,在请求中包含了参数的情况下,如:多条件查询数据列表。

是不是需要在控制器里面获取请求参数呢?传统的方式是这样的。

如果添加或者删除某个查询条件,我们就需要去修改控制器代码。

有一个较好的解决方案:在控制器之前添加Filter或者Interceptor,在里面获取请求参数并封装查询参数对象(Map、List或者自定义对象)存放到值栈或Request域,然后在控制器中获取这个查询参数对象,再调用service时传入即可。

进一步,还可以把这些Filter或者Interceptor封装成单独的jar包,在WEB应用中配置依赖。

3、    使用MVC模式开发的同时配合使用“面向接口编程(多态)”可以大大降低组件之间的耦合性。

组件之间使用接口对象对接,通过Spring文件配置或注解扫描把实际使用的组件实现类对象管理起来,然后把实现类对象注入到调用组件。

在之后的升级或者维护中,如果需要整体修改组件实现,只要替换组件实现类的jar文件,而不需要修改调用组件的任何代码。

4、    可以使用maven解决依赖问题,这可以让模块化的分层架构更加清晰、组件之间的耦合页更低。

简单的模块划分大致如下:实体类、dao层、dao层实现类、service层、service层实现类、WEB应用

其实核心的模块就是:实体类、dao层、service层、WEB应用

之间的依赖关系(黑色线表示)如下:

在后期优化、升级过程中,如果我们使用Mybatis实现DAO层,我们只需要:

    • 使用Mybatis编写DAO层的实现类
    • 添加spring的配置文件
    • 制作jar包,上传到maven服务器
    • 把WEB层的hibernate dao依赖改成mybayis dao实现

这样我们就完成DAO层实现类的修改,其余的模块代码不需要任何修改

MVC模式和Maven项目构建的更多相关文章

  1. 准备阶段-maven项目构建

    依据我现阶段对maven的了解,具使用POM管理项目和强大的repository资源管理库支持. 在项目建立初期,对网站的可拓展.高并发.易于管理做了评估.最终使用Maven 管理该项目 . 如下是m ...

  2. (转)Maven学习总结(二)——Maven项目构建过程练习

    孤傲苍狼 只为成功找方法,不为失败找借口! Maven学习总结(二)——Maven项目构建过程练习 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项 ...

  3. Maven学习总结(2)——Maven项目构建过程练习

    Maven学习总结(二)--Maven项目构建过程练习 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项目的过程 一.创建Maven项目 1.1.建 ...

  4. Maven学习总结(二)——Maven项目构建过程练习

    上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项目的过程 一.创建Maven项目 1.1.建立Hello项目 1.首先建立Hello项目,同时建立M ...

  5. Maven学习总结(二)——Maven项目构建过程练习_转载

    上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项目的过程 一.创建Maven项目 1.1.建立Hello项目 1.首先建立Hello项目,同时建立M ...

  6. 转】Maven学习总结(二)——Maven项目构建过程练习

    原博文出自于:http://www.cnblogs.com/xdp-gacl/p/4051690.html 感谢! 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven ...

  7. maven项目构建

    Maven是apache的一个开源项目.是一个用来把源代码构建成可发布的构件的工具. Maven的功能非常强大,可以认为是一个项目管理工具,不仅仅是一个构建工具. Maven本身的核心很小,但是可以在 ...

  8. Maven学习(二)-- Maven项目构建过程练习

    摘自:http://www.cnblogs.com/xdp-gacl/p/4051690.html 一.创建Maven项目 1.1.建立Hello项目 1.首先建立Hello项目,同时建立Maven约 ...

  9. Redhat上为java Maven项目构建基于Jenkins + Github的持续集成环境

    在Redhat enterprise 6.5 的服务器上,为在gutub 上的 java mvaen项目构建一个持续集成环境,用到了Jenkins.因公司的服务器在内网,访问外网时要通过代理,所以为m ...

随机推荐

  1. webpack系列之安装(Mac OS)

    1. webpack介绍,可参考Webpack中文文档 2. 安装webpack之前先需要安装npm,可参看NPM的使用介绍 3. 安装webpack,可参考Webpack入门教程 ========= ...

  2. SQL优化-如何分析性能瓶颈

    MySQL优化一览图 笔者将优化分为了两大类:软优化和硬优化.软优化一般是操作数据库即可:而硬优化则是操作服务器硬件及参数设置. 1.软优化 1)查询语句优化 首先我们可以用EXPLAIN或DESCR ...

  3. redis 服务器开放给其他电脑连接

    1.云服务器的端口6379开通 2.宝塔服务器上的6379开通 3.修改服务器上的redis配置文件: # bind 127.0.0.1 注释掉daemonize no 改为noprotected-m ...

  4. docker登录报错Error response from daemon: Get https://192.168.30.10/v1/users/: dial tcp 192.168.30.10:443: connect: connection refused

    背景描述: 登录docker报错: [root@localhost sysconfig]# docker login 192.168.30.10 Username (newcs06): newcs06 ...

  5. Python3基础 函数 无return、return 空或None 的效果相同

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  6. 001-mac搭建Python开发环境、Anaconda、zsh兼容

    一.概述 mac下搭建python环境推荐使用Anaconda+Pycharm. 1.1.Anaconda Anaconda是一个免费开源的Python和R语言的发行版本,用于计算科学(数据科学.机器 ...

  7. TypeScript 菜鸟教程

    非常好的Js教程,web api,canvas API教程 https://wangdoc.com/ 语法基础 https://www.runoob.com/typescript/ts-install ...

  8. JIT(just in time)即时编译器

    JIT(just in time) 前端vs后端 在编译原理中,通常将编译分为前端和后端.其中前端会对程序进行词法分析.语法分析.语义分析,然后生成一个中间表达形式(称为IR:Intermediate ...

  9. Kubernetes 配置管理 ConfigMap(十二)

    目录 一.背景 二.创建 ConfigMap 2.1.通过 --from-literal 2.2.通过 --from-file 2.3.通过--from-env-file 2.4.YAML 配置文件 ...

  10. mysql查询之 用户行程的取消率,人流量高峰时段

    1.用户行程的取消率 Trips 表中存所有出租车的行程信息.每段行程有唯一键 Id,Client_Id 和 Driver_Id 是 Users 表中 Users_Id 的外键.Status 是枚举类 ...