91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringMVC?@GetMapping注解路徑沖突問題怎么解決

發布時間:2022-09-15 17:22:38 來源:億速云 閱讀:193 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“SpringMVC @GetMapping注解路徑沖突問題怎么解決”,內容詳細,步驟清晰,細節處理妥當,希望這篇“SpringMVC @GetMapping注解路徑沖突問題怎么解決”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

在SpringMVC的入門學習中,我發現@GetMapping注解的使用要注意路徑沖突問題,在網上都沒找到類似我這樣的情況,所以我在這里將問題分享出來,希望遇到我這樣的問題的可以有個參考,但是為什么這樣就不行我還沒搞懂,希望知道的人可以在評論區或者私信告訴我。問題如下:我的controller層有兩個查詢操作,一個是按id查詢,一個是按name模糊查詢,一開始我的程序是

    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id) {
        if(id == 0){
            throw new BusinessException(Code.BUSINESS_ERR,"請規范您的操作!");
        }
        Book book = bookService.getById(id);
        Integer code = (book == null? Code.GET_ERR:Code.GET_OK);
        String msg = (book == null? "數據查詢失敗!":"");
        return new Result(code,book,msg);
    }

    @GetMapping(value = ("/{name}"))
    public Result getByName(@PathVariable String name){
        //解決中文亂碼
        byte[] bytes = name.getBytes(StandardCharsets.ISO_8859_1);
        String Name = new String(bytes,StandardCharsets.UTF_8);

        List<Book> bookList = bookService.getByName(Name);
        Integer code = (bookList == null ? Code.GET_ERR:Code.GET_OK);
        String msg = (bookList == null? "系統繁忙,請稍后再試!":"");
        return new Result(code,bookList,msg);
    }

SpringMVC?@GetMapping注解路徑沖突問題怎么解決

此時編譯不報錯,用Apifox進行測試

SpringMVC?@GetMapping注解路徑沖突問題怎么解決

SpringMVC?@GetMapping注解路徑沖突問題怎么解決

可以看到無論是想用id查詢還是用name查詢都無法查詢成功,說明程序無法識別哪個是按id查詢哪個是按name查詢這時候就想到如果在每個@GetMapping中指定具體路徑呢?下面來嘗試一下

@GetMapping("/getById/{id}")
@GetMapping(value = ("/getByName/{name}"))

運行結果:

SpringMVC?@GetMapping注解路徑沖突問題怎么解決

SpringMVC?@GetMapping注解路徑沖突問題怎么解決

SpringMVC?@GetMapping注解路徑沖突問題怎么解決

可以看到通過id查詢可以查詢成功,但是通過name查詢時候無論是在路徑中添加參數還是自定義參數都無法查詢成功
最終我找到的解決方案是指定參數名稱(不知道這樣說對不對,可以看代碼):

@GetMapping(value = ("/getById"))
    public Result getById(@RequestParam("id") Integer id) {
        System.out.println("id="+id);
        if(id == 0){
            throw new BusinessException(Code.BUSINESS_ERR,"請規范您的操作!");
        }
        //將可能出現的異常進行包裝,轉換成自定義異常
        try{
            int i = 1/0;
        }catch (Exception e){
            throw new SystemException(Code.SYSTEM_TIMEOUT_ERR,"服務器訪問超時,請稍后再試!",e);
        }
        Book book = bookService.getById(id);
        Integer code = (book == null? Code.GET_ERR:Code.GET_OK);
        String msg = (book == null? "數據查詢失敗!":"");
        return new Result(code,book,msg);
    }

    @GetMapping(value = ("/getByName"))
    public Result getByName(@RequestParam("name") String name){
        //解決中文亂碼   要注意用SpringBoot時不需要進行中文亂碼處理
        byte[] bytes = name.getBytes(StandardCharsets.ISO_8859_1);
        String Name = new String(bytes,StandardCharsets.UTF_8);

        List<Book> bookList = bookService.getByName(Name);
        Integer code = (bookList == null ? Code.GET_ERR:Code.GET_OK);
        String msg = (bookList == null? "系統繁忙,請稍后再試!":"");
        return new Result(code,bookList,msg);
    }

此時查詢:

SpringMVC?@GetMapping注解路徑沖突問題怎么解決

SpringMVC?@GetMapping注解路徑沖突問題怎么解決

要注意參數位置,此時可以看到兩者都查詢成功,至此問題解決,要是有大佬知道用

@GetMapping("/getById/{id}")
@GetMapping(value = ("/getByName/{name}"))

讀到這里,這篇“SpringMVC @GetMapping注解路徑沖突問題怎么解決”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜城市| 沂南县| 千阳县| 夏津县| 九寨沟县| 元谋县| 屏山县| 忻城县| 长汀县| 澎湖县| 小金县| 玉环县| 依兰县| 崇左市| 阜平县| 扬州市| 雅安市| 中卫市| 休宁县| 田林县| 旬邑县| 泰来县| 安达市| 神农架林区| 英超| 新疆| 朝阳市| 额济纳旗| 漳州市| 焦作市| 陆河县| 鹤峰县| 岳阳市| 绥滨县| 曲水县| 美姑县| 绥化市| 庄浪县| 胶州市| 交口县| 洪江市|