完成一个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

系统设置

皮肤更换

……

列表页列表显示数据

查询

……

表单页简单表单布局

复杂表单布局

各种表单控件在各种布局下的展示

信息展示页

文字与图片混合排版等

统计图表页

各类统计图表的展现与交互