整个项目都已经上传到github-mmgallery上,供有需要的读者使用,主要文件来自于csdn,区别是csdn中的项目数据存储在MySQL中,本项目数据存储在Xml文件中。课件和学习视频课程来自MK网 Java工程师2020第二阶段。
1.MVC架构模式
早期代码:显示与代码耦合,一个页码中既有html网页,也有Java代码,代码混乱且可读性差
int max=Integer.parseInt()
%>
Model View Controller
显示与代码解耦,各司其职
模型Model:负责生产业务需要的数据,即具体的业务逻辑,功能类默认以**Service.java命名。
控制器是视图与模型的中介(粘合剂)
视图(View) 用于展示最终结果
MVC优点:
软件团队分工合作,成员各司其职
分层开发,显示与数据解耦,便于维护
组件可灵活替代,互不影响
2.项目代码结构
2.1 工程结构与开发规约
工程结构
包结构
MVC调用关系
2.2 JavaBean
一种Java中可重用组件,是一种Java类的格式要求,通常用于存储数据
格式要求:
public类,并提供默认构造函数;
所有属性private私有化
属性通过getter与setter方法读写
3.实现思路
开发PaintingDao读取xml数据,实现分页操作;
开发PaintingService服务类,调用PaintingDao;
开发PaintingController控制器,调用PaintingService,同时分发请求,响应
重写index.html,利用jsp技术读取分页
4.编写
4.1 创建工程
本工程的数据以xml文件存储,而不是数据库
4.2 开发XmlDataSource 获取XML路径
Dao与XML的中介
4.3 分页思路
分页有两个类:XmlDataSource.java 和 PageModel.java 加一个JavaBean Painting.java。XmlDataSource.java读取XML,得到 存储Painting对象的List 的 data ,(使用了一个getRawData的静态方法)。PageModel获取 data 并
获取 page(页号) 和 rows(每页记录数)参数 得到 关键的 当前页面数据List pageData 。PaintingDao 是整合两个类形成一个数据接口,关键是一个分页函数pagination:
public PageModel pagination(int page, int rows) {
List list = XmlDataSource.getRawData();
PageModel pageModel = new PageModel(list,page,rows);
return pageModel;
}
PaintingService重写 pagination 直接调用的Dao的分页函数,只是进行一定的参数判断,避免一些异常
public PageModel pagination(int page, int rows, String...category) {
if(rows == 0) {
throw new RuntimeException("无效的rows参数");
<