第11期学生住宿管理系统+程序设计文档

实现了一套学生住宿管理系统。此管理系统被设计成一个采用B/S架构的Web应用程序,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。由于数据库存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。此系统具有运行速度快、安全性高、稳定性好的优点,并且具备完善的人机交互、信息修改功能,能够快速的查询到所需要的学生住宿信息。

第11期学生住宿管理系统+程序设计文档_第1张图片
第11期学生住宿管理系统+程序设计文档_第2张图片
第11期学生住宿管理系统+程序设计文档_第3张图片

{

    @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<Object> objectList;
            if (data == null) {
                objectList = Collections.emptyList();
            } else {
                objectList = Collections.singletonList(data);
            }
            return new LayuiResult<>(LayuiResult.ResultCode.SUCCESS, null, objectList);
        }
    }
}

第11期学生住宿管理系统+程序设计文档_第4张图片

微信搜:猿码仓库

你可能感兴趣的:(源码,java,spring,5)