controller方法的返回值
- 返回ModelAndView
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("itemsList",itemsList);
return modelAndView;
- 返回字符串
- 表示返回邏輯視圖[jsp路徑=前綴+邏輯視圖名+后綴]
return "items/editItems";
- redirect重定向
return "refirect:queryItems.action";
- forward頁(yè)面轉(zhuǎn)發(fā)
return "forward:queryItems.action";
- 返回void
在controller方法形參上定義request和response
@Controller 負(fù)責(zé)注冊(cè)一個(gè)bean
@RequestMapping 為控制器指定可以處理哪些 URL 請(qǐng)求
@RequestBody 用于讀取Request請(qǐng)求的body部分?jǐn)?shù)據(jù),使用系統(tǒng)默認(rèn)配置的HttpMessageConverter進(jìn)行解析,然后把相應(yīng)的數(shù)據(jù)綁定到要返回的對(duì)象上 ,再把HttpMessageConverter返回的對(duì)象數(shù)據(jù)綁定到 controller中方法的參數(shù)上
@ResponseBody 用于將Controller的方法返回的對(duì)象外傅,通過(guò)適當(dāng)?shù)腍ttpMessageConverter轉(zhuǎn)換為指定格式后鞭呕,寫(xiě)入到Response對(duì)象的body數(shù)據(jù)區(qū)
@ModelAttribute 在方法的入?yún)⑶笆褂?@ModelAttribute 注解:可以從隱含對(duì)象中獲取隱含的模型數(shù)據(jù)中獲取對(duì)象励饵,再將請(qǐng)求參數(shù)綁定到對(duì)象中有滑,再傳入入?yún)⒎椒ㄈ雲(yún)?duì)象添加到模型中
@RequestParam 可以把請(qǐng)求參數(shù)傳遞給請(qǐng)求方法
@PathVariable 綁定 URL 占位符到入?yún)?br> @ExceptionHandler 出現(xiàn)異常時(shí)會(huì)執(zhí)行該方法
@ControllerAdvice 使一個(gè)Contoller成為全局的異常處理類(lèi)逆害,類(lèi)中用@ExceptionHandler方法注解的方法可以處理所有Controller發(fā)生的異常
@RequestMapping
value: 指定請(qǐng)求的實(shí)際地址
method: 指定請(qǐng)求的method類(lèi)型晋南, GET惠猿、POST、PUT负间、DELETE等偶妖;
params: 指定request中必須包含某些參數(shù)值是,才讓該方法處理政溃。
headers: 指定request中必須包含某些指定的header值趾访,才能讓該方法處理請(qǐng)求。
@ModelAttribute
@ModelAttribute通常使用在Controller方法的參數(shù)注解中董虱,用于解釋model entity腹缩,但同時(shí),也可以放在方法注解里。
如果把@ModelAttribute放在方法的注解上時(shí)藏鹊,代表的是:該Controller的所有方法在調(diào)用前润讥,先執(zhí)行此@ModelAttribute方法。
@RequestParam
test(String name),如果沒(méi)有name 參數(shù)不會(huì)報(bào)錯(cuò)
test(@RequestParam String name),沒(méi)有name 參數(shù)會(huì)報(bào)錯(cuò),(也可以設(shè)置required = false)
test(@RequestParam("userName") String name)
第三種跟第二種的區(qū)別是 請(qǐng)求的參數(shù)名userName轉(zhuǎn)換成方法的參數(shù)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>