一、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; }
供各位同仁参考,欢迎各位同仁提出不同意见和建议。