controller方法的返回值
- 返回ModelAndView
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("itemsList",itemsList);
return modelAndView;
- 返回字符串
- 表示返回邏輯視圖[jsp路徑=前綴+邏輯視圖名+后綴]
return "items/editItems";
- redirect重定向
return "refirect:queryItems.action";
- forward頁面轉發(fā)
return "forward:queryItems.action";
- 返回void
在controller方法形參上定義request和response
@Controller 負責注冊一個bean
@RequestMapping 為控制器指定可以處理哪些 URL 請求
@RequestBody 用于讀取Request請求的body部分數據,使用系統(tǒng)默認配置的HttpMessageConverter進行解析,然后把相應的數據綁定到要返回的對象上 ,再把HttpMessageConverter返回的對象數據綁定到 controller中方法的參數上
@ResponseBody 用于將Controller的方法返回的對象,通過適當的HttpMessageConverter轉換為指定格式后,寫入到Response對象的body數據區(qū)
@ModelAttribute 在方法的入參前使用 @ModelAttribute 注解:可以從隱含對象中獲取隱含的模型數據中獲取對象,再將請求參數綁定到對象中,再傳入入參將方法入參對象添加到模型中
@RequestParam 可以把請求參數傳遞給請求方法
@PathVariable 綁定 URL 占位符到入參
@ExceptionHandler 出現異常時會執(zhí)行該方法
@ControllerAdvice 使一個Contoller成為全局的異常處理類,類中用@ExceptionHandler方法注解的方法可以處理所有Controller發(fā)生的異常
@RequestMapping
value: 指定請求的實際地址
method: 指定請求的method類型, GET、POST、PUT、DELETE等;
params: 指定request中必須包含某些參數值是,才讓該方法處理。
headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請求。
@ModelAttribute
@ModelAttribute通常使用在Controller方法的參數注解中,用于解釋model entity,但同時,也可以放在方法注解里。
如果把@ModelAttribute放在方法的注解上時,代表的是:該Controller的所有方法在調用前,先執(zhí)行此@ModelAttribute方法。
@RequestParam
test(String name),如果沒有name 參數不會報錯
test(@RequestParam String name),沒有name 參數會報錯,(也可以設置required = false)
test(@RequestParam("userName") String name)
第三種跟第二種的區(qū)別是 請求的參數名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>