Java SpringBoot Controller编写规范(待完善)


一、Controller创建

为了控制Controller的代码量,降低编码复杂度,提高代码可读性,应该按页面创建Controller。若单页面的逻辑复杂,还应进一步拆分到动作类型。例如新增、修改可以拆分。

示例如下:

 

二、Controller中页面访问方法ModelAndView

Controller中,主ModelAndView方法,应该放到类的最上方。

方法内,以声明ModelAndView开始,以返回ModelAndView结束。

接下来通过/**/多行注解方式,编写实现步骤。

在方法实现步骤后,采用捕获异常封装所有代码,保证处理过程所有bug,均可以被捕获和记录日志。

 

ModelAndView中应只有动作,无具体处理逻辑,处理逻辑放到业务逻辑层(服务层)实现或工具类中实现。

示例如下:

   /**
     * 规则列表页:所有对象规则聚合一起显示,用于部分药片规则逻辑,存在则显示不存在规则不显示
     * todo controller标准
     *
     * @param request
     * @return
     */
    @RequestMapping("/rule_list_all_object")
    public ModelAndView ruleListAllObject(HttpServletRequest request) {
        ModelAndView modelAndView = new ModelAndView("/rule/one_object/rule_list_all_object");

        /**
         * 1 获取输入get参数,过滤左右空格和非法字符。
         * 2 校验
         *  2.1 规则模块和当前管理维度必填,若未填写或内容错误,则抛出异常
         * 3 根据规则模块和管理维度显示页面
         *  3.1 根据规则模块,获取规则管理维度。若出现错误,则抛出异常。
         *  3.2 根据规则模块和当前管理维度,获取搜索条件。若出现错误,则抛出异常。
         *  3.3 根据规则模块和当前管理维度,获取显示列。若出现错误,则抛出异常。
         */

        try {
            // 1 获取输入get参数,过滤左右空格和非法字符。
            String module = request.getParameter("module") == null ? null : request.getParameter("module").trim();
            String curr_manage_index = request.getParameter("curr_manage_index") == null ? null : request.getParameter("curr_manage_index").trim();

            // 2 校验
            // 2.1 规则模块和当前管理维度必填,若未填写或内容错误,则抛出异常 todo 需要过滤非法字符
            if (module == null || module.equals("")) {
                //抛出异常
                String errorMsg = "参数错误:规则模块为空";
                log.error(errorMsg);
                throw new IllegalArgumentException(errorMsg);
            }

            if (curr_manage_index == null || curr_manage_index.equals("")) {
                //抛出异常
                String errorMsg = "参数错误:当前管理维度为空";
                log.error(errorMsg);
                throw new IllegalArgumentException(errorMsg);
            }

            //3 根据规则模块和管理维度显示页面
            //3.1 根据规则模块,获取规则管理维度。若出现错误,则抛出异常。
            List<ManageIndexModel> manage_index_list = oneObjectServiceImpl.getManageIndexList(module); //todo 提取到服务中
            //3.2 根据规则模块和当前管理维度,获取搜索条件。若出现错误,则抛出异常。
            List<SearchConditionModel> search_condition_list = oneObjectServiceImpl.getSearchConditionList(manage_index_list, curr_manage_index);//todo 提取到服务中
            //3.3 根据规则模块和当前管理维度,获取显示列。若出现错误,则抛出异常。
            List<ShowColumnModel> show_column_list = oneObjectServiceImpl.getShowColumnList(manage_index_list, curr_manage_index);//todo 提取到服务中

            modelAndView.addObject("module", module);
            modelAndView.addObject("curr_manage_index", curr_manage_index);
            modelAndView.addObject("manage_index_list", manage_index_list);
            modelAndView.addObject("search_condition_list", search_condition_list);
            modelAndView.addObject("show_column_list", show_column_list);
        } catch (Exception ex) {
            log.error("页面异常:" + ex.getMessage(), ex);
            throw ex;
        }

        return modelAndView;
    }

 

供各位同仁参考,欢迎各位同仁提出不同意见和建议。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM