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