1. 程式人生 > 實用技巧 >SpringMVC-06-資料處理

SpringMVC-06-資料處理

6. 資料處理

處理提交資料

  1. 提交的域名稱和處理方法的引數一致

    提交資料:http://localhost:8080/user/t1?name=huba

    處理方法:

    public String test1(String name, Model model){
            //1.接受前端引數
            System.out.println("接受到前端引數");
            //2.將返回結果傳遞給前端
            model.addAttribute("msg",name);
            //3.頁面跳轉
            return "test";
        }
    
  2. 提交的域名稱和處理方法的引數名不一致

    提交資料:http://localhost:8080/user/t1?username=huba

    處理方法:

    //@RequestParam("username"):username 域名稱
    @GetMapping("/t1")
        public String test1(@RequestParam("username") String name, Model model){
            //1.接受前端引數
            System.out.println("接受到前端引數");
            //2.將返回結果傳遞給前端
            model.addAttribute("msg",name);
            //3.頁面跳轉
            return "test";
        }
    
  3. 提交的是一個物件

    要求提交的表單域和物件的屬性名一致,引數使用物件即可。

    1. 實體類

      @Data
      @AllArgsConstructor
      @NoArgsConstructor
      public class User {
          private int id;
          private String name;
          private int age;
      
      }
      
    2. 提交資料:http://localhost:8080/user/t2?name=huba&id=1&age=15

    3. 處理方法:

      @GetMapping("/t2")
          public String test2(User user, Model model){
              System.out.println("接受到前端引數");
              model.addAttribute("msg",user.toString());
              return "test";
          }
      

      注意點:

      匹配物件中的欄位名;名字一致必須一致,否則為null。

資料顯示到前端

  1. 通過ModelAndView
  2. 通過ModelMap
  3. 通過Model

對比

對新手而言簡單來說使用區別就是:

  • Model:只有寥寥幾個方法,適合儲存資料,簡化版
  • ModelMap:繼承了LinkedHashMap
  • ModelAndView:除了可以儲存資料,也可以進行設定返回的邏輯檢視,進行控制展示層的跳轉。

亂碼問題

測試步驟:

  1. 我們可以再首頁編寫一個提交的表單

    <form action="/e/t1" method="post">
        <input type="text" name="name">
        <input type="submit">
    </form>
    
  2. 後臺編寫對應的處理類

    @PostMapping("/e/t1")
    public String test1(String name, Model model){
    
        model.addAttribute("msg",name);
    
        return "test";
    }
    
  3. 輸入中文測試,發現亂碼

SpringMVC給我們提供了一個過濾器,可以在web.xml中配置,修改了xml檔案需要重啟伺服器!

<filter>
    <filter-name>encoding</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>utf-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>encoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>