Springmvc的请求注解可分为四类:
url请求地址(PathVariable)、
head请求头(RequestHeader、CookieValue)、
body请求体(RequestParam、RequestBody)、
请求类型(ModelAttribute、SeesionAttribute)、
异常处理(ControllerAdvice、ExceptionHandler)
1.注解@ModelAttribute
作用:返回响应数据到页面渲染。
@Controller public class Hello2ModelController { @ModelAttribute public User populateModel() { User user=new User(); user.setAccount("ray"); return user; } @RequestMapping(value = "/helloWorld2") public String helloWorld() { return "helloWorld.jsp"; } }
被ModelAttribute注解的方法,在执行本类的其他方法前都会先去执行该方法,所以这个大多在父类中使用,比如baseController。
2.注解@PathVariable
作用:讲ur中的参数放到方法中。
/** * localhost:8080/springmvc/hello/pathVariable/bigsea * localhost:8080/springmvc/hello/pathVariable/sea * 这些URL 都会 执行此方法 并且将 <b>bigsea</b>、<b>sea</b> 作为参数 传递到name字段 * @param name * @return */ @RequestMapping("/pathVariable/{name}") public String pathVariable(@PathVariable("name")String name){ System.out.println("hello "+name); return "helloworld"; }
3.注解@requestMapping
处理请求地址映射
4.注解@SessionAttributes
springmvc有个ModelMap用来返回数据到页面的,但是这些数据是request级别的,就是说下次再请求,这些数据就不在了,为了下次请求还能用到这些数据,可以用SessionAttributes(value=“test”),将数据存到session中,这样下次还能用,用完想要从session清除的话可以使用SessionStatus.
@Controller @RequestMapping("/Demo.do") @SessionAttributes(value={"attr1","attr2"}) public class Demo { @RequestMapping(params="method=index") public ModelAndView index() { ModelAndView mav = new ModelAndView("index.jsp"); mav.addObject("attr1", "attr1Value"); mav.addObject("attr2", "attr2Value"); return mav; } @RequestMapping(params="method=index2") public ModelAndView index2(@ModelAttribute("attr1")String attr1, @ModelAttribute("attr2")String attr2) { ModelAndView mav = new ModelAndView("success.jsp"); return mav; } }
@RequestMapping(params="method=index3") public ModelAndView index4(SessionStatus status) { ModelAndView mav = new ModelAndView("success.jsp"); status.setComplete(); return mav; }
5.ResponseBody
返回请求体,异步加载的时候使用。