在MVC结构中,控制器组件主要的功能就是接收请求,处理请求,生成响应,接收客户端传来的请求参数的往往是控制器要做的第一件事。
书实体类Book.java
公开课书{ 私人整数bookId; 私人字符串作者;//生成,集方法,此处省略 } >之前
客户端界面(表单):
& lt;形式action="/属性”方法=皃ost”比; & lt;输入类型=拔谋尽钡拿?癰ookId”比; & lt;输入类型=拔谋尽钡拿?白髡摺北? & lt;输入类型="提交" value=" https://www.yisu.com/zixun/提交”比; & lt;/form> >之前控制器层:
@ controller 公开课ParamPassDemo { @RequestMapping (value=" https://www.yisu.com/queryString ") bookId公共字符串test1(整数,字符串作者){ 系统。println (" bookId=" + bookId +”,作者=" +作者);//此处返回的地址为(/web - inf/jsp/index . jsp) 返回“指数”; } } >之前注意:这里@RequestMapping中只属有价值性,价值可以省略不写。
客户端输入:123年,罗斯
控制台输出:作者bookId=123=玫瑰
客户端界面(表单):
& lt;形式action="/queryStringWithSpecName”方法=皃ost”比; & lt;输入类型="文本" name=" bookId " value=" https://www.yisu.com/zixun/321 "比; & lt;输入类型=拔谋尽钡拿?白髡摺奔壑?" https://www.yisu.com/zixun/Jack "比; & lt;输入类型="提交" value=" https://www.yisu.com/zixun/提交”比; & lt;/form> >之前如果表单中的字段与方法中的参数名一致,可以不需要@RequestParam,春天会自动处理。
控制器层:@ controller 公开课ParamPassDemo { @RequestMapping ("/queryStringWithSpecName”) 公共字符串test2 ((value=" https://www.yisu.com/zixun/bookId ",要求=false)整数id, @RequestParam(“作者”)字符串名称){ 系统。println (" bookId=" +身份证+”,作者=" +名字); 返回“指数”; } } >之前注意:这里@RequestMapping中有两个属性,价值不能省略。
@RequestParam将请求地址中的参数传递给目标方法,在处理方法入参处使用可以把请求参数传递给请求方法。
当使用@RequestParam注解时,设置客户端传递的请求参数name=" bookId和@RequestParam的值值值=" https://www.yisu.com/zixun/bookId "相匹配后,参数名int id可以和请求参数不匹配。客户端输入:321年,杰克
控制台输出:作者bookId=321=杰克
客户端界面(ajax):
& lt; button>点我& lt;/button> & lt; script> 函数clickMe () { . ajax({美元 类型:“文章”, url:“/queryStringWithSpecName”, 数据:{ “bookId”: 1、 “作者”:“杰克” }, }); } & lt;/script> >之前控制器层:(不变)
客户端:数据:{“作者”:“杰克”}
控制台输出:bookId=null,作者=杰克(如果bookId为int类型,控制台会抛出异常)
客户端:数据:{“bookId”: 1}
控制台输出:org.springframework.web.bind。MissingServletRequestParameterException:需要字符串参数‘作者’不存在
通过需要设置可选参数,需要为假时表示可以不带参数,为真时表示必须带参数(默认值为true)。
当可选参数不存在时,弹簧默认将其赋值为空(null),但由于bookId已定义为基本类int型,所以赋值会失败。解决方法:采用int包装类整数。
客户端界面(表单):
& lt;形式action="/queryStringWithDomainObj”方法=皃ost”比; & lt;输入类型=拔谋尽钡拿?癰ookId”比; & lt;输入类型=拔谋尽钡拿?白髡摺北? & lt;输入类型="提交" value=" https://www.yisu.com/zixun/提交”比; & lt;/form> >之前控制器层:
@ controller 公开课ParamPassDemo { @RequestMapping ("/queryStringWithDomainObj”) 公共字符串test3(本书){ System.out.println (“bookId=" + book.getBookId() +”,作者=" + book.getAuthor ()); 返回“指数”; } }Spring MVC常用客户端参数接收方式详解