springmvc 資料處理

likeGhee發表於2020-10-06

接收資料

  1. 提交的域名稱和處理方法的引數名一致
    提交資料 : http://localhost:8080/hello?name=yz
    處理方法,列印出輸出yz,函式引數和request引數一致,函式引數自動賦值
@RequestMapping("/hello")
public String hello(String name){
   System.out.println(name);
   return "hello";
}
  1. 提交的域名稱和處理方法的引數名不一致
    提交資料 : http://localhost:8080/hello?username=yz
    函式引數和request引數不一致,我們想讓函式的引數能夠接收到web傳過來的值,使用@RequestParam
@RequestMapping("/hello")
public String hello(@RequestParam("username") String name){
   System.out.println(name);
   return "hello";
}
  1. 提交的是一個物件
    要求提交的表單域和物件的屬性名一致 , 引數使用物件即可,提交資料 : http://localhost:8080/mvc04/user?name=yz&id=1&age=15
public class User {
   private int id;
   private String name;
   private int age;
   ...
}
@RequestMapping("/user")
public String user(User user){
   System.out.println(user);
   return "hello";
}

顯示資料到前端

  1. 通過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;
  }
}
  1. 通過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";
}
  1. 通過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 可以在儲存資料的同時,可以進行設定返回的邏輯檢視,進行控制展示層的跳轉。

相關文章