一、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; }
供各位同仁參考,歡迎各位同仁提出不同意見和建議。