SpingMvc-Day01

MinyX發表於2024-07-03
SpringMVC:
表述層作用:1.接受前端引數[SpringMVC簡化]
          2.呼叫業務邏輯
          3.響應前端資料[SpringMVC簡化]
SpringMVC元件:
    1.DispatcherServlet:處理全部請求
    2.handlerMapping:快取handler方法和地址
    3.handlerAdapter:介面卡、引數和相應簡化
    4.ViewResovler檢視直譯器:查詢檢視頁面、簡化檢視查詢
    5.handler:處理器,
SpringMVC接收資料:
    1.訪問路徑設定
        @RequestMapping:將請求的URL地址和處理請求的方式關聯起來,建立對映
                 * 1.精準地址/user/log {"地址1","地址2"}
                 * 2.支援模糊 * 任意一層字串 | **任意層字串
                 *          /user/*
                 *          /user/**
                 * 3.類上新增@RequestMapping也可以 類下面的方法公共的路徑
                 * 4.請求方式指定
                        客戶端 -> http(ger | post | put | delete) -> dispatcherServlet - > handler
                        預設情況下:@RequestMapping("login)只要地址正確,任何請求方式都可以訪問
                        指定請求方式: 
                            @RequestMapping(value = "/login",method = RequestMethod.POST)
                            @RequestMapping(value = "/register",method = {RequestMethod.GET,RequestMethod.POST})
                            不符合的報405
                        或者直接在方法上加@GetMapping @PostMapping @PutMapping @DeleteMapping
    2.接收引數[重點]
        ①param和json的引數比較
        Param: key=value&key=value
        JSON:  {key:value,key:value}
    ②param引數接收
        1.直接接收
            /param/data?name=root&age=18
            //直接接收 引數=形參
            @RequestMapping("data")
            public String data(String name,int age){
                System.out.println("name = " + name + ", age = " + age);
                return "name = " + name + ", age = " + age;
            }    
        2.使用@RequestParam
            /param/data?account=root&age=18
            public String data1(@RequestParam(value = "account") String username , @RequestParam(required = false,defaultValue = "1") int page){
            @RequestParam:value:將account指定為username
                          required = false 指定非必須傳值
                          defaultValue = "1" 設定預設值
        3.特殊場景接收
            ①一值多收
                //一名多值 key=1&key=2 使用集合接收[但要使用@RequestParam]
                //param/data2?hbs=吃&hbs=玩&hbs=學習
                @GetMapping("data2")
                @ResponseBody
                public String data2(@RequestParam List<String> hbs){
                    System.out.println("hbs = " + hbs);
                    return "ok";
            ②使用實體物件接值
                //使用者註冊(使用者資訊)  -》 對應的實體類 -》 插入到資料庫、表
                //param/data3?name=二狗子&age=18
                // 準備一個對應屬性的ger|set方法的實體類物件即可
                // 形參列表
                @RequestMapping("data3")
                @ResponseBody
                public String data3(User user){
                    System.out.println("user = " + user);
                    return user.toString();
                }
            }
        4.路徑引數接收
            /user/root/123456
            //動態路徑設定{key} = * {key}
            //接收路徑引數
            @RequestMapping("{account}/{password}")
            public String login(@PathVariable(value = "account") String username,@PathVariable String password){
                System.out.println("username = " + username + ", password = " + password);
                return "username = " + username + ", password = " + password;
    }