springboot怎么动态获取配置啊(springboot控制器参数默认值设置)

技术怎么使用springboot获取控制器参数小编给大家分享一下怎么使用springboot获取控制器参数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了

边肖将与你分享如何使用回弹获得控制器参数。相信大多数人对它还不太了解,所以我将这篇文章分享给大家参考。希望你看完这篇文章后收获多多。让我们一起来发现吧!

如题,这里介绍springboot 获取控制器参数有四种方式

1.获取不带注释的参数。

2.使用@RequestParam获取参数

3.传递数组

4.通过网址传递参数

00-1010要获取不带注释的参数,需要控制器层参数与HTTP请求列参数名称一致,这样后台才能获取请求列的参数。

/**

*获取不带标注的参数时,参数名称和HTTP请求参数必须一致。

*@paramnameString名称

*@paramageint年龄

*@paramscoredouble评分

*@return response json字符-@ResponseBody注释将映射转换为json

*/

@ RequestMapping('/param/no annotation ')

@ResponseBody

publicMapString,ObjectnoAnnotation(Stringname,intage,double score){ 0

MapString,ObjectparamMap=new hashmapstring,Object();

paramMap.put('name ',name);

paramMap.put('age ',age);

paramMap.put('score ',score);

returnparamMap

}方法,我们接收三个参数,即姓名、年龄和分数。

启动springboot后,在浏览器中请求网址:http://localhost :8080/param/无批注?name=zhangsanage=14score=89.1

首页会自动得到我们输入的参数的json形式。

怎么使用springboot获取控制器参数

如果我们的请求URL中的名称没有给出参数值http://localhost :8080/param/无注释?姓名=年龄=12岁核心=89.1

请求可以正常跳转

怎么使用springboot获取控制器参数

如果我们将int或long参数留空,给URL http://localhost :8080/param/无注释?name=lisiage=12score=

该请求将报告一个错误

怎么使用springboot获取控制器参数

无法将字符串参数转换为所需的双精度值。

这里可以看到,如果我们不为参数赋值,那么默认情况下,spring会将空参数视为空字符串。因此,如果是String参数,则为空时不会报告错误;如果不是字符串参数,它必须是非空的。

无注解下获取参数

在上面没有注释的情况下,HTTP参数和控制器参数的名称必须相同。如果HTTP参数与控制器参数不一致,我们需要将前端参数与后端参数进行匹配。这里,我们使用@RequestParam来确定前端和后端参数名之间的映射关系。

/**

*使用@RequestParam获取参数

*在这里,RequestParam注释将括号中的前参数名转换为后参数名。

*@paramnameString名称,接收前端用户名参数

*@paramageint年龄

,接收前端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获取控制器参数”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/150316.html

(0)

相关推荐

  • 怎么用Java设计一个短链接生成系统

    技术怎么用Java设计一个短链接生成系统这篇文章主要讲解了“怎么用Java设计一个短链接生成系统”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Java设计一个短链接

    攻略 2021年12月11日
  • SQL Server Report Service网页页面显示英文问题怎么办

    技术SQL Server Report Service网页页面显示英文问题怎么办今天就跟大家聊聊有关SQL Server Report Service网页页面显示英文问题怎么办,可能很多人都不太了解,为了让大家更加了解,

    攻略 2021年11月29日
  • na2so4,na2so4·7h2o

    技术na2so4,na2so4·7h2o七水亚硫酸钠也称结晶亚硫酸钠,又称亚硫酸钠七水na2so4。七水亚疏酸钠是一种白色砂砾状或粉末状结晶。七水亚疏酸钠的相对密度为1.539。易溶于水,水溶液呈碱性,难溶于七水亚疏酸钠

    生活 2021年10月24日
  • jQuery如何改变input的属性

    技术jQuery如何改变input的属性本篇内容介绍了“jQuery如何改变input的属性”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅

    攻略 2021年11月16日
  • GOF设计模式在Spring框架中怎么实现

    技术GOF设计模式在Spring框架中怎么实现GOF设计模式在Spring框架中怎么实现,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。GOF

    攻略 2021年10月27日
  • SequoiaDB 2 . 8 . 4中显示的打开文件中的值是怎么来的?

    技术SequoiaDB v2.8.4显示的open files中的值怎么来的这篇文章主要介绍“SequoiaDB v2.8.4显示的open files中的值怎么来的”,在日常操作中,相信很多人在SequoiaDB v2

    攻略 2021年12月22日