文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringMVC域对象共享数据怎么实现

2023-06-30 16:52

关注

本文小编为大家详细介绍“SpringMVC域对象共享数据怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringMVC域对象共享数据怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

SpringMVC域对象共享数据

一、域对象

1. 域对象的作用

就是在一定范围内可以共享数据,通常有 3 种:

2. 域对象生命周期
3. 使用原则

在满足需求的前提下,能选择小范围的就不选择大范围的。

举例,一个查询列表场景,这种一般放在 request 域中,当然了放在更大的2个里面也可以,但是没必要。

因为除了查询还同时会存在增删改的功能,所以我们要每次去查询一次才可以保证数据是最新的,这时候如果放在更大的域比如 session 中,那么在一次请求中只会用到一次,其他时候这个空间就浪费掉了。

二、向域对象共享数据

1. 向 request 域对象共享数据

(1)使用 servletAPI 向 request 域对象共享数据

@Controllerpublic class ScopeController {    @RequestMapping("/testServletAPI")    public String testServletAPI(HttpServletRequest request){        request.setAttribute("testScope", "hello,servletAPI");        return "success";    }}

在控制器方法里,设置 request 域对象中的数据,key 是testScope,value是"hello,servletAPI",最后这个请求转发到了 success.html 上。

那么在 success.html 中就可以获得域对象中的数据了,直接使用 key:

<!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head>    <meta charset="UTF-8">    <title>Title</title></head><body><p>success</p><p th:text="${testScope}"></p></body></html>

现在访问http://localhost:8080/springmvc/testServletAPI,

SpringMVC域对象共享数据怎么实现

可以看到展示出了获取到的 request 域中共享的数据。

(2)使用 ModelAndView 向 request 域对象共享数据

ModelAndView 有 Model和 View的功能,Model主要用于向请求域共享数据,View主要用于设置视图,实现页面跳转。这种也是 springMVC 建议使用的方式。

注意控制器方法必须要返回 ModelAndView 类型的对象。

@RequestMapping("/testModelAndView")public ModelAndView testModelAndView(){        ModelAndView mav = new ModelAndView();    //向请求域共享数据    mav.addObject("testScope", "hello,ModelAndView");    //设置视图,实现页面跳转    mav.setViewName("success");    return mav;}

访问一下http://localhost:8080/springmvc/testModelAndView:

SpringMVC域对象共享数据怎么实现

获取成功。

(3)使用 Model 向 request 域对象共享数据

这里的 Model 其实就是上面 ModelAndView 中的 Model 。

@RequestMapping("/testModel")public String testModel(Model model){    model.addAttribute("testScope", "hello,Model");    return "success";}

测试一下:

SpringMVC域对象共享数据怎么实现

获取成功。

(4)使用 map 向 request 域对象共享数据

还可以使用 map 集合来实现,这时候向 map 集合中存放的数据,就是要共享的数据:

@RequestMapping("/testMap")public String testMap(Map<String, Object> map){    map.put("testScope", "hello,Map");    return "success";}

测试一下:

SpringMVC域对象共享数据怎么实现

获取成功。

(5)使用 ModelMap 向 request 域对象共享数据

@RequestMapping("/testModelMap")public String testModelMap(ModelMap modelMap){    modelMap.addAttribute("testScope", "hello,ModelMap");    return "success";}

测试一下:

SpringMVC域对象共享数据怎么实现

获取成功。

Model、ModelMap、Map的关系

Model、ModelMap、Map类型的参数其实本质上都是 BindingAwareModelMap 类型的。

分别查看源码可知如下关系:

public interface Model{}public class ModelMap extends LinkedHashMap<String, Object> {}public class ExtendedModelMap extends ModelMap implements Model {}public class BindingAwareModelMap extends ExtendedModelMap {}
2. 向 session 域共享数据

直接使用 servlet 原生的 HttpSession 即可:

@RequestMapping("/testSession")public String testSession(HttpSession session){    session.setAttribute("testSessionScope", "hello,session");    return "success";}

success 页面也需要修改了,通过 session.testSessionScope获取数据展示:

... ...<p th:text="${session.testSessionScope}"></p>... ...

重新部署访问http://localhost:8080/springmvc/testSession:

SpringMVC域对象共享数据怎么实现

3. 向 application 域共享数据

其实这里的 application 指的就是 ServletContext 对象,用 session.getServletContext() 来获取即可:

@RequestMapping("/testApplication")public String testApplication(HttpSession session){ServletContext application = session.getServletContext();    application.setAttribute("testApplicationScope", "hello,application");    return "success";}

success.html 修改:

... ...<p th:text="${application.testApplicationScope}"></p>... ...

重新部署访问http://localhost:8080/springmvc/testApplication:

SpringMVC域对象共享数据怎么实现

获取成功。

读到这里,这篇“SpringMVC域对象共享数据怎么实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