@RestController @RequestMapping("/seckill") public class SecKillController { Logger logger = LoggerFactory.getLogger(getClass()); @Autowired SecKillService secKillService; @RequestMapping(name = "/list",method = RequestMethod.GET) public String list(Model model){ List<SecKill> list = secKillService.getSecKillList(); model.addAttribute("list",list); return "list"; } @RequestMapping(value = "/{seckillId}/detail",method = RequestMethod.GET) public String detail(@PathVariable("seckillId") Long seckillId,Model model){ if(seckillId == null){ return "redirect:/seckill/list"; } SecKill secKill = secKillService.getById(seckillId); if(secKill==null){ return "redirect:/seckill/list"; } model.addAttribute("secKill",secKill); return "detail"; } @RequestMapping(value = "/{seckillId}/exposer" ,method = RequestMethod.POST ,produces = {"application/json;charset=UTF-8"}) @ResponseBody public SecKillResult<Exposer> exposer(Long seckillId){ SecKillResult<Exposer> result; try { Exposer exposer = secKillService.exportSecKillUrl(seckillId); result = new SecKillResult<Exposer>(true,exposer); }catch (Exception e){ logger.error(e.getMessage(),e); result = new SecKillResult<Exposer>(false,e.getMessage()); } return result; } @RequestMapping(value = "/{seckillId}/{md5}/execution" ,method = RequestMethod.POST ,produces = {"application/json;charset=UTF-8"}) @ResponseBody public SecKillResult<SecKillExecution> execute(@PathVariable("seckillId") Long seckillId ,@PathVariable("md5") String md5 ,@CookieValue(value = "killPhone",required = false) Long phone){ if(null==phone){ return new SecKillResult<SecKillExecution>(false,"未注册"); } //SecKillResult<SecKillExecution> result; try{ SecKillExecution secKillExecution = secKillService.executesSecKill(seckillId,phone,md5); return new SecKillResult<SecKillExecution>(true,secKillExecution); }catch(SecKillCloseException e){ SecKillExecution secKillExecution = new SecKillExecution(seckillId, SecKillStatEnum.END); return new SecKillResult<SecKillExecution>(false,secKillExecution); }catch (RepeatKillException e){ SecKillExecution secKillExecution = new SecKillExecution(seckillId, SecKillStatEnum.REPEAT_KILL); return new SecKillResult<SecKillExecution>(false,secKillExecution); } catch (Exception e){ logger.error(e.getMessage(),e); SecKillExecution secKillExecution = new SecKillExecution(seckillId, SecKillStatEnum.INNER_ERROR); return new SecKillResult<SecKillExecution>(false,secKillExecution); } } @RequestMapping(value = "/time/now",method = RequestMethod.GET,produces = {"application/json;charset=UTF-8"}) @ResponseBody public SecKillResult<Long> time(){ Date now = new Date(); return new SecKillResult<>(true,now.getTime()); } }
service中产生的异常catch住后抛出异常e1,e2后controller需要处理异常
秒杀controller接口
restful其实在弄的是dto
result=new....意思是初始化result
restful的url:
url:/模块/资源/{id}/细分
注解驱动 包扫描 视图解析器(前后缀配置)
produces={"application/json;charset=UTF-8"}
各种异常抛出的写法,很棒,多学习学习