设为首页 加入收藏

TOP

day03-模型数据(一)
2023-07-26 08:17:02 】 浏览:69
Tags:day03-

模型数据

1.数据放入request

  • 说明:开发中,控制器/处理器中获取的数据如何放入request域,然后在前端(vue/jsp/...)取出显示?

先来看一个例子

应用实例需求:表单提交信息,后端获取信息,并通过request转发到另一个页面,显示信息。

image-20230206181733509 image-20230206181746223

需要知道的是:前端提交的数据,springmvc会自动地封装到java对象中,同时 springmvc 会自动地将其放入request 域中,这样我们就可以在跳转的下一个页面取出数据。


  1. mode_date.jsp提交数据:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>model_data</title>
    </head>
    <body>
    <form action="vote/vote05" method="post">
      主人id:<input type="text" name="id"/><br/>
      主人名:<input type="text" name="name"/><br/>
      宠物id:<input type="text" name="pet.id"/><br/>
      宠物名:<input type="text" name="pet.name"/><br/>
      <input type="submit" value="添加主人和宠物"/><br/>
    </form>
    </body>
    </html>
    
  2. VoteHandler.java:

    springmvc会自动将数据封装到Javabean中,并将获取的model模型放入到request域中。

    package com.li.web.requestparam;
    
    import com.li.entity.Master;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    /**
     * @author 李
     * @version 1.0
     */
    @RequestMapping(value = "/vote")
    @Controller
    public class VoteHandler {
        /**
         * 1.提交的数据->springmvc会自动地封装到 java对象
         * ->同时 springmvc 会自动地将其放入request域中
         * 2.这样就可以在跳转的下一个页面取出数据
         */
        @RequestMapping(value = "/vote05")
        public String test05(Master master) {
            //springmvc会自动的把获取的model模型放入request域中,名字就是 master
            return "vote_ok";
        }
    }
    
  3. 转发的页面 vote_ok.jsp:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>vote_ok</title>
    </head>
    <body>
    <h1>取出request域中的信息</h1>
    主人的id=${requestScope.master.id}
    主人的名字=${requestScope.master.name}
    宠物的id=${requestScope.master.pet.id}
    宠物的名字=${requestScope.master.pet.name}
    </body>
    </html>
    

访问mode_date.jsp,提交数据:

image-20230206184133385

转发页面vote_ok.jsp成功地拿到了request域中的信息:

image-20230206184201411

从上述代码中可以看出springmvc会自动将获取的model数据添加到request域中。同时我们也可以手动添加修改数据,并放入到request域中,有如下三种方式:

1.1方式1-通过HttpServletRequest放入request域

  1. 这种方式就是原生的javaweb方式,可以在request域中以k-v形式,直接放入普通字符串,也可以放入对象

  2. 同时springmvc 自动放入request域的model也可以被修改

  3. 注意:springmvc放入request域中的对象的key值,是按照对象的类型(首字母小写)存放的,和方法的形参名无关

修改VoteHandler.java:

@RequestMapping(value = "/vote05")
public String test05(Master master100, HttpServletRequest request) {
    //1.springmvc会自动的把获取的model模型放入request域中,名字就是 master
    //2.也可以手动添加数据到request域中
    request.setAttribute("address", "beijing");
    //3.同时可以修改 master的属性值
    master100.setName("hahahah");
    //4.分析一下springmvc默认存放对象到request域中,属性名是如何确定的?
    //  是按对象的类型(首字母小写)放入的,和方法的形参名无关
    //  因此我们在转发的页面按照该名称是可以拿出来的
    return "vote_ok";
}

mode_date.jsp不变,vote_ok.jsp添加address获取。

提交数据:

image-20230206190545490

转发页面获取的数据:

image-20230206190608418

1.2方式2-通过请求的方法参数Map<String,Object>放入request域

springmvc会遍历map,将map中的k-v存放到request域中。因此你会发现在转发页面中,直接通过${requestScope.key}也可以获取属性的数据。

修改VoteHandler.java:

/**
 * 演示通过Map<String,Object>设置数据到request域
 */
@RequestMapping(value = "/vot
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【学习笔记】Http请求方法总结 下一篇JAVA中如何判断一个ResultSet结果..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目