可单例开发、典型的教科书式的mvc构架----springmvc----day02(三)

6.5在springmvc.xml配置全局异常处理器
                <!-- 全局异常处理器 只要实现HandlerExceptionResolver接口就是全局异常处理器 -->
                <bean class="com.changemax.ssm.exception.CustomExceptionResolver"></bean>
            
            6.6异常测试
                在controller、service、dao中任意一处需要手动抛出异常。
                如果是程序中手动抛出的异常,在错误页面中显示自定义的异常信息,如果不是手动抛出异常说明是一个运行时异常,在错误页面只显示“未知错误”。

                在商品修改的controller方法中抛出异常:
                        // 商品修改页面显示
                        //    @RequestMapping("/editItems")
                            // 限制http的请求方法
                            @RequestMapping(value = "/editItems", method = { RequestMethod.GET, RequestMethod.POST })
                            // @@RequestParam里面指定request传入参数名称和形参进行形参绑定
                            // 通过required属性指定参数是否传入
                            // 通过defaultValue可以设置默认值,如果id参数没有传入,将默认值和形参绑定
                            public String editItems(Model model,
                                    @RequestParam(value = "id", required = true/* , defaultValue="" */) Integer items_id) throws Exception {

                                // 调用sevice根据商品id查询商品信息
                                ItemsCustom itemsCustom = itemsService.selectItemById(items_id);

                        //        ModelAndView modelAndView = new ModelAndView();
                        //
                        //        // 相当于resquest的setAttribute,在jsp页面中通过itemsList取数据
                        //        modelAndView.addObject("itemsCustom", itemsCustom);
                        //
                        //        // 指定视图
                        //        // 通过springmvc配置文件,可以省掉jsp路径的前缀和后缀
                        //        modelAndView.setViewName("items/editItems");
                                System.out.println(itemsCustom.toString());

                                model.addAttribute("itemsCustom", itemsCustom);

                                return "items/editItems";
                            }

                在service接口中抛出异常:
                    @Override
                    public ItemsCustom selectItemById(Integer id) throws Exception {
                        Items items = itemsMapper.selectByPrimaryKey(id);
                        // 通过ItemsMappCustom查询
                        ItemsCustom itemsCustom = new ItemsCustom();
                        BeanUtils.copyProperties(items, itemsCustom);
                        return itemsCustom;

                    }

                如果与业务功能相关的异常,建议在service中抛出异常。
                与业务功能没有关系的异常,建议在controller中抛出。

                上边的功能,建议在service中抛出异常。
 

posted @ 2018-12-25 16:20  CHANGEMAX  阅读(73)  评论(0编辑  收藏  举报