SpringBoot---web-->>复杂参数Model、Map解析原理【用model、map操作请求参数】(5)

复杂参数Model、Map解析原理【用model、map操作请求参数】

早在Mvc阶段就知道,能用Model、Map存储数据然后在页面展示。现在探索的是拿到数据解析完参数,怎么把数据放在域中,展示在页面上。也就是如何完成渲染视图的过程的

控制器方法

这里把两个参数的required属性设置为不必须false(测试懒得改代码就要学会改属性),是因为在底下那个即将转发到这个控制器方法里面的请求内没有携带这两个名字的参数,required默认值是true,在访问请求时会报没有参数的错,所以设置为false

@ResponseBody
@RequestMapping("/requestParam")
public Map testRequestParam(@RequestAttribute(value = "msg",required = false) String msg,
                            @RequestAttribute(value = "code",required = false) String code,
                            HttpServletRequest request){
    Map map = new HashMap();
    map.put("msg",msg);
    map.put("code",code);
    Object msg1 = request.getAttribute("msg");
    System.out.println("msg1 = " + msg1);
    Object baby = request.getAttribute("baby");
    map.put("baby",baby);
    Object model1 = request.getAttribute("model1");
    map.put("model",model1);
    Object req1 = request.getAttribute("req1");
    map.put("req",req1);
    return map;
}
​
@RequestMapping("/map")
public String testModel(Map<String,Object> map,
                        Model model,
                        HttpServletRequest request,
                        HttpServletResponse response){
    map.put("baby","PaKe");
    model.addAttribute("model1","Petter");
    request.setAttribute("req1","value1");
    Cookie cookie = new Cookie("k1","v1");
    response.addCookie(cookie);
    return "forward:/requestParam";
}

首先启动服务器,然后请求map,发现能够转发并通过request.getAttribute方法获取到存储在map、Model内的数据,这说明map、model存储的数据实际上在处理过程中被放在了request域中,即map、model会把数据放在request域中,然后通过reuqest对象操作获取,想知道为什么放进去、具体执行如何执行的

请求map,开始debug

首先来到DispatcherServlet中,确定处理请求控制器方法的适配器为RequestMappingXXXX,

然后来到mv = ha.handle....这一行处理参数解析器和执行控制器方法,进入

来到AbstractHandlerMethodAdapter--->>handle方法࿰

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值