天天看點

springmvc前端到後端的資料接收和處理和三種資料顯示到前端的對象

1.送出的域名稱和處理方法的參數名一緻

這種好辦,比如前端表單的參數名稱為name,後端請求的形參也是name,那麼就可以接收到,如果兩者名字不一樣,那麼接收不到,就會顯示null。

2.送出的域名稱和處理方法的參數名不一緻

如果不一緻,有什麼解決辦法呢?如果前端送出的是username

那麼後端加這個個注解,一是可以解決這個參數名不一緻的問題,二十可以告訴别人這兒是要接受前端參數的。

//@RequestParam("username") : username送出的域的名稱 .
@RequestMapping("/hello")
public String hello(@RequestParam("username") String name){
    System.out.println(name);
    return "hello";
}
           

3.送出的是一個對象

要求送出的表單域和對象的屬性名一緻 , 參數使用對象即可

1、實體類

public class User {
    private int id;
    private String name;
    private int age;
    //構造
    //get/set
    //tostring()
}
           

2、送出資料 : http://localhost:8080/mvc04/user?name=hahah&id=1&age=15

3、處理方法 :

@RequestMapping("/user")
public String user(User user){
    System.out.println(user);
    return "hello";
}
           

背景輸出 : User { id=1, name=‘hahah’, age=15 }

說明:如果使用對象的話,前端傳遞的參數名和對象名必須一緻,否則就是null。

4.三個不同資料顯示到前端的對象

第一種 : 通過ModelAndView

public class ControllerTest1 implements Controller {
 
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        //傳回一個模型視圖對象
        ModelAndView mv = new ModelAndView();
        mv.addObject("msg","ControllerTest1");
        mv.setViewName("test");
        return mv;
    }
}
           

第二種 : 通過ModelMap

@RequestMapping("/hello")
public String hello(@RequestParam("username") String name, ModelMap model){
    //封裝要顯示到視圖中的資料
    //相當于req.setAttribute("name",name);
    model.addAttribute("name",name);
    System.out.println(name);
    return "hello";
}
           

第三種 : 通過Model

@RequestMapping("/ct2/hello")
public String hello(@RequestParam("username") String name, Model model){
    //封裝要顯示到視圖中的資料
    //相當于req.setAttribute("name",name);
    model.addAttribute("msg",name);
    System.out.println(name);
    return "test";
}
           

三種不同對象的對比:

Model 隻有寥寥幾個方法隻适合用于儲存資料,簡化了新手對于Model對象的操作和了解;
 
ModelMap 繼承了 LinkedMap ,除了實作了自身的一些方法,同樣的繼承 LinkedMap 的方法和特性;
 
ModelAndView 可以在儲存資料的同時,可以進行設定傳回的邏輯視圖,進行控制展示層的跳轉。
           

繼續閱讀