LifeCat系列Javaweb学习项目(一)
GitHub源码:https://github.com/kevinten10/lifecatweb
引言
LifeCat是一个Javaweb的项目,它的设计目标是智能化的儿童成长相册记录系统。主要业务有用户模块的管理,图像上传与图像展示,朋友圈动态的发表,使用机器学习的图像分类与图像管理等。
现阶段由五部分组成,基于STM32开发板的实体电子相册,配套的Android相册应用,以及主要部分Javaweb。
其中核心部分Javaweb分为三个模块:
1、version1为web服务网站的初级版本,使用基本的jsp+servlet+mysql搭建,前端使用基本的html+css+js组成,同时jsp中使用了JSTL标签,采用了bootstrap的样式库以及jquery库,实现了登录注册逻辑的处理,数据表的CRUD基本操作以及图片上传展示等基本功能。
访问文章:
2、version2为web服务网站对应的后台管理系统,后端使用了SSM(spring+springmvc+mybatis)框架,MySQL数据库结构和version1相同。前端对version1的jsp页面进行了改进,抛弃了jsp而全部使用html,使用js+jquery实现前端操作。html使用了组件化的理念,通过js动态的进行tap切换。同时使用Ajax发送请求。
访问文章:
3、version3为新版的web服务网站,在version1及version2的数据库结构上进行了改进,加入了如权限、评论等新模块,采用了前后端分离的理念,后端采用springboot搭建,同时采用了maven多模块化开发,项目进行了清晰的分层。前端采用vuejs搭建,实现了更美观的界面设计。
访问文章:
本文为version1 jsp+servlet+mysql实现基础版本:
访问链接
项目目录结构
@Web目录
- webapp
- include
- homePage.jsp
// 用户主页body内容部件 - footer.jsp
// 页脚部件 - header.jsp
// 页眉部件 - top.jsp
// 页面标题栏部件
- homePage.jsp
- include
-
- WEB-INF
- imageshow.jsp
// 用户图片展示界面 - imageshow2.jsp
// 用户分类图片展示界面 - updiary.jsp
// 上传日记 - upimage.jsp
// 上传图片 - userhome.jsp
// 用户主页
- imageshow.jsp
- WEB-INF
-
- index.jsp
// 登录/注册界面
- index.jsp
@Java目录
- src
- main.java.com.wang
- openfunc
// 开放接口层 :接收Android端HTTP请求, 并返回请求结果 - doo
// DO包 :对应于数据库表结构, POJO类型 - dto
// DTO包 :数据传输对象, 对应逻辑实体,采用构建者模式 或 工厂模式 - dao
// DAO协议层 :定义了DAO层的协议, 接口层, 通过态工厂获取 - daoimpl
// DAO实现层 :通过具体实现, 执行数据库交互, 本例中实现了jdbc形式 - manager
// Manager层 :DAO层的抽象逻辑操作,使用外观封装了DAO的操作,Manager层通过工厂获取 - filter
// Filter过滤器 :对所有请求执行Encoding过滤, 对*.do请求执行Form表单过滤 - form
// Form表单验证 :对相应表单执行过滤, 确保格式编码等, 返回Result - exfunc
// 外部接口 :通过java call shell方式, 调用本地python脚本, 执行机器学习操作 - controller
// Web层 :通过请求内容, 调用相应Service, 转发到Service并获取返回结果 - service
//Service层 :执行具体业务逻辑, 并且通过try-catch处理底层抛出异常, 传输DTO到表现层 - util
// 工具类 :包括时间类, 连接类, 图片写入操作, 主机配置等 - action // 安全目录WEB-INF转发机制
- constant
// 配置常量类 -> 使用properties文件进行配置 - observer
// 观察者,获取主题的信息 - subject
// 主题,监听网站流量和在线人数的变化
- openfunc
- test.java.com.wang
- Test
// 单元测试
- Test
- main.java.com.wang
@应用分层
- 上层依赖于下层
- 箭头关系表示可直接依赖
-
- 1.开放接口层: (openfunc包)
- 可直接封装Service方法暴露成RPC接口;
- 通过web封装成HTTP接口, 可进行远程调用
- 1.开放接口层: (openfunc包)
-
- 1.终端显示层: (web包)
- MVC-表现层: 模板渲染层, 主要是JSP渲染
- 1.终端显示层: (web包)
-
- 2.Web层: (controller包-ActionServlet)
- MVC-控制器层: 负责转发请求
- 对访问控制进行转发, 对各类基本参数校验
- 2.Web层: (controller包-ActionServlet)
-
- 3.Service层: (service包-接口)
- MVC-模型层: 处理抽象业务逻辑, 具体的业务逻辑服务层
- 对request对象进行处理和转发
- 3.Service层: (service包-接口)
-
- 4.Manager层: (manager包-接口)
- DAO逻辑层, 接收DO对象, 调用DAO层对DO执行具体操作
- 对service层的下沉处理: 抽象业务逻辑->抽象DAO逻辑
- 4.Manager层: (manager包-接口)
-
- 5.DAO层: (dao包-接口)
- 对Manager层的下沉处理: 抽象DAO逻辑->具体DAO操作
- DAOImpl层为具体实现类, 执行具体jdbc操作, 进行数据库交互
- 5.DAO层: (dao包-接口)
-
- 6.外部接口层: (exfunc包)
- 调用外部python接口, 实现机器学习的操作
- 6.外部接口层: (exfunc包)
-
- 以上调用的返回类型 Result接口
@请求流程分析
环境部署
文档目录
界面展示
四、项目源码
项目中标注了大量的注解,其实是比较容易读的,基本都覆盖了,若出错则认真查看日志,找到相关内容修改即可
GitHub:https://github.com/kevinten10/lifecatweb
相应的version2项目:
文章: https://zhuanlan.zhihu.com/p/41185446
GitHub: https://github.com/kevinten10/SSM-lifecat
相应的version3项目:
文章: SpringBoot搭建JavaWeb后端-Version3
GitHub: https://github.com/kevinten10/springboot-lifecat