• [springMVC学习]5、模型数据处理


    目录

    准备工作

    数据放入request域

    通过HttpServletRequest设置域属性

    通过Map进行设置

    通过ModelAndView进行设置

    session域中放入数据

    @ModelAttribute实现prepare方法

    总结


    准备工作

            先创建一个jsp页面用于演示

    1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    2. <html>
    3. <head>
    4. <title>展示数据title>
    5. head>
    6. <body>
    7. <h1>后端返回的信息:${message}h1>>
    8. body>
    9. html>

             然后创建一个方法,返回该页面的路径

    1. public String showModel() {
    2. return "/WEB-INF/pages/showModel.jsp";
    3. }

    数据放入request域

            在开发过程中,我们可以将数据放入request域中,然后再前端进行使用(如JSP)

    通过HttpServletRequest设置域属性

            第一种方式就是通过原生的servletAPI进行设置

    1. @RequestMapping("/f1")
    2. public String f1(HttpServletRequest request) {
    3. request.setAttribute("message", "Hello World!!!");
    4. return showModel();
    5. }

             运行tomcat,访问该方法,成功设置域属性

    通过Map进行设置

            我们在方法参数列表写上一个Map参数,我们只需要将数据放入map,该map的数据会自动放入request域

    1. @RequestMapping("/f2")
    2. public String f2(Map map) {
    3. map.put("message", "这是通过map设置数据");
    4. return showModel();
    5. }

             前端成功显示数据

             下面来解释下原理,还是直接看源码,可以发现,我们返回的

            在反射方法结束之后便会返回一个ModelAndView,下面再来看看getModelAndView方法

             defaultModel是通过put方法进行设置的,我们获取的Map是springmvc给我们提供的特殊Map,该map的put方法就会给defaultModel进行添加数据


    通过ModelAndView进行设置

            我们直接返回一个MdoelAndView,直接在ModelAndView添加值即可。

    1. @RequestMapping("/f3")
    2. public ModelAndView f3() {
    3. ModelAndView modelAndView = new ModelAndView();
    4. modelAndView.setViewName(showModel());
    5. modelAndView.addObject("message", "通过返回ModelAndView进行设置数据");
    6. return modelAndView;
    7. }

             这种方式就十分简单了,原理就是springmvc我们返回的ModelAndView,将视图名称和model设置到最终的ModelAndViewContainer容器中,下面直接看源码


    session域中放入数据

            这个很简单,就是通过HttpSession来进行的,先创建一个jsp页面进行展示

    1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    2. <html>
    3. <head>
    4. <title>展示数据title>
    5. head>
    6. <body>
    7. <h1>后端返回的信息--request域:${requestScope.message}h1>
    8. <h1>后端返回的信息--session域:${sessionScope.message}h1>
    9. body>
    10. html>

             通过session来进行设置

    1. @RequestMapping("/f4")
    2. public String f4(HttpSession session){
    3. session.setAttribute("message","通过session设置的值");
    4. return showModel();
    5. }


    @ModelAttribute实现prepare方法

            我们通过@ModelAttribute可以标识一个方法,该方法会在本类的handler调用前进行调用,执行一些预处理。

    1. @ModelAttribute
    2. public void prepare(){
    3. System.out.println("执行了prepare方法");
    4. }

             只要我们访问该类的handler,那么就会先执行该方法


    总结

            由于前后端分离,个人感觉使用不是很多了,了解即可 

  • 相关阅读:
    position: sticky;实现顶部悬停,吸顶效果
    待抓取位姿转换到世界坐标系下
    uniapp中人脸识别图片并圈起人脸
    C++学习笔记1
    基于GRU的 电影评论情感分析 - python 深度学习 情感分类 计算机竞赛
    DGUS新升级:全面支持数字视频播放功能
    π110E30 单通道数字隔离器兼容代替Si8610BC-B-IS
    我的Vue之旅 10 Gin重写后端、实现页面详情页 Mysql + Golang + Gin
    Qt串口基本设置与协议收发
    【UV打印机】墨路之过滤器
  • 原文地址:https://blog.csdn.net/m0_51545690/article/details/126005236