SpringMVC基本註解的介紹
阿新 • • 發佈:2019-02-16
@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的資料\"}"); } }