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

溫馨提示×

溫馨提示×

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

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

怎么使用springboot獲取控制器參數

發布時間:2021-12-17 16:06:52 來源:億速云 閱讀:280 作者:小新 欄目:開發技術

小編給大家分享一下怎么使用springboot獲取控制器參數,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

如題,這里介紹springboot 獲取控制器參數有四種方式

1、無注解下獲取參數

2、使用@RequestParam獲取參數

3、傳遞數組

4、通過URL傳遞參數

無注解下獲取參數

無注解下獲取參數,需要控制器層參數與HTTP請求欄參數名稱一致,這樣后臺就可以獲取到請求欄的參數。

	/**
	 * 無注解獲取參數時,參數名稱和HTTP請求參數必須一致
	 * @param name String 姓名
	 * @param age int 年齡
	 * @param score double 分數
	 * @return 響應json字符-@ResponseBody注解將map轉為json
	 */
	@RequestMapping("/param/noannotation")
	@ResponseBody
	public Map<String, Object> noAnnotation(String name,int age, double score) {
		Map<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put("name", name);
		paramMap.put("age", age);
		paramMap.put("score", score);
		return paramMap;
	}

方法中,我們接收三個參數,分別為name,age和score

啟動springboot后,在瀏覽器中請求URL:http://localhost:8080/param/noannotation?name=zhangsan&age=14&score=89.1

前端頁面會自動得到我們輸入的參數的json形式

怎么使用springboot獲取控制器參數

如果我們的請求URL中name不給參數值 http://localhost:8080/param/noannotation?name=&age=12&score=89.1

請求可以正常跳轉

怎么使用springboot獲取控制器參數

如果我們將int 或 long 參數為空,給URL http://localhost:8080/param/noannotation?name=lisi&age=12&score=

請求會報錯

怎么使用springboot獲取控制器參數

無法將String型參數轉化為需要的double型。

這里可以看出,如果我們不給參數賦值,那么spring會將空著的參數默認按照String型空字符串處理。所以,如果是String型的參數,為空時不報錯的;若是非String型參數,則必須非空。

使用@RequestParam獲取參數

