關於spring mvc前后台交互的一些注解
Url模板
在請求路徑中添加變量,使用{}。通過@pathVariable注解在方法參數中,獲得url中的變量值。
@pathVariable(“url中的變量名”) 參數。
適用於Restful風格架構,
注入bean
當在類中需要引用另一個類對象的時候,需要注入。
@Resource和@Autowired可以實現注入。
@Autowired默認是根據bytpye類型注入對象。
@Resource默認是根據byName注入對象。
Autowired也可以實現byName方式注入對象。搭配@Qualifier("對象名")
@Resource也可以實現byType方式注入對象。
@Resource(type=”對象名”)即可根據bytype方式注入。
建議統一使用@Autowired方式,根據bytype方式注入。
@RequestMapping
標記的處理器方法支持的方法參數和返回類型
主要用來定義請求路徑。
高級用法:
@RequestHeader、@CookieValue
這兩個注解可以講httprequest的頭信息和cookie信息綁定到處理器的參數上。
當需要獲取請求頭或者cookie信息的時候可以使用。
示例:
@RequestParam,
@RequestParam
相當於 request。Getparameter()方法。該注解直接將前台傳過來的參數,綁定到對應的參數上,供方法體使用。后面跟的參數名稱需要和前台頁面中的name名稱一致。
@requestBody,@respondBody
當前台頁面傳入的數據時一個完整的表單,並屬於某個類對象的屬性。使用 @RequestBody 和respondBody注解,自動將前台傳入的json字符串轉換成對應的類對象。
@RequestBody只能接收POST請求,get是不行的,
應用場景。例如,一個檢索頁面,對主表進行查詢,查詢條件為表中的各個字段。需要將查詢條件傳到后台。直接使用@requestBody將前台的json數據轉換成實體對象。方便查詢。 同時,在方法體上添加respondBody后,直接返回類對象。Spring會自動將這個類對象轉換成json格式,供前台使用。
@SessionAttributes, @ModelAttribute
@SessionAttributes:
該注解用來綁定HttpSession中的attribute對象的值,便於在方法中的參數里使用。
@ModelAttribute
用到方法上@ModelAttribute的示例代碼:
這種方式實際的效果就是在調用@RequestMapping的方法之前,為request對象的model里put(“account”, Account)。
用在參數上的@ModelAttribute示例代碼:
首先查詢 @SessionAttributes有無綁定的Pet對象,若沒有則查詢@ModelAttribute方法層面上是否綁定了Pet對象,若沒有則將URI template中的值按對應的名稱綁定到Pet對象的各屬性上。
后台接收數據:
接收前台數據,可以根據不同類型數據,使用不同注解。
添加控制器注解:@controller
添加映射地址:@requestmapping(“/類名去掉controller”)方便定位使用控制器,可以省略,
在控制器方法中:
方法上添加映射路徑的時候;直接添加@requestmapping注解,框架默認使用方法名作為路徑。簡潔方便,使用這種方法,需要在攔截器中需要配置。把靜態資源過濾掉。否則前台頁面無法訪問靜態資源。
示例:請求路徑為:../login/login
@controller
@requestMapping(“/login”)//可省略,省略后請求路徑為類名去掉后面的 controller,所以還是/login。
Public class loginController{
@RequestMapping(path=”/login” method = RequestMethod.post)
Public string login(string username ,string password Model model){
......
//model參數必須放在最后.
//前台傳入參數少的時候可以直接放到方法上。
//model用來向前台發送數據。
}
前台發送多個參數的時候,特定情況下可以使用@requestBody注解
@RequestMapping()
Public string loginOut(Request request, httpservletResponse response ){
String name = request.getParameter(“name”)
String age = request.getParameter(“age”)
}
}
后台發送數據:
1、modelAndView 方法:
2、modelMap方法
3、map方法
其實三種方法本質差別不大,只是表現形式不同。
建議使用mdelMap方法。在處理器方法中加上modelMap model。
使用model.addAttribute("uname", name)方法,springmvc就可以自動將數據發送到前台。不用return。
modelAndView 返回的就是一個視圖。
前台發送數據,
略:
建議統一使用ajax方式。Datatype使用json格式。
Ajax{
Url:”login/login”,
Data{},
Datatype:’json’,
Success:function(){}
}