BLOG - 个人博文系统开发总结 一:概览

BLOG 是学习 JavaWeb 开发4个月以来的总结实践项目,使用了SSM(Spring、SpringMVC、MyBatis)框架,MVC 三层结构,Shiro 身份,权限管理,Lucene 全文检索引擎工具的个人博文系统。

GitHub地址:DuanJiaNing/BlogSystem

1. 开发环境

IDE:IntelliJ IDEA 2017.3 x64、Postman、navicat、Google Chrome
jdk版本:jdk1.8.0_45
MySQL版本:5.7.16-log
服务器:apache-tomcat-8.5.24

2. 项目结构

参考博文:手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis

项目结构
BLOG - 个人博文系统开发总结 一:概览_第1张图片
代码包结构
BLOG - 个人博文系统开发总结 一:概览_第2张图片

项目使用 SSM 框架,spring 的配置文件、mybatis 的映射文件、国际化资源、数据库文件以及项目的配置文件放置于 resources 目录中。

代码放置于 java 目录中,包分层包含 JavaWeb 项目基础包:entity、dao、dto、service、web,此外还有 util 工具包,枚举类包,异常类包、shiro 的 realm所在包,manager(类似于util包,但承当了比util更具针对性,与web.api耦合更紧密的一些功能)包。

2.1 service

业务层(service)根据用例参与者来进行划分,分为 audience(读者)、blogger(博主)、通用的 common 以及他们的实现(impl)。

2.2 web

web 层分为 api 和 blog 两层,api 层主要为 url 接口,每一个 url 请求都返回 json 数据,用于前端 javaScript 访问,不涉及页面跳转控制。blog 对应一个具体的网站应用,即BLOGBLOG使用了 api 包中提供的接口,同时依赖于其他的包。

2.3 dao

dao 层定义了 MyBatis 的数据库操控接口,在 resources/mapper 目录中存放了其对应的映射文件。

2.4 exception

exception 包中定义了所有的项目异常(错误信息),这些错误都是 RuntimeException,一些检查异常,如IOException也被转化为运行时异常,这样做使这些异常在繁杂的方法调用栈中可以不被吞噬,能够以简洁的方式抛到最上层,即 web 包中的类,由控制层(web层)决定如何处理这些异常,如对于 web.api 中抛出的错误信息,将会以 json 的方式将错误信息对应的代码以及错误的描述信息返回给API使用者。
参考了聚合API的设计。

3. 开发流程

项目开发流程参考javaee项目开发流程,开发过程将一些过程省略(毕竟这是一个人的项目)。

将项目的开发分为两大部分:后端API接口开发和网站开发。

3.1 后端 API 接口开发(web.api)

API开发的最终代码入口为 com.duan.blogos.web.api 包中的类,每一个类对应于一类数据的操控,不涉及页面跳转控制。api 的调用通过 url 的方式,url 的设计遵循 RESTful 风格。
参照:RESTful API 设计指南

这部分的开发占据了大量时间,在最终编写 api 包中类的代码前需完成数据库表的设计,dao、entity、service 以及其他辅助类的编写以及测试,后续的网站开发也依赖于其中一部分类。

例如:com.duan.blogos.web.api.BloggerLinkController#add 方法
其对应的url:/blogger/{bloggerId}/link,bloggerId指博主id
请求方式:POST
返回数据类型:JSON
请求参数:iconIdtitleurlbewrite
代码为:
BLOG - 个人博文系统开发总结 一:概览_第3张图片
对于 api 包中的每一个接口方法都有对应的文档说明。包含详尽的调用说明、返回参数说明以及错误代码说明。

详尽API文档见 BlogSystem-wiki

1.2 网站开发 (web.blog)

网页开发的最终代码放置于 com.duan.blogos.web.blog 包中,这些类(或类中的方法)直接与前端页面对应,相互依赖,控制跳转和数据传递。

网站截图

3. 用例图

3.1 读者用例

BLOG - 个人博文系统开发总结 一:概览_第4张图片

3.2 博主用例

BLOG - 个人博文系统开发总结 一:概览_第5张图片



—END—

你可能感兴趣的:(项目,ssm,个人博客系统,lucene,shiro,开源项目)