好久没有碰spring mvc了,一方面是因为go太好用了,但主要是因为我自己太懒了…

先从spring mvc的请求参数的获取进行。

一、最基本的获取

不能再简单了,可以成功获取请求中test的参数值。

二、只想处理get请求,怎么实现?

method = RequestMethod.GET

加上这个属性就只处理get请求了。

三、我想把test这个参数绑定成另外的参数,比如user,怎么实现?

加上这个注解@RequestParam (value = “user”)

这样访问的参数就变成了user。

  1. 前:http://localhost:8080/5.23springmvc/test?test=123456
  2. 后:http://localhost:8080/5.23springmvc/test?user=123456

四、我想让这个参数是非必须填写,怎么实现?

加上这个属性required = false,就搞定了。

如果没这个,默认的required = true,请求就必须含有这个test参数,就会报错:

HTTP Status 400 – Required String parameter ‘user’ is not present

格式有误,服务器无法理解参数。

五、换一种获取的方法?

我们现在使用的是直接定义变量的方法实现参数的获取,还有别的方法:

  1. 使用servlet的方法进行参数获取
  2. 使用一个实体类进行获取,这个实体类必须包括请求的参数

这里举一个servlet的例子:

这里就涉及到servlet的基础了,看起来不一样,但是实现的效果也是一样的。

用惯servlet的人甚至可以写得更像servlet一点,那就这样写:

感觉基本上就是servlet了…

六、一些细节

关于null:

尝试访问以下链接:

  1. http://localhost:8080/5.23springmvc/test?user
  2. http://localhost:8080/5.23springmvc/test?user=

是不是test会=null,什么都返回不了?

答案是会返回一个空字符串” “,并不是null!

也就是说:http://localhost:8080/5.23springmvc/test?user=这样的链接会令test=空字符串

所以说我们在判断输入参数是否有值的时候就要注意了:

同时判断test不为null和空字符串,才是正确的判断方法。

再深一步研究,如果我们输入的参数值为”null”,spring mvc会不会把test误判为null?

答案是不会的,spring mvc会把输入的字符串当成字符串来处理,不会把test误判为控制,这个是不需要担心的。

七、总结

会用还是很简单的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注