实现了一套学生住宿管理系统。此管理系统被设计成一个采用B/S架构的Web应用程序,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。由于数据库存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。此系统具有运行速度快、安全性高、稳定性好的优点,并且具备完善的人机交互、信息修改功能,能够快速的查询到所需要的学生住宿信息。
文章图片
文章图片
文章图片
{@Override
public boolean supports(MethodParameter returnType, @NonNull Class extends HttpMessageConverter>> aClass) {
// 如果接口返回的类型已经是LayuiResult,则无需转换
val returnTypeName = returnType.getGenericParameterType().getTypeName();
val layuiResultTypeName = LayuiResult.class.getTypeName();
return !returnTypeName.startsWith(layuiResultTypeName);
// 前者包含泛型信息,后者不包含,所以用startsWith而不是equals
}// String =>beforeBodyWrite(包装成LayuiResult,手动转json) => String;
// 其它 =>beforeBodyWrite(包装成LayuiResult) => LayuiResult => springMVC自动转json => String;
@Override
public Object beforeBodyWrite(Object data, @NonNull MethodParameter returnType, @NonNull MediaType mediaType, @NonNull Class extends HttpMessageConverter>> aClass, @NonNull ServerHttpRequest serverHttpRequest, @NonNull ServerHttpResponse serverHttpResponse) {
// 如果controller层中返回的类型是String,那么springMVC在选择处理MessageConverter时会选择StringMessageConverter。
// 问题在于StringMessageConverter只接受String类型,不能处理包装后的LayuiResult类型,所以要转成json字符串作为返回值
if (data instanceof String) {
// String类型
val objectMapper = new ObjectMapper();
try {
// 将数据包装在LayuiResult里后,再转换为json字符串响应给前端
val result = new LayuiResult<>(LayuiResult.ResultCode.SUCCESS, null, Collections.singletonList((String) data));
return objectMapper.writeValueAsString(result);
} catch (JsonProcessingException e) {
throw new ApiException();
}
} else if (data instanceof Page) {
// Page类型
return new LayuiResult<>((Page>) data);
} else {
// 其它的对象类型
List
文章图片
【源码|第11期学生住宿管理系统+程序设计文档】微信搜:猿码仓库
推荐阅读
- 源码|个人博客系统+源码
- 面试题|分布式事务面试题 (史上最全、持续更新、吐血推荐)
- 杂谈|eclipse使用小技巧
- 框架|用eclipse开发工具,maven进行包管理,整合SSH框架
- 2月券商App行情刷新及交易体验报告,东方与安信升至领导者象限
- 编程语言|程序员毕业两年,三年工作经验是怎么来的( | 每日趣闻)
- java|java跳出循环break;return;continue使用
- JAVA|spring事务失效的原因
- Spring|BeanFactory和ApplicationContext有什么区别