1. 程式人生 > 其它 >測試開發進階——spring boot——MVC——get訪問——通過URL傳遞引數

測試開發進階——spring boot——MVC——get訪問——通過URL傳遞引數

通過URL傳遞引數與上面的URL不同,上面的URL中均需寫明引數名和對應引數值,這裡的URL傳遞引數,僅需要在位址列輸入引數值,然後後臺自動匹配到對應的引數名。

springMVC通過使用處理器對映和@PathVariable註解的組合來獲取URL引數。

首先通過處理器對映可以定位引數的位置和名稱,而@PathVariable則可以通過名稱來獲取引數。

package com.awaimai.web;

import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

@RestController
public class kzq
{

    @RequestMapping("/param/geturl/{name}/{age}/{score}")
    @ResponseBody
    public Map<String, Object> getUrlParam(
            @PathVariable("name") String name,
            @PathVariable("age") Integer age,
            @PathVariable("score") Double score) {
        Map<String, Object> paramMap = new HashMap<String, Object>();
        paramMap.put("name", name);
        paramMap.put("age", age);
        paramMap.put("score", score);
        return paramMap;
    }

}

方法中,我們使用了3個{ },分別代表變數name、age和score,方法變數中使用@PathVariable來接收變數,並對映為方法的變數

=====================================================================================================

如果中間某個引數可能為空呢,查了下@PathVariable註解有required屬性,但是經測試,發現這個屬性無法單獨使用。

如果中間某個引數為空,還得借用@RequestMapping 支援多URL的屬性進行處理

假如,age屬性可能為空,那麼修改程式碼為

package com.awaimai.web;

import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

@RestController
public class kzq
{

    @RequestMapping(value = {"/param/geturl/{name}/{age}/{score}",
            "/param/geturl/{name}/{score}"})
    @ResponseBody
    public Map<String, Object> getUrlParam(
            @PathVariable("name") String name,
            @PathVariable(value = "age", required = false) Integer age,
            @PathVariable("score") Double score)

    {
        Map<String, Object> paramMap = new HashMap<String, Object>();
        paramMap.put("name", name);
        paramMap.put("age", age);
        paramMap.put("score", score);
        return paramMap;
    }

}

  

其中,後面的URL中沒有了age引數,這裡,視有無age的請求為不同的請求

使用URLhttp://localhost:8080/param/geturl/zhangsan//89做測試,可以正常跳轉

web訪問: