不积跬步无以至千里,不积小流无以成江海

Step1.情景概要

作为一个JAVA WEB 开发人员,在开发web 项目时项目大家都有自己的一些新的体会,对于web 开发出现的一些比较经典的名词大家都会有所了解,今天我们就来聊聊JAVA WEB 开发中的三层架构与MVC。

Step2.编程思维的转变

回想个人在JAVA WEB学习阶段,MVC思想没有建立之前,个人在实现网站用户登录功能的痛苦经历时,还是颇有感想,当时的实现方式现在想来不得不佩服当时的这种勇气,将登录的数据访问层代码,登录业务逻辑处理的代码以及登录参数获取视图转发控制的代码全部柔和到了一个Servlet 中进行处理,当然功能实现上是没有任何问题的,能够实现用户登录的功能,这个流程画图描述下来如下:
   

 
        仔细思考整个登录过程代码实现,发现整个登录servlet 代码虽说实现了登录功能,但是代码处理上是显得相当臃肿,并且耦合度较大,servlet 中包含了参数接收,校验,jdbc 操作,用户存在性与密码匹配校验以及视图转发控制,这就相当于把servlet 变为了一个超级战士,所向披靡,无所不能,确实厉害不少!

        但是从开发的角度来说这种编码方式对于后续开发弊端也显得相当明显,比如后续想要加入登录时用户积分的计算(连续登录三天,五天等情况积分业务添加),查询数据时添加缓存处理等等其他新的业务,此时则不得不打开登录servlet代码,定位到指定代码块添加新的代码,然后测试,再发布,这样下来虽说功能能够实现,但代码的臃肿程度将变得越来越大,同时业务处理的代码变得越来越复杂,更加不便于后续代码维护,这种维护的工作量将是巨大的。

        接下来继续分析这个道理过程,仔细考虑当前登录代码,将登录代码拆分来看的话,分析如下:
 

   
通过上图可以看出 现在的代码结构就可以参照这个思路来拆分三块:
  Web 端:获取请求参数;
  Service 端:处理具体业务;
  Jdbc 端:使用jdbc 来实现数据库访问操作

Step3.三层思想建立分析

如此,登录代码结构分析图可调整为下图:


 
        通过上图可以看到:图例看似复杂,实际上已经将登录servlet 原始代码解耦出来,原来的代理servlet 不再是大而全的超能战士,而是将其职责进行了分离,原有的登录逻辑与jdbc 访问数据库操作代码进行职责分离,实现了代码功能解耦,同时方便了后续的代码维护操作,此时的代码变得相对清晰起来,体现了面向对象中高内聚,低耦合的思想,那这样的一种代码书写方式在java 世界有一个专有名词-三层架构,简图如下:
 


通过以上分析可以看出:
   处理登录的过程 通过三层架构思想来进行代码编写,思路就很清晰明了啦

  1. 界面层(View)  即登录表单页面jsp
  2. 业务逻辑处理

登录servlet
           2.1 接收登录参数
           2.2 调用service 处理层相关处理方法并接收处理结果
           2.3 控制登录结果视图转发
        Service 
           用户名、密码参数校验
           用户记录查询 并校验用户记录存在
           密码加密匹配
           返回登录结果模型数据

  1. 数据访问层

Dao 层
           借助jdbc 实现数据访问操作
写到这里,想必大家对三层架构的理解应该很明确了,那么它与MVC 思想到底有什么关联呢,后续将会为大家继续呈上,敬请关注上海尚学堂java

JAVAEE企业级应用开发浅谈第一辑的更多相关文章

  1. JAVAEE企业级应用开发浅谈第二辑:MVC和三层架构

    上海尚学堂警句:一份信心,一份努力,一份成功:十分信心,十分努力,十分成功. Step1.情景概要 Hello,小伙伴们,昨天跟大家分享了JAVA EE 企业级应用开发中大家耳熟能详的概念-三层架构, ...

  2. JAVAEE企业级应用开发浅谈之MVC 中的V-VIEW视图

    Step1.情景概要 Hello,小伙伴们,好久不见,之前跟大家分享了三层架构与MVC思想,相信大家对于这两块内容有了相对清晰的个人认识了,既然我们讲到了MVC,这里我们接着这块内容继续往下深入,今天 ...

  3. Android开发-浅谈架构(二)

    写在前面的话 我记得有一期罗胖的<罗辑思维>中他提到 我们在这个碎片化 充满焦虑的时代该怎么学习--用30%的时间 了解70%该领域的知识然后迅速转移芳草鲜美的地方 像游牧民族那样.原话应 ...

  4. Python测试开发-浅谈如何自动化生成测试脚本

    Python测试开发-浅谈如何自动化生成测试脚本 原创: fin  测试开发社区  前天 阅读文本大概需要 6.66 分钟. 一 .接口列表展示,并选择 在右边,点击选择要关联的接口,区分是否要登录, ...

  5. springboot开发浅谈 2021/05/11

    学习了这么久,本人希望有时间能分享一下,这才写下这篇浅谈,谈谈软件,散散心情. 这是本人的博客园账号,欢迎关注,一起学习. 一开始学习springboot,看了好多网站,搜了好多课程.零零落落学了一些 ...

  6. J1001.Java原生桌面及Web开发浅谈

    自从Java问世以来,在服务端开发方面取得了巨大的发展.但是在桌面/Web开发方面,一直没有得到大的发展.从最初的AWT,到Swing,再到JavaFX,Java从来没有在桌面/Web解决方案中取得重 ...

  7. Delphi 组件渐进开发浅谈(一)——由简入繁

    最近业余时间在写游戏修改器玩,对于Delphi自带的组件总觉得差强人意,需要书写大量冗余代码,如果大量使用第三方组件,在以后的移植和与他人交互时也不是很方便,因此便产生了自己封装组件的想法. 实际上这 ...

  8. .NET项目开发—浅谈面向对象的纵横向关系、多态入口,单元测试(项目小结)

    阅读目录: 1.开篇介绍 2.使用委托消除函数串联调用 2.1.使用委托工厂转换两个独立层面的对象 3.多态入口(面向对象继承体系是可被扩展的) 4.多态的受保护方法的单元测试(Protected成员 ...

  9. .NET项目开发—浅谈面向接口编程、可测试性、单元测试、迭代重构(项目小结)

    阅读目录: 1.开篇介绍 2.迭代测试.重构(强制性面向接口编程,要求代码具有可测试性) 2.1.面向接口编程的两个设计误区 2.1.1.接口的依赖倒置 2.1.2.接口对实体的抽象 2.2.迭代单元 ...

随机推荐

  1. IT经典书籍——Head First系列【推荐】

    Head First 系列书籍是由 O'Relly 出版社发行的一系列教育书籍,中文一般翻译为"深入浅出",它强调以特殊的方式排版,由大量的图片和有趣的内容组合构成,而达到非疲劳的 ...

  2. Java 多线程(一) 基础知识与概念

    多线程Multi-Thread 基础 线程概念 线程就是程序中单独顺序的流控制. 线程本身不能运行,它只能用于程序中. 说明:线程是程序内的顺序控制流,只能使用分配给程序的资源和环境. 进程 进程:执 ...

  3. 姑娘你大胆地往前走——答大二学生XCL之八问

    姑娘你大胆地往前走--答大二学生XCL之八问 以下问题的答案写给我家正在读大二的XCL. 写于 2017-9-13 晚 请问您是为什么选择了IT行业的? 与其说是我选择了行业,不如说是行业选择了我. ...

  4. 团队作业八——第二次团队冲刺(Beta版本)第4天

    团队作业八--第二次团队冲刺(Beta版本)第4天 一.每个人的工作 (1) 昨天已完成的工作 做一下用户注册的功能和登录功能. (2) 今天计划完成的工作 完成界面跳转 (3) 工作中遇到的困难 界 ...

  5. 团队作业4---第一次项目冲刺(ALpha)版本 第五天

    一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 a.完成所有基础功能 b.正在进行测试调试 四.困难与问题 1.根据测试需求功能,部分基础功能不能实现,性能不达标,后续已完成 ...

  6. 201521123070 《JAVA程序设计》第7周学习总结

    1. 本章学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 Q1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 源代码: pub ...

  7. Java第六周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  8. 201521123088 《Java程序设计》第1周学习总结

    第1周学习总结 1.本周学习总结本周我们正式开始了对一门新的编程语言java的学习.Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此J ...

  9. apache: eclipse的tomcatPluginV插件下载

    Sysdeo Eclipse Tomcat Launcher plugin Plugin features Support and contributions Download Installatio ...

  10. thymeleaf模板引擎调用java类中的方法(附源码)

    前言 <Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦> 由于开源了项目的缘故,很多使用了My Blog项目的朋友遇到问题也都会联系我去解决 ...