请选择 进入手机版 | 继续访问电脑版
搜索
房产
装修
汽车
婚嫁
健康
理财
旅游
美食
跳蚤
二手房
租房
招聘
二手车
教育
茶座
我要买房
买东西
装修家居
交友
职场
生活
网购
亲子
情感
龙城车友
找美食
谈婚论嫁
美女
兴趣
八卦
宠物
手机

SpringMVC 请求参数绑定

[复制链接]
查看: 54|回复: 0

1万

主题

2万

帖子

4万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
48017
发表于 2019-12-4 02:23 | 显示全部楼层 |阅读模式
什么是请求参数绑定

请求参数格式

  默许是key/value格式,比如:http:xxxx?id=1&type=2
请求参数值的数据典范

  都是字符串典范的各类值
请求参数值要绑定的方针典范

  Controller类中的方式参数,比如简单典范、POJO典范、聚集典范等。
SpringMVC内置的参数分解组件

  默许内置了24种参数分解组件(ArgumentResolver)
什么是参数绑定?

  就是将请求参数串中的value值获得到以后,举行典范转换,然后将转换后的值赋值给Controller类中方式的形参,这个进程就是参数绑定
SpringMVC 请求参数绑定  游戏 1504448-20191203225957091-1690733793


默许支持的参数典范(Servlet API支持)

Controller方式形参中可以随时增加以下典范的参数,处置惩罚适配器会自动识别并举行赋值。

  • HttpServletRequest

    • 经过request工具获得请求信息

  • HttpServletResponse

    • 经过response处置惩罚响应信息

  • HttpSession

    • 经过session工具获得session中寄存的工具

  • InputStream、OutputStream
  • Reader、Writer
  • Model/ModelMap

    • ModelMap继续自LinkedHashMap,Model是一个接口,它们的底层实现都是同一个类(BindingAwareModelMap),感化就是向页面传递数据,相当于Request的感化,以下

绑定简单数据典范

简单典范参数绑定方式

  简单典范指的就是8种底子典范数据以及它们的包装类,还有String典范。
  在SpringMVC中,对于java简单典范的参数,举荐的参数绑定方式有两种:

  • 间接绑定
  • 注解绑定
间接绑定

要求

  http请求参数的key和controller方式的形参称号齐截
请求URL

  http://localhose:8080/xxx/findItem?id=1
  请求参数的key为id
Controller方式

  Controller的形参为Interger id,它和请求参数的key齐截,所以间接绑定乐成
  1. @RequestMapping(value = "/findItem")    public String findItem(Integer id) {         System.out.println("吸收到的请求参数是:"+ id);        return "success";    }
复制代码
注解绑定

要求

  请求参数key和controller方式的形参称号不齐截时,需要利用@RequestParam注解才华将请求参数绑定乐成。
请求URL

  http://localhost:8080/xxx/findItem?itemId=1
  请求参数的key为itemId
Controller方式

  Controller的形参为Integer id,它和请求的参数不齐截,需要利用@RequestParam注解才华绑定乐成
  1.      @RequestMapping(value = "/findItem")    // 经过@RequestParam注解绑定简单典范    public String findItem(@RequestParam("itemId") Integer id) {          System.out.println("吸收到的请求参数是:"+ id);          return "success";    }
复制代码
RequestParam注解先容

  value:参数名字,即入参的请求参数名字,如value="itemId"表现请求的参数中的名字为itemId的参数的值将传入
  required:能否必须,默许是true,表现请求中必定要有响应的参数,否则将报;
    http Status 400 - Required Integer parameter 'xxx' is not present
  defaultValue:默许值,表现假如请求中没有同名参数时的默许值
  1. @RequestMapping(value = "/findItem")    // 经过@RequestParam注解绑定简单典范    // 进修@RequestParam注解中的value、required、defaultValue属性    public String findItem (            @RequestParam(value = "itemId", required = true, defaultValue = "2") Integer id) {         System.out.println("吸收到的请求参数是:"+ id);          return "success";    }
复制代码
绑定POJO典范

要求

  控制器方式的参数典范是POJO典范。
  要求表单中参数称号和POJO类的属性称号连结齐截。
请求URL

  http://localhost:8080/xxx/updateItem?id=!&name=iphone&price=1000
Controller方式

POJO界说:
SpringMVC 请求参数绑定  游戏 1504448-20191203234829689-129788007


Controller方式
  1. @RequestMapping("/updateItem")    public String updateItem(Integer id,Items item) {                 System.out.println("吸收到的请求参数是:"+ id);         System.out.println("吸收到的请求参数是:"+ item);        return "success";    }
复制代码
绑定包装POJO

  包装POJO类,仍然是一个POJO,只是说为了方便相同,将POJO中包含另一个POJO的这类类,称之为包装POJO。
包装工具
  1. public class ItemQueryVO {    //商品信息    private Items item;}
复制代码
页面界说(item-list.jsp)
  1. 查询条件:        [table=98%]            [tr]                [td]商品称号:[/td]                [td][/td]            [/tr]        [/table]
复制代码
Controller方式

SpringMVC 请求参数绑定  游戏 1504448-20191203235338986-1323249926


测试方式:断点跟踪,检察vo中的item工具能否有值
利用简单典范数组吸收参数

要求

  经过HTTP请求批量传递简单典范数据的情况,Controller方式中可以用String[]大要POJO的String[]属性吸收(二选一),可是不能利用聚集吸收
请求URL

  http://localhost:8080/xxx/deleteItem?id=1&id=2&id=3
Controller方式
  1.     @RequestMapping("/deleteItem")    public String deleteitem(Integer[] itemId){                return "success";    }
复制代码
利用POJO典范聚集或数组吸收参数

要求

  批量传递的请求参数,终极要利用List来吸收,那末这个List必须放在另一个POJO类中。
吸收商品列表的POJO
  1. public class ItemQueryVO {    // 商品信息    private Item item;    // 其他信息    // 商品信息聚集    private List itemsList;}
复制代码
请求URL

  http://localhost:8080/xxx/batchUpdateItem?itemsList[0].id=1&itemsList[0].name=iphone&itemsList[0].price=1000&itemsList[1].id=2&itemsList[1].name=华为&items[1].price=5000
Controller
  1.     @RequestMapping("/batchUpdateItem")    public String batchUpdateItem(ItemQueryVO vo) {        return "success";    }
复制代码
自界说参数绑定

请求URL

  http://localhost:8080/xxx/saveItem?date=2019-12-4
Controller方式
  1.     @RequestMapping("/saveItem")    public String saveItem(String date){        System.out.println("吸收到的请求参数是:"+ date);        return "success";    }
复制代码
可是怎样将date参数的典范有String改成Date,则报错
自界说Converter
  1. public class DateConverter implements Converter {    @Override    public Date convert(String source) {        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");        try {            return simpleDateFormat.parse(source);        } catch (ParseException e) {            e.printStackTrace();        }        return null;    }}
复制代码
设备Converter

在springmvc.xml中,举行以下设备
  1.                                                                            
复制代码
免责声明:假如加害了您的权益,请联系站长,我们会实时删除侵权内容,感谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2006-2014 妈妈网-中国妈妈第一,是怀孕、育儿、健康等知识交流传播首选平台 版权所有 法律顾问:高律师 客服电话:0791-88289918
技术支持:迪恩网络科技公司  Powered by Discuz! X3.2
快速回复 返回顶部 返回列表