Spring系中常見註解用法說明

@PathVariable與@RequestParm

在spring mvc中,有@requestparm, @requestbody和@pathvariable 三種註解來獲得瀏覽器端的參數,其中@requestparm是取自url中“?”之後的a=b&c=d,@requestbody 來自於請求體,而@pathvariable 則是從網址中取得參數;

感謝評論區@comeoon的訂正,瀏覽器的get/put/delete/post方法都可以使用上述參數,但是由於瀏覽器get方法不能提供body,所以RequestBody實際獲取的是一個map,參數來自於url中“?”之後的參數(實際上是request parameters)

假設代碼如下:

@Requestmapping(value="/{category}/{brand}/{id},method=RequestMethod.POST)
public void getbyid(@PathVariable("category") String category
                    @PathVariable("brand") String brand
                    @PathVariable("id") String id){
	//具體代碼略
}

@Controller與@RestController

@restcontroller爲@controller和@responsebody的結合。在@controller註解中,返回的是字符串,或者是字符串匹配的模板名稱,即直接渲染視圖,與html頁面配合使用的,在這種情況下,前後端的配合要求比較高,java後端的代碼要結合html的情況進行渲染,使用model對象(或者modelandview)將user的屬性渲染到頁面。

@Controller
@RequestMapping(method = RequestMethod.GET, value = "/")
public String getuser(Model model) throws IOException {

    model.addAttribute("name",bob);
    model.addAttribute("sex",boy);
    return "user";
}

前端取數據:

<html xmlns:th="http://www.thymeleaf.org">
<body>
    <div>
        <p>"${name}"</p>
        <p>"${sex}"</p>
    </div>
</body>
</html>

而在@restcontroller中,返回的應該是一個對象,即return一個user對象,這時,在沒有頁面的情況下,也能看到返回的是一個user對象對應的json字符串,而前端的作用是利用返回的json進行解析渲染頁面,java後端的代碼比較自由。

@RestController
@RequestMapping(method = RequestMethod.GET, value = "/")
public User getuser( ) throws IOException {
    User bob=new User();
    bob.setName("bob");
    bob.setSex("boy");
    return bob;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章