完成一个crud类java项目的框架最小功能集
后端部分
MVC
基于Web的项目,MVC应该是其核心功能了。有以下问题需要解决:路由:
解决什么样的请求交给哪个后端处理单元处理的问题。
data binding:
解决把前端传来的数据(url path、字符串形式的键值对、Header中的信息、cookie中的信息等,必然是字符串)包装为Java可以使用的对象的问题。要实现的效果是,所有需求对于后端业务代码来讲都要是透明的,不要再有手动的转换过程。
一般的MVC框架都有比较清晰完善的解决方案,但有些边角的需求,需要注意怎样实现更为简便。例如如想传入的信息是三个student,每个student都有name、id两个属相,那怎样才能在后端业务代码中直接得到一个List?
模板引擎:
解决怎样把后端的处理结果转换为html页面显示给前端的问题。
首先解决转发给哪个模板,例如使用jsp作为模板引擎,后端处理单元就要做到可以控制跳转到哪个jsp文件。
其次是数据显示,后端处理单元处理所得到的数据要转化为字符串然后放到html中的相应位置上。需要注意的事如何能透明的对相应数据做格式化显示,如所有日期类信息都以yyyy-MM-dd的格式显示,不需要在任何逻辑控制单元中做手动转换
Ajax/Json:
越来越多的请求将以ajax的形式返回给前端。简单来说,需要解决的就是怎样把后端处理的结果透明的转换为Json数据的问题。MVC框架一般都有相应的解决方案,通过简单的声明就可以控制信息以Json形式返回。需要注意的是,Model如果不是纯粹的贫血模型,怎样控制每个字段(或get开头的函数)是否要转化为json发给前端。
DB
数据源管理
通过统一配置,方便的在程序的任何位置获取到数据源信息,以便于进行数据库操作。
事务管理
通过约定(每次http请求作为一次事务)或者声明式的方式进行事务管理,对逻辑代码透明。
ORM
Java Web世界中大部分的数据库操作代码都是针对某个Java模型的Crud,需要提供相应的方案进行操作。至少包括:主键查询
条件查询(分页)
插入
通过主键更新
通过主键删除
必要情况下,应支持对逻辑代码透明的插入、更新、删除时间记录,以及假删除操作。
batch
某段特定sql的执行,如初始化数据等。需要提供相应的工具类。
list
一般的项目都有无穷多的显示数据列表的功能,如果针对每个列表再去开发,工作量较大。最好用配置的方式统一支持。
框架级别功能
权限管理
对逻辑功能透明、操作级。
提供登录用户管理、操作鉴权等基本机制。
提供功能模块管理、用户管理、角色管理、角色权限管理等基本功能。
杂项工具
log
提供逻辑与物理相分离的日志记录工具。
DataUtils/StringUtils/……
项目中的各种Utils,一般找合适的开源库都能解决,没有必要重新发明一遍轮子。
前端部分
UI
基本框架
统一风格、字体字号、主页面结构(项目标题、logo)等。
页面载入中效果
UI部件alert、confirm、prompt……、
模态窗口(显示少量信息和显示完整页面
form控件:下拉列表、日期控件等……
消息显示(浮动出现自动消失、固定可手动关闭、固定不可手动关闭等)
……
登录页用户名密码输入
子系统选择
登录成功后跳转
登录失败后的提示、重新输入
通用功能个人profile
系统设置
皮肤更换
……
列表页列表显示数据
查询
……
表单页简单表单布局
复杂表单布局
各种表单控件在各种布局下的展示
信息展示页
文字与图片混合排版等
统计图表页
各类统计图表的展现与交互