Controller层方法传参和返回字符串

1:controller层方法传参


pic-1590654577197.png

在上图的方法中,需要调用这个方法的话,那么a参数是必传的,b和c无所谓传不传,甚至是你传一个方法中没有的参数d也是可以正常调用该方法的。总之是有类似上面的注解@RequestParam的参数必传,其余的看逻辑需求(一般逻辑写了参数的,那么都会传参,不会出现很奇怪的传参方式)。

有关@RequestParam的总结:
    @RequestParam(value="a",required = true) 这个注解的后面多加了个参数required,required直译过来是需要,这里我们翻译成,是否需要? 然后这个参数后面等于true,那就是说这个参数a是必传的。
    其实@RequestParam(value="a",required = true)和@RequestParam(value="a")是一样的意思,都是a参数必传的意思,不传报错。
    当然,有了required = true,那么自然就有 required = false。很显然,required = false是参数非必传。@RequestParam(value="a",required = false) 和在方法形参前不写该注解是一样的意思。

补充:2019/12/20
@RequestParam(value="a",required = false) 和在方法形参前不写该注解是一样的意思。都可以不传参,但是前提是该参数是不为基本数据类型,否则会报错。如下:


pic-1589441462888.png

不能将参数a转为null处理,所以我这里猜想,要是没有传参的话,那么会给一个默认值为null,但是基本数据类型不能强转为null,所以报错。还需要注意的是,8个基本数字类型,**除了boolean之外,都会报错,**但是boolean这个基本数字类型就不会。(本人亲测)


pic-1590654577198.png

如上图所示参数,直接访问/gm,在页面可以正常返回“干嘛”字样。

2:Controller层方法返回的字符串
之前在项目里,看见controller层的返回类型是个字符串,但是实际跳转的时候是跳转到具体某个页面的。都是似懂非懂,现在来总结下:

1:就是直接返回字符串的(在浏览器页面显示具体字符串)
    后台方法的写法是:

上图中的@ResponseBody注解是返回JSON格式,这里要把字符串在浏览器页面显示出来,这个注解必须加上。
浏览器页面访问并传个a参数过去效果:

2:返回字符串跳转到页面的。
首先需要在springboot项目的application.properties或者是application.yml文件配置视图解析器,如图:

前缀是/static,后缀是.html。因为springboot的配置文件根路径是从resources目录开始的,新建一个文件名为a.html的静态页面。如下图:

后台方法的写法如下:

需要注意的是需要返回页面,那么就必须不能在这个方法上面加上@ResponseBody或者是不能在这个Controlle层的类上写@RestController注解。
其实,这里返回的字符串“a”,实际上是返回了“/static/a.html”;
在浏览器里访问/testOne方法的结果如下:

最后:Controller层上的类注解@Controller + @ResponseBody = @RestController

补充: 2019/11/04     

今天和往常一样配置视图解析器,想要跳转某个页面,可是奇怪的事发生了,总是跳转不了,报错如下:

  

  最后解决办法是在application.properties配置文件里添加一个静态资源路径,如下图:

  

这里的静态资源是放在resources的static下面。

猜你喜欢

转载自www.cnblogs.com/xm970829/p/12981810.html