JAVAEE企业级应用开发浅谈第一辑
不积跬步无以至千里,不积小流无以成江海
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 世界有一个专有名词-三层架构,简图如下:

通过以上分析可以看出:
处理登录的过程 通过三层架构思想来进行代码编写,思路就很清晰明了啦
- 界面层(View) 即登录表单页面jsp
- 业务逻辑处理
登录servlet
2.1 接收登录参数
2.2 调用service 处理层相关处理方法并接收处理结果
2.3 控制登录结果视图转发
Service
用户名、密码参数校验
用户记录查询 并校验用户记录存在
密码加密匹配
返回登录结果模型数据
- 数据访问层
Dao 层
借助jdbc 实现数据访问操作
写到这里,想必大家对三层架构的理解应该很明确了,那么它与MVC 思想到底有什么关联呢,后续将会为大家继续呈上,敬请关注上海尚学堂java。
JAVAEE企业级应用开发浅谈第一辑的更多相关文章
- JAVAEE企业级应用开发浅谈第二辑:MVC和三层架构
上海尚学堂警句:一份信心,一份努力,一份成功:十分信心,十分努力,十分成功. Step1.情景概要 Hello,小伙伴们,昨天跟大家分享了JAVA EE 企业级应用开发中大家耳熟能详的概念-三层架构, ...
- JAVAEE企业级应用开发浅谈之MVC 中的V-VIEW视图
Step1.情景概要 Hello,小伙伴们,好久不见,之前跟大家分享了三层架构与MVC思想,相信大家对于这两块内容有了相对清晰的个人认识了,既然我们讲到了MVC,这里我们接着这块内容继续往下深入,今天 ...
- Android开发-浅谈架构(二)
写在前面的话 我记得有一期罗胖的<罗辑思维>中他提到 我们在这个碎片化 充满焦虑的时代该怎么学习--用30%的时间 了解70%该领域的知识然后迅速转移芳草鲜美的地方 像游牧民族那样.原话应 ...
- Python测试开发-浅谈如何自动化生成测试脚本
Python测试开发-浅谈如何自动化生成测试脚本 原创: fin 测试开发社区 前天 阅读文本大概需要 6.66 分钟. 一 .接口列表展示,并选择 在右边,点击选择要关联的接口,区分是否要登录, ...
- springboot开发浅谈 2021/05/11
学习了这么久,本人希望有时间能分享一下,这才写下这篇浅谈,谈谈软件,散散心情. 这是本人的博客园账号,欢迎关注,一起学习. 一开始学习springboot,看了好多网站,搜了好多课程.零零落落学了一些 ...
- J1001.Java原生桌面及Web开发浅谈
自从Java问世以来,在服务端开发方面取得了巨大的发展.但是在桌面/Web开发方面,一直没有得到大的发展.从最初的AWT,到Swing,再到JavaFX,Java从来没有在桌面/Web解决方案中取得重 ...
- Delphi 组件渐进开发浅谈(一)——由简入繁
最近业余时间在写游戏修改器玩,对于Delphi自带的组件总觉得差强人意,需要书写大量冗余代码,如果大量使用第三方组件,在以后的移植和与他人交互时也不是很方便,因此便产生了自己封装组件的想法. 实际上这 ...
- .NET项目开发—浅谈面向对象的纵横向关系、多态入口,单元测试(项目小结)
阅读目录: 1.开篇介绍 2.使用委托消除函数串联调用 2.1.使用委托工厂转换两个独立层面的对象 3.多态入口(面向对象继承体系是可被扩展的) 4.多态的受保护方法的单元测试(Protected成员 ...
- .NET项目开发—浅谈面向接口编程、可测试性、单元测试、迭代重构(项目小结)
阅读目录: 1.开篇介绍 2.迭代测试.重构(强制性面向接口编程,要求代码具有可测试性) 2.1.面向接口编程的两个设计误区 2.1.1.接口的依赖倒置 2.1.2.接口对实体的抽象 2.2.迭代单元 ...
随机推荐
- JS中的事件&对象
一.JS中的事件 (一)JS中的事件分类 1.鼠标事件 click/dblclick/onmouseover/onmouseout 2.HTML事件 onload/onscroll/onsubmit/ ...
- 【2017集美大学1412软工实践_助教博客】团队作业4——第一次项目冲刺(Alpha版本)小组 成绩
第四次团队作业成绩公布 题目 团队作业4: http://www.cnblogs.com/happyzm/p/6722264.html 团队成绩 成绩公示如下: 检查项 会议内容 代码签入 心得体会或 ...
- Swing-JTable用法-入门
注:本文为学习笔记,原文为How to Use Tables,本文所有素材与代码均源于原文,可能会有部分更改. JTable是Swing中的表格控件,它的外观如下所示: 没错,excel或者acces ...
- java课程设计--WeTalk(201521123076)
在线群聊系统 1,团队课程设计博客链接 http://www.cnblogs.com/slickghost/p/7018105.html 个人负责模块或任务说明 负责模块:总体设计及主要聊天功能实现 ...
- 201521123076《java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...
- 【干货篇】步步为营,带你轻松掌握jQuery!
写在前面:经过系统的学习了原生JS之后,会发现其具有以下三个特点: 1.是一种解释性脚本语言(代码不进行预编译). 2.主要用来向 HTML 页面添加交互行为. 3.可以直接嵌入 HTML 页面,但写 ...
- APUE 3 -- 信号 (signal)<II>: 可靠信号
一个事件可以事一个信号发送给一个进程,这个事件可以是硬件异常,可以是软件条件触发,可以是终端产生信号,也可以是一个kill函数调用.当信号产生后,内核通常会在进程表中设置某种形式的标志(flag).我 ...
- Apache Spark 2.2.0 中文文档 - Spark Streaming 编程指南 | ApacheCN
Spark Streaming 编程指南 概述 一个入门示例 基础概念 依赖 初始化 StreamingContext Discretized Streams (DStreams)(离散化流) Inp ...
- 快速搞定用Vue+Webpack搭建前端项目(学习好久了,该写点东西了......)
现在开始安装环境 一.安装node.js 首先要安装node.js,去nodejs官网下载即可,地址:http://nodejs.cn/中文网. 安装完成后,打开终端(windows键+R)搜索cmd ...
- cnblogs第一天
2017-08-25 21:27:16 今天算是真的下定决心要好好的去经营自己的博客了. flag也就不立了,毕竟,flag这种东西立了就是为了打脸的嘛....... 既然说是经营了,那必然是要认认真 ...