Spring MVC常用客户端参数接收方式详解

  

在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常用客户端参数接收方式详解