Java Web 三层架构案例 信息管理系统
三层架构:
与MVC设计模式的目标一致:都是为了解耦合,提高代码复用
区别:二者对于项目理解的角度不同。想看我写的 MVC模式 案例的点击此处。
组成:
-
表示层(view 视图层):
前台:界面的显示、和用户交互;jsp、js、html;
代码位置:WebContent
后台:控制跳转,调用业务逻辑层;servlet;
代码位置:xxx.servlet -
业务逻辑层(Service 层):
接收表示层的请求;
组装数据访问层(带有逻辑的增删改查,如:删 = 查 + 删)
代码位置: xxx.service(也有xxx.manager, xx.bll) -
数据访问层(Data Access Layer,Dao层):
直接访问数据库的操作,原子性(增删改查)
代码位置: xxx.dao -
一张图形象展示:
ThreeTireSample 案例分析:
本案例中我们以学生信息管理系统为例,进行详细分析。通过对这个案例的复盘,我觉得将来的任何管理系统也没有大问题了,无非就是这些操作嘛!这个过程中要注意我们写代码的顺序。
Entity层的实现:
先写实体类,我们放在 xxx.xxx.entity包下。实体类中我们写的是学生信息,先写学生的属性,之后当然是一键生成 Get 和 Set 方法,以及生成构造方法。建议多写两种构造方法如下图:
Dao层的实现:
写 Dao 层,在这里将我们要对系统进行的操作都写出来。建议面向接口开发:先写接口再写实现类:
见名知意,这几个操作分别是:
- 根据学号查询是否存在
- 根据学号查询某一学生
- 根据学生信息向数据库中添加学生
- 无需参数查询到所有学生,以集合返回
- 根据学号删除某一学生
- 根据学号和新信息,对学生信息进行更新
在 DaoImp 层,写了它们的实现,这些实现无非就是 与数据库建立连接和驱动,写 SQL 语句,填入参数进行修改,执行操作后判断并且返回。一个例子:
其实在这一部分,我对操作数据库的代码还没有达到牢记于心,还有对于 try catch finally 块的原理还没搞清楚。
Service 层的实现:
写完这里,我们的最底层功能就实现了。我们再看那张层次分析图,与上边的分析图结合。此时,数据访问层里原子性的增、删、改、查已经写完了,提供了很多功能组合供上层使用。
接下来我们就写逻辑层的代码,位于包 xx.xx.service 中。
- 增加学生逻辑:先判断学生是否存在,不存在的话增加学生,返回布尔值。
- 删除学生,判断学生是否存在,存在的话即可删除,返回布尔值。
- 对学生进行修改,返回布尔值。
- 根据学号查询某个学生,返回学生实体。
- 查询所有学生,返回一个集合。
表示层后台 Servlet的实现:
这里也就是一些逻辑性的操作了,与前台和业务逻辑层进行交互,并且要结合前台代码。我们建议一个 Servlet 对应一个功能,比如 增加的 Servlet,删除的 Servlet,查询的 Servlet等等。
写法:设置响应编码防止乱码;判断这一方法需要哪些参数;这些参数从哪儿来,要放到 Service 的哪个方法去······
如图:QueryAllServlet,设置响应编码,将需要的参数返回给前端。
表示层前台 Jsp 的实现:
我们同样配合 QueryAllServlet,展示一下 index.jsp 的代码。
其实就是将得到的集合进行遍历输出!
页面效果展示(基本上没有前端美化):
基本上没写前端美化,但是功能详尽。页面大家凑合着看,属是有点丑
简单介绍一下功能,需要的朋友我会分享代码。
点击某人的学号进行信息修改,除了学号其他信息都可以修改。
其实有了这个案例,信息管理系统基本就没问题了,大家可以按照自己的需求增加实体类的属性。
此外,在将 Eclipse 代码导入到 idea 时,遇到了很多问题,这里有一篇博客解决了我的困扰。大家可以 mark 起来,以备不时之需。
我会将这次的代码上传到****,免费下载。进入我的主页即可看到我上传的资源。如果官方强行收费可以私我获取。ThreeTireSample.zip
说在最后的话:编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~