上面的無注解情況下,HTTP參數與控制器參數名稱必須一致。若HTTP參數與控制器參數不一致時,我們就需要將前端參數與后端參數對應起來,這里我們使用@RequestParam來確定前后端參數名稱的映射關系。

	/**
	 * 使用@RequestParam獲取參數
	 * 這里RequestParam注解會將括號里面的前端參數名稱轉化為后面的參數名稱
	 * @param name String 姓名,接收前端username參數
	 * @param age int 年齡,接收前端user_age參數
	 * @param score double 分數,接收前端score參數
	 * @return 響應json字符
	 */
	@RequestMapping("/param/requestparam")
	@ResponseBody
	public Map<String, Object> requestParam(
			@RequestParam("username") String name,
			@RequestParam("user_age") int age, 
			@RequestParam("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;
	}

方法中,我們接收前端的username,user_age和score,然后使用@RequestParam注解將其轉化映射為name,age和age。

啟動springboot后,URL欄輸入 http://localhost:8080/param/requestparam?username=lisi&user_age=12&score=45.6

可以正常跳轉,并將結果展示在前端

怎么使用springboot獲取控制器參數

如果將URL中username后面值置空,頁面可以正常跳轉,測試URL

http://localhost:8080/param/requestparam?username=&user_age=12&score=45.6

怎么使用springboot獲取控制器參數

若我們將user_age 或 score值置空,則頁面會報錯

怎么使用springboot獲取控制器參數

與上面無注解時錯誤相同,這里不做解釋了。

如果我們刪除掉URL欄里面username參數項,URL為 http://localhost:8080/param/requestparam?user_age=12&score=45.6

頁面無法正常跳轉,報錯如下

怎么使用springboot獲取控制器參數

那如果實際中,我們確實有前端可傳可不傳的參數時,怎么辦?@RequestParam注解給了一個required屬性,標注該參數項是否必須有,其默認值為true,即必須傳值;若該值可能為空,則將required置為false。注意,此時,@RequestParam后面的數據類型必須為包裝類型,不可以是簡單類型,若為簡單類型,依然會報錯。包裝類型時,可以接收null對象;若為簡單類型,則系統依然會將空字符串與對應的簡單類型進行強轉,轉換失敗的,則拋異常出來。

我們將上面方法參數做部分修改,修改如下,由于篇幅關系,這里不再整體貼整個方法

	@RequestMapping("/param/requestparam")
	@ResponseBody
	public Map<String, Object> requestParam(
			@RequestParam("username") String name,
			@RequestParam(value = "user_age", required = false) Integer age, 
			@RequestParam(value = "score", required = false) double score) {

上面,我們將age對應的類型修改為Integer包裝類型,required設置為false;score,只是設置required設置為false

啟動springboot做測試,http://localhost:8080/param/requestparam?username=zhangsan&user_age=&score=89

這里我們將user_age后面的參數值設置為空,請求可以正常跳轉

怎么使用springboot獲取控制器參數

我們再修改一下URL參數項,http://localhost:8080/param/requestparam?username=zhangsan&user_age=&score=

系統會報400錯誤,提示score是空字符串,如果將數據類型double修改為Double,就會返回null了,這個這里就不測試了

怎么使用springboot獲取控制器參數

接收前端傳遞的數組

springMVC中,前端往后端除了可以傳遞一些單值外,也可以傳遞數組。傳遞數據部分沒有太多規則可言,在后臺控制器部分,定義數組形式接收數據,前端傳遞時,將一組數據用英文的逗號“,”隔開就可以了。

	@RequestMapping("/param/requestarray")
	@ResponseBody
	public Map<String, Object> requestArray(String[] names, int[] ages, double[] scores) {
		Map<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put("name", names);
		paramMap.put("age", ages);
		paramMap.put("score", scores);
		return paramMap;
	}

啟動springboot,URL為

http://localhost:8080/param/requestarray?names=zhangsan,lisi,wangwu&ages=12,14,15&scores=78.9,98,67

我們使用names接收所有的name,多個name值“zhangsan”、“lisi”和“wangwu”之間用“,”隔開

頁面可以正常跳轉

怎么使用springboot獲取控制器參數

通過URL傳遞參數

這里通過URL傳遞參數與上面的URL不同,上面的URL中均需寫明參數名和對應參數值,這里的URL傳遞參數,僅需要在地址欄輸入參數值,然后后臺自動匹配到對應的參數名。springMVC通過使用處理器映射和@PathVariable注解的組合來獲取URL參數。首先通過處理器映射可以定位參數的位置和名稱,而@PathVariable則可以通過名稱來獲取參數。

	/**
	 * 使用URL傳參
	 * URL傳參時,方法請求URL后使用{}包含參數名稱,多個參數之間使用/分隔
	 * @param name 姓名
	 * @param age 年齡
	 * @param score 成績
	 * @return 響應的json數據
	 */
	@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來接收變量,并映射為方法的變量

啟動springboot測試,URL為 http://localhost:8080/param/geturl/zhangsan/12/89

正常跳轉

怎么使用springboot獲取控制器參數

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

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

假如,age屬性可能為空,那么修改代碼為

	@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) {

其中,后面的URL中沒有了age參數,這里,視有無age的請求為不同的請求

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

怎么使用springboot獲取控制器參數

以上是“怎么使用springboot獲取控制器參數”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

五华县| 贵德县| 浏阳市| 新丰县| 仁化县| 双鸭山市| 平山县| 定西市| 山东省| 文成县| 岐山县| 新昌县| 龙州县| 堆龙德庆县| 新晃| 平湖市| 平原县| 紫云| 盖州市| 泰州市| 绵阳市| 宜都市| 石棉县| 全州县| 陆丰市| 贺州市| 施甸县| 井研县| 慈利县| 文成县| 花莲县| 铜梁县| 抚远县| 乳源| 大悟县| 崇礼县| 秦安县| 荆门市| 苏尼特右旗| 双鸭山市| 太保市|