1. 程式人生 > >SpringMVC基本註解的介紹

SpringMVC基本註解的介紹

@Controll    //宣告需掃描的類,這個註解主要為了,你發起請求的時候,可以從這個類中去找應該訪問那個方法

@RequestMapping("/user")     //相當於@RequestMapping(value="/user") ,這個類先攔截比如: xxx/專案名字/user/xxx,專案名字後面是user的請求

@SessionAttriutes("user")    /* 相當於@SessionAttriutes(value="user"),這個是如果你model裡面 ,比如model.addAttribute("user",user);新增到了model物件裡面,

 然後你就可以通過HttpSession物件的getAttribute("user"),去取出來這個物件,也可以設定多個物件到HttpSession中,比如,
 @SessionAttributes(types={User.class,Student.class},value{"user","student"}) */

public class TestControl{


@ModelAttribute("loginCheck")      //這個註解只支援一個屬性value,這個方法回在你執行Controller每個方法前被執行,因此在一個的Controller對映到多個url上時候,要謹慎使用

public void userModel1(User user,Model model){

/*接受的user物件放入model中,然後在你@RequestMapping("loginCheck")這個註解的方法哪裡可以通過model物件獲取到值,看下面演示 */

model.addObject("user",user);    

}

@RequestMapping("loginCheck")

public ModelAndView userModel2(Model model,HttpSession session){

 /*因為在執行@RequestMapping("loginCheck")前已經先走了@ModelAttribute("loginCheck")  所以Model中就有了值了 ,

並且因為類上面有了@SessionAttributes("user"),所以你往model中放入user鍵的時候,HttpSession中也就有了值了,也就可以通過session.getAttribute("user") 去獲取值*/

User user=(User)model.asMap().get("user"); 

//通過session去取值

User user2=(User)session.getAttribute("user");

ModelAndView m2=new ModelAndView();

m2.setView(user);

m2.setViewName("success.jsp");

return m2;

}

@RequestMapping("pageing/{pageNumber}")

public void userModel3(

/* @pathVariable會獲取你請求最路徑的的那個值放入註解的這個pageNumber變數中,比如請求    xxxx/user/pageing/100, 然後就會把100這個值放入註解宣告的這個變數裡面,前提你傳送的請求能到這裡才可以(到user/pageing這個路徑下才行),註解的引數名字一定和上面mapping中的引數名字一致才可以,一般分頁會用這種方式*/

@PathVariable int pageNumber){

 System.out.println(pageNumber);


}

@RequestMapping("login4")

public void userModel4(

/* @RequestParam註解會把你請求帶的id值放入到這個註解的變數當中,但不會影響你把id放入但user下*/

@RequestParam int id,User user){

 System.out.println(pageNumber);


}

/* 在寫下一個方法前說明一下,在前臺用get或者post請求提交資料的時候,資料編碼格式由請求頭的ContentType指定,分為下面幾種情況

1. application/x-www-form-urlencoded,這種情況的資料,@RequestParam,@ModelAttribute也可以處理,並且很方便,當然@RequestBody也能處理

2.multipart/form-data, @RequestBody 不能處理這種格式的資料,這種資料一般是上傳檔案才會指定的型別

3.application/json application/xml 等格式的資料,必須使用@RequestBody來處理,實際開發中可以使用@RequestBody註解可以很方便的處理JSON格式的資料

*/

/* 比如,前臺ajax請求,如果contentType:“application/json”, data:JSON.stringify({id:1,name:"小明"}),

contentType是json資料型別,並且傳過來的是json字串 */

@RequestMapping("ajaxRequestTest")

public void setJson(    //方法的括號之間傳的是方法的引數,中間用逗號隔開

//@RequestBody會根據json資料,轉化成物件的Object,也就是說會把json裡面的資料放入user物件當中

@RequestBody User user,HttpServletResponse response){


//測試有沒有把json資料放入物件

System.out.println(user.getId());

System.out.println(user.getName());

response.setContentType("text/html;charset=utf-8");

response.getWriter().print("{msg:\"測試成功,這個是返回給ajax的資料\"}");

}


}