@requestParam
此注解出于String-mvc框架中
在框架中使用注解驅(qū)動的時候注意要在對應(yīng)的.xml文件中打開注解掃描器.新手坑
注解驅(qū)動聲名:<context:component-scan base-package="com.zyh.string.service"/>
@requestParam注解主要用于接收前端傳來的參數(shù),注解中有兩個屬性:required(必要的)默認required=true:意思為requestParam中聲名的參數(shù)必須要存在,這是一個我必須要的值,如果沒有接收到這個參數(shù)的話系統(tǒng)會報400錯誤,若是required=flase則是表明當前參數(shù)我就算沒有接收到也沒關(guān)系,會給當前參數(shù)一個null.
@requestParam中的另外一個屬性defaultValue:默認值,給當前參數(shù)一個默認值,若是前端沒傳我需要的這個參數(shù),或者是前后端參數(shù)名不一致,但是我又必須要一個值的話就可以由defaultValue給一個默認值
public String testRequestParam(@RequestParam(value="name") String username)
{
System.out.println("執(zhí)行了...");? ? ? ? System.out.println(username);? ? ? ? return "success";
}
雞肋處:直接在( )中可以直接聲名參數(shù)名字? eg:(string userId),參數(shù)類型? : 前端對應(yīng)的參數(shù)名字
@Controller
使用在控制層,把當前類對象交給容器去實現(xiàn)
@requestMapping
使用在類前或者方法前面,注意一個controller并非就是一個servlet,實際上一個被加上@controller類的方法就是一個service(),用來處理請求.
@requestMapping("/user")用在class上則需要先進這個user在進入標注在方法上面的@requestMapping("/method1").
重點來了:自動裝配,在使用參數(shù)傳遞中我們不可能只獲取到簡單類型的參數(shù)那么若是得到復(fù)雜類型的參數(shù)那么我們該怎么做呢?
@requestBody
當前端傳了json數(shù)據(jù)的時候,一般是通過post請求攜帶在body中的,那么可以使用requestBody來接收數(shù)據(jù)
@responseBody
把數(shù)據(jù)發(fā)送到前端(會自動把return后面的對象轉(zhuǎn)換為json數(shù)據(jù)發(fā)送到前端)
常和@RequestMapping()放在一起使用,將當前請求中的數(shù)據(jù)發(fā)送給前端,不要用在類前面.
@RestController = @Controller + @responseBody 的效果(我不建議這個么去做,不嚴謹)
@RestController
@RequestMapping("/carts")
public class CartsController {
@Resource
? ? CartsService cartsService;
@Autowide按照類型注入,? 若是接口多實現(xiàn)想要按照名字注入則配合 @Qualifiter(name="serviceImpl01")
常常在一起使用,來自于框架
@Resource 來自jdk
默認按照名字注入,若是不存在則使用按照Type去注入,所以別亂用其中的name屬性,
若是使用了@resource(name= "servicrImpl02")則只會按照名字去找了,不會去找Type
解決接口多實現(xiàn)問題的依賴注入
方法1:@Autowide? @Qualifiter(name="serviceImpl01")? 按照名字去找對應(yīng)實現(xiàn),
方法2:@resource(name= "servicrImpl02")去找
@PathVariable
將傳入后端中的模板參數(shù)取其中的某個作為當前對象的參數(shù)
@RequestMapping(value = "treeList/{typeAlias}.xml")
@ResponseBody
public TreeList treeList(@PathVariable("typeAlias") String typeAlias) {
}