最新免费Redis连接工具RedisDesktopManager_2021.6.0

Linux用户和组

  返回  

SpringMVC中request域共享数据的方法--这么多方法,原理都一样,你要pick哪个?

2021/8/21 18:00:02 浏览:

在这里插入图片描述
SpringMVC中向request域放数据时,有5种方法:

1. 原生的Servlet

有点混搭了, 都有了Spring框架了,还使用Servlet写代码,是不是有点对不起这个框架呢?

  1. HTML 中
<a th:href="@{/testServlet}"> test testServlet</a>
  1. SpringMVC的控制器方法如下写法
@RequestMapping("/testServlet")
public String testServlet(HttpServletRequest request, HttpServletResponse response) {
    request.setAttribute("key", "value");
    return "scopesucc";
}
  1. 返回数据
<p th:text="${key}"></p>

2. SpringMVC常用 ModelAndView 实现

@RequestMapping("/testScope")
public ModelAndView testScope(){
    ModelAndView mov = new ModelAndView();

    mov.addObject("key1", "value1");

    mov.setViewName("scopesucc");
    return mov;
}

3. Model、Map和ModelMap 实现

@RequestMapping("/testModel")
public String testModel(Model model){
    model.addAttribute("key2", "value2");
    return "scopesucc";
}
@RequestMapping("/testMap")
public String testModel(Map<String, Object> map){
    map.put("key3", "value3");
    return "scopesucc";
}
@RequestMapping("/testModelMap")
public String testModelMap(ModelMap modelMap){
    modelMap.addAttribute("key4", "value4");
    return "scopesucc";
}

如果分别看下 这个对象所属的类,比如 model.getClass().getName(),我们会发现,这三种实现方式的mode/map/modelMap 对象都是 BindingAwareModelMap 类的示例。

我们看下这几个类、接口的关系。很显然,IoC容器中将 BindingAwareModelMap 的实例传注入到了我们的控制器方法形参中。
在这里插入图片描述

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号