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.迭代单元 ...
随机推荐
- 老板让我们去陪睡!-It高管的焦虑
老板是我非常敬重的前领导之一,他的一些管理风格,也影响了后来我对技术团队的管理.就是这样一个非常令人尊敬的领导,为什么会有这么过分的要求,请允许我先卖个关子,接下来就会知道. 理想企业 什么是程序员理 ...
- 201521123040《Java程序设计》第8周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4-1) 1.1 实验总结 我们每次删除元 ...
- 201521123062 《Java程序设计》第3周学习总结
1.本周学习总结 二.书面作业 Q1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; pu ...
- 201521123007《Java程序设计》第10周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 补充上周异常 异常堆栈追踪:获得异常发生的根源 创建自己的异常 自定义异常类不是由Java系统监测到的异常, ...
- 201521123045java课程设计---定时器
#课程设计--定时器(201521123045 郑子熙) 1.团队课程设计博客链接 http://www.cnblogs.com/chendajia/p/7065730.html 2.个人负责模块或任 ...
- 201521123101 《Java程序设计》第10周学习总结
1.本周学习总结 2.书面作业 1.finally,题目4-2 1.1 截图你的提交结果(出现学号) 1.2 4-2中finally中捕获异常需要注意什么? finally不管是否捕获到异常,始终会被 ...
- 猴子吃桃问题(南阳ACM324)
猴子吃桃问题 时间限制:3000 ms | 内存限制:65535 KB 难度:0 描述 有一堆桃子不知数目,猴子第一天吃掉一半,又多吃了一个,第二天照此方法,吃掉剩下桃子的一半又多一个,天天如此, ...
- Class类与Java反射
1反射机制是什么 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为jav ...
- Mysql免安装版配置【图文版和文字版】
图文版 配置环境变量 新建一个my.ini文件,添加下面内容 [mysqld] basedir=C:\\software\Mysql\mysql-5.7.14-winx64 datadir=C:\\s ...
- linux(2)文件和目录管理(新增,删除,复制,移动,文件和目录权限,文件查找)
一.目录与路径 1.相对路径与绝对路径绝对路径:/开头, cd /usr相对路径:cd ../..2.目录操作(cd:change directory).:当前目录..:上一层目录-:上一个目录~:当 ...