框架之SpringMVC注解
controller方法的返回值
- 返回ModelAndView
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("itemsList",itemsList);
return modelAndView;
- 返回字符串
- 表示返回逻辑视图[jsp路径=前缀+逻辑视图名+后缀]
return "items/editItems";
- redirect重定向
return "refirect:queryItems.action";
- forward页面转发
return "forward:queryItems.action";
- 返回void
在controller方法形参上定义request和response
@Controller 负责注册一个bean
@RequestMapping 为控制器指定可以处理哪些 URL 请求
@RequestBody 用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上
@ResponseBody 用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区
@ModelAttribute 在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数绑定到对象中,再传入入参将方法入参对象添加到模型中
@RequestParam 可以把请求参数传递给请求方法
@PathVariable 绑定 URL 占位符到入参
@ExceptionHandler 出现异常时会执行该方法
@ControllerAdvice 使一个Contoller成为全局的异常处理类,类中用@ExceptionHandler方法注解的方法可以处理所有Controller发生的异常
@RequestMapping
value: 指定请求的实际地址
method: 指定请求的method类型, GET、POST、PUT、DELETE等;
params: 指定request中必须包含某些参数值是,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
@ModelAttribute
@ModelAttribute通常使用在Controller方法的参数注解中,用于解释model entity,但同时,也可以放在方法注解里。
如果把@ModelAttribute放在方法的注解上时,代表的是:该Controller的所有方法在调用前,先执行此@ModelAttribute方法。
@RequestParam
test(String name),如果没有name 参数不会报错
test(@RequestParam String name),没有name 参数会报错,(也可以设置required = false)
test(@RequestParam("userName") String name)
第三种跟第二种的区别是 请求的参数名userName转换成方法的参数name
全局异常1:
@ControllerAdvice
public class testControllerAdvice {
@ExceptionHandler
public ModelAndView exceptionHandler(Exception ex){
ModelAndView mv = new ModelAndView("error");
mv.addObject("exception", ex);
System.out.println("in testControllerAdvice");
return mv;
}
}
全局异常2:
<!-- configure SimpleMappingExceptionResolver -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.ArithmeticException">error</prop>
</props>
</property>
</bean>