SpringMVC的五種請求傳參方式


1、傳統傳參方式

  方法參數中使用request,通過request.getParameter("參數名"),再封裝到bean中

@RequestMapping("/test01")
public ModelAndView test01(HttpServletRequest request){
      String username = request.getParameter("username");
      String password = request.getParameter("password");

      System.out.println(username);
      System.out.println(password);
      return null;
}

2、簡單類型參數和RequestParam注解

  如果請求參數和Controller方法的形參同名,可以直接接收

  如果請求參數和Controller方法的形參不同名,可以使用@RequestParam注解貼在形參前,設置對應的參數名稱

@RequestMapping("/test02_1")
public ModelAndView test02_1(String username,String password){
      System.out.println(username);
      System.out.println(password);
      return null;
}
@RequestMapping("/test02_2")
public ModelAndView test02_2(@RequestParam("username") String name,@RequestParam(value = "password",defaultValue = "1234987") String pwd){
      //使用了@RequestParam的參數不能傳空值
      // required:表示是否必須要傳值
      // defaultValue:當沒有該請求參數時,SpringMVC給請求參數的默認值
      System.out.println(name);
      System.out.println(pwd);
      return null;
}

3、對象傳參

  此時能夠自動把參數封裝到形參的對象上

  注意:1、請求參數必須和對象的屬性同名

        2、此時對象會直接放入request作用域中,名稱為類型首字母小寫

     3、@ModelAttribute設置請求參數綁定到對象中並傳到視圖頁面,設置key值

@RequestMapping("/test03")
public ModelAndView test03(@ModelAttribute("stu") Student student){
    /*可以使用對象作為方法的形參,同時接受接受前台的多個請求參數
      SpringMVC會基於同名匹配,將請求參數的值注入對應的對象中的屬性中
      @ModelAttribute起名字key值*/
      System.out.println(student);
      ModelAndView mv = new ModelAndView();
      mv.setViewName("test2");
      return mv;
}

 4、數組和List集合類型參數

  當前台頁面傳來的參數是參數名相同,參數值不同的多個參數時,可以直接封裝到方法的數組類型的形參中,也可以直接封裝到對象的集合屬性中。

  比如批量刪除時傳來的參數。

RequestMapping("/test04")
public ModelAndView test04(String id[]){
    /*對於參數名相同的多個請求參數,可以直接使用數組作為方法的形參接收
      可以使用對象中的集合屬性接收*/
      for (String i : id) {
          System.out.println(i);
      }
      return null;
}
@RequestMapping("/test05")
public ModelAndView test05(Student student){
      System.out.println(student.getId().size());
      for (String i : student.getId()) {
          System.out.println(i);
      }
      return null;
}

5、使用Restful

  Restful是一種軟件架構風格,嚴格上說是一種編碼風格,其充分利用 HTTP 協議本身語義從而提供了一組設計原則和約束條件。

  主要用於客戶端和服務器交互類的軟件,該風格設計的軟件可以更簡潔,更有層次,更易於實現緩存等機制。 在后台,RequestMapping標簽后,可以用{參數名}方式傳參,同時需要在形參前加注解@PathVarible,假如前台的請求地址為localhost:8080/delete/3

@RequestMapping("/delete/{id}")
public ModelAndView test4(@PathVariable("id")Long id){
    System.out.println("delete");
    System.out.println(id);
    return null;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM