Spring MVC 中处理模型数据 (一)ModelAndView ModelMap @sessionAttributes

Spring MVC:域对象共享数据 Spring MVC域对象共享数据介绍 阅读详情

1、目标方法的返回值可以是 ModelAndView 类型。
* 其中可以包括视图和模型信息
* SpringMVC 会把 ModelAndView 的 model 中数据放到 request 域对象中。

2、目标方法可以添加Map 类型(实际上也可以是Model类型 或 ModelMap类型)的参数。

3、@sessionAttributes 除了可以通过属性名制定需要放到会话中的属性外(实际上使用的是value属性值)
* 还可以通过模型属性的对象类型制定哪些模型属性需要放到会话中(实际上使用的是types 属性值)
*
* 注意:该注解只能放在类的上面,而不能修饰方法。

4、@ModelAttribute 方法入参标注该注解后,入参的对象就会放到数据模型中。

这里面先讲前面三种,因为第四种是比较难比较重要。

强调一下@SessionAttributes(value={“user”}, types={String.class})
如果不放这个注解,session是取不到值的,因为不会存入进去,这个value的值和下面的值是相等的就会存放到session里面去。

SpringMVCTest.java

package com.hust.springmvc1;

import java.util.Arrays;
import java.util.Date;
import java.util.Map;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;

import com.hust.springmvc.entities.User;

@SessionAttributes(value={"user"}, types={String.class})
@Controller
@RequestMapping("/springmvc")
public class SpringMVCTest { 

    private static final String SUCCESS = "success";

    /**
     * @sessionAttributes 除了可以通过属性名制定需要放到会话中的属性外(实际上使用的是value属性值)
     * 还可以通过模型属性的对象类型制定哪些模型属性需要放到会话中(实际上使用的是types 属性值)
     * 
     * 注意:该注解只能放在类的上面,而不能修饰方法。
     */
    @RequestMapping("/testSessionAttributes")
    public String testSessionAttributes(Map<String, Object> map) {
        User user = new User("yexx", "123456", "yexx@hust.com", 12);
        map.put("user", user);
        map.put("school", "HUST"); 
        return SUCCESS;  
    }

    /**
     * 目标方法可以添加Map 类型(实际上也可以是Model类型 或 ModelMap类型)的参数
     */
    @RequestMapping("/testMap")
    public String testMap(Map<String, Object> map) {
        System.out.println(map.getClass().getName());
        map.put("names", Arrays.asList("Tom", "Jack", "Mike"));
        return SUCCESS;
    }

    /**
     * 目标方法的返回值可以是 ModelAndView 类型。
     * 其中可以包括视图和模型信息
     * SpringMVC 会把 ModelAndView 的 model 中数据放到 request 域对象中。
     */
    @RequestMapping("/testModelAndView")
    public ModelAndView testModelAndView() {
        String viewName = SUCCESS;
        ModelAndView modelAndView = new ModelAndView(viewName);

        //添加模型数据到 ModelAndView 中
        modelAndView.addObject("time", new Date());
        return modelAndView;
    }
}

因为我们是把模型对象传到前台,所以success页面我们改动了。

success.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <h1>success...</h1>

    time: ${ requestScope.time }
    <br /> 
    names: ${ requestScope.names }
    <br /> 
    request user: ${ requestScope.user }
    <br /> 
    session user: ${ sessionScope.user }
    <br /> 
    request school: ${ requestScope.school }
    <br /> 
    session school: ${ sessionScope.school }
</body>
</html>

在user这个类里面加入构造方法。
user.java

package com.hust.springmvc.entities;

public class User {
    private String username;
    private String password;

    private String email;
    private int age;

    private Address address;

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User [username=" + username + ",password=" + password + ",email=" + email + ",age=" + age + ",adress"
                + address + "]";
    }

    public User(String username, String password, String email, int age) {
        super();
        this.username = username;
        this.password = password;
        this.email = email;
        this.age = age;
    }

    public User() {
    }

}

这里写图片描述

感觉这个功能太强大了,比以前的好用多了,下一篇介绍@ModelAttribute 。

逆向工程实战:手把手教你破解药监局网站的动态数据加载机制(Python+Chrome开发者工具) 本文详细介绍了如何利用Python和Chrome开发者工具逆向破解药监局网站的动态数据加载机制。通过分析Ajax请求、解析JSON响应数据以及处理动态参数,帮助开发者高效采集动态加载内容,适用于爬虫开发与数据分析场景。 阅读详情

相关推荐

ROST_CM6软件之词频分析、社会网络和语义网络分析、情感分析

简介 ROST CM 6是武汉大学沈阳教授研发编码的国内目前唯一的以辅助人文社会科学研究的大型免费社会计算平台。该软件可以实现微博分析、聊天分析、全网分析、网站分析、浏览分析、分词、词频统计、英文词频统计、流量分析、聚类分析等一系列文本分析。 社会网络和语义网络分析(S) 数据 注意,保存时编码要为ANSI 所以这里需要转换一下 准备自定义表与停词表 例如 同时,点击快速分析后,将会弹出网络图 对网络图进行设置 对布局进行设置 对节点、边进行设置 最终效果图 修改 情感分析

积一时之步,臻千里之遥程 9万+

Spring MVC 模型数据,添加模型数据的5大方式。

Spring MVC 框架作为一个 MVC 框架,很重要的一项工作是在控制器获取模型数据并返回给前端, 在 JSP 页面展示模型数据,使用的技术是通过 EL 表达式从域对象中取值; 四大域:pageContext、request、session、application。 我们常用到的request 和 session这两个域对象; Spring MVC 提供了以下几种方式添加模型数据: Ma...

Syntacticsugar's blog 1242

NHANES数据库实战:数据合并与加权分析技巧

本文详细解析了NHANES数据库实战中的核心技巧,重点阐述了数据合并与加权分析的正确方法。通过两个具体案例,手把手指导如何从数据下载、合并、权重计算到使用R语言survey包进行加权统计分析,避免因忽略复杂抽样设计而导致的研究偏倚,确保分析结果的准确性与可发表性。

weixin_29057065的博客 585

SpringMVC学习总结(四)使用ModelAndView、Model、Map、ModelMap向request域对象共享数据向session、application域对象共享数据

我们知道,包括:pageContext、request、和application,而pageContext有效范围为一个jsp页面,太小了,而application有效范围为整个web工程,又太大了。因此我们平时的开发中在域对象中共享数据主要是用request和session。四个域对象分别是:pageContext (PageContextImpl 类) 同一个 jsp 页面范围内有效request (HttpServletRequest 类)一次请求内有效。

long3359的博客 928

保姆级教程:用Anaconda+PyCharm搞定YOLOv8本地部署(附避坑指南)

本文提供了一份详细的YOLOv8本地部署指南,涵盖Anaconda环境配置、PyCharm集成到模型部署的全过程。特别针对国内开发者需求,整合了镜像加速和常见报错解决方案,帮助快速完成目标检测模型的本地部署与实战应用。

weixin_42528090的博客 433

YOLOv12涨点改进 | 全网独家首发Conv改进篇 | Arxiv 2025 | 引入一种新的WConv加权卷积改进YOLOv12,显著提升其特征提取能力和目标检测精度

本文提出了一种新型加权卷积(WConv)模块,通过引入最优密度函数动态调整邻域像素权重,显著提升了YOLOv12目标检测性能。WConv在保持参数数量不变的情况下,提高了模型精度(VGG准确率提升10%)、增强了小目标检测能力,并改善了多尺度特征提取。文中详细介绍了模块原理、网络结构改进方法,并提供了核心代码实现和yaml配置文件。实验表明,该方法在图像任务中最高可降低53%的损失,虽然会带来11%的时间开销,但具有优异的鲁棒性。该技术可广泛应用于2D/3D图像处理领域。

Ai缝合怪、助力小伙伴高效发论文 216

怎么样把ModelMap里面的数据放入Session里面?

怎么样把ModelMap里面的数据放入Session里面?

weixin_73756660的博客 800

华为OD新系统机试真题-8位LED控制器(C/C++/Py/Java/Js/Go)

华为OD新系统机试真题【8位LED控制器】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD新系统4月19号机试真题【8位LED控制器】

qq_45776114的博客 599

JAVA面试题3

JAVA面试题

weixin_61557810的博客 311

MATLAB - 浮动基座机器人的逆运动学

本例演示如何解决以浮动底座为模型的机器人的逆运动学问题。浮动底座机器人可以在空间中自由平移和旋转,具有六个自由度。浮动基座机器人的逆运动学问题适用于空间应用,即使用安装在浮动和致动基座上的机械臂在空间操纵物体,也适用于躯干和腿部可在空间自由移动的行走机器人。请注意,刚体树对象表示具有固定基体的刚体树。这意味着刚体树的基体在世界中具有固定的位置和方向。您可以在基体上附加一个 “浮动 ”类型的刚体关节,为具有浮动基体的机器人建模,以用于动态模拟等某些应用。

机器人控制与仿真应用 2440

Oracle EBS 寄销/VMI(1)-->基础设置

名词解释:     BPA:一揽子采购协议     BPR:一揽子发放     SR:来源补充规则     ASL:合格供应商列表     VMI: 供应商管理库存     寄售(Consignment)是把货物放在客户那里,客户要用的时候才付款的库存,一般是指卖方把

陈显平的专栏-Oracle EBS 1万+

SpringMVC——模型数据处理

一、模型数据处理的方式  1、将控制器方法的返回值类型设置为ModelAndView:通过ModelAndView对象我们既可以设置视图,也可以设置模型数据,模型数据可以在视图(如jsp页面)中通过EL表达式或者jsp表达式获取: @RequestMapping(value = "/testModelAndView") public ModelAndView testModelAndView(Mo...

如不來的博客 680

(王道408考研数据结构)第二章线性表-第一节:线性表的定义和基本操作

文章目录一:线性表的定义二:线性表的基本操作 一:线性表的定义 线性表(Linear List):零个或多个数据元素的有限序列 元素之间是有顺序的 若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他元素都有且只有一个前驱和后继 线性表强调有限,“所有的整数按递增次序排列”很明显不是线性表 线性表可以表示为 L=(a1,a1,...,ai+1,...,an)L=(a_{1},a_{1},...,a_{i+1},...,a_{n})L=(a1​,a1​,...,ai+1​,...,an​) a

快乐江湖的博客 3705

springMvc ModelAndView

ModelAndView package springMvc01.MVC.handlers; import java.io.IOException; import java.io.Writer; import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.

chuyunzhiyue50的博客 457

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SpringMVC-请求处理与数据输出

请求处理 三种注解 RequestParam 获取请求参数 /** * 默认情况下函数参数就是需要获取的字段值,若不传值则为null * 当请求信息里面的字段与需要获取的字段名称不一样时,则可使用@RequestParam("user")注解来获取值,这种情况下 * 必须传递值,否则报错 * RequestParam注解属性 * * value:指定获取的参数key * * required 是否必须传值,默认是true * * def

qq_44486437的博客 261

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

《SpringMVC视频教程》(p6)

p6 处理模型数据,及ModelAttribute等注解的使用 1.处理模型数据 如果跳转时需要带数据:V、M,则可以使用以下方式: ModelAndView、ModelMap 、Map、Model -数据放在了request作用域 @SessionAttributes、@ModelAttribute 示例: public String testModel(Model model|...

garrulousabyss的博客 144

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

总结了一些SpringMVC的一些重点知识,简单易懂02

1.处理模型数据 如果跳转时需要带数据:V、M,则可以使用以下方式: ModelAndView、ModelMap、Map、Model     ——数据放在了request作用域 @SessionAttributes、@ModelAttribute 示例: ModelMap、                    ↓  放入request作用域中↓ public String testModel...

少年唐玄奘的博客 184

SpringMVC学习

SpringMVC学习开发路程 - 加入jar包 - 在web.xml总dispatchcherServlet - 加入SpringMvc配置文件 - 编写请求处理器并标识为控制器 - 编写视图1、加入jar包 SpringMVC介绍:https://www.cnblogs.com/leskang/p/5426829.html2.在web.xml总dispatchcherServlet,

anwanfei的博客 219

处理模型数据ModelAndView、ModelMap、Map、Model、@SessionAttributes、@ ModelAttribute

处理模型数据 如果页面跳转时需要携带数据,则可以使用以下几种方式: 这几种方式都将数据放在了request作用域 ModelAndView、ModelMap、Map、Model、SessionAttributes、@ModelAttribute ModelAndView方式 请求页面 <a href="handler/testModelAndView">ModelAndVie...

qq_45168713的博客 299

Spring MVC 传递模型数据到视图中方法总结

Spring MVC 传递模型数据到视图中的方法总结一般来说,有如下的4种方法来传递模型数据到视图中1、ModelAndView要求:处理方法返回值类型为 ModelAndView。在方法体中我们通过该ModelAndView对象添加模型数据。2、Model/Map/ModelMap要求:使用org.springframework.ui.Model、org.springframework.ui.Mo

wojiushimogui的博客 1万+

Spring MVC中的@SessionAttributes注解

@SessionAttributes注解用于:将响应方法中处理请求时添加的与该注解匹配的数据添加到session中。 1、该注解只能应用在类上 2、这种添加方式在Map的put方法、Model和ModelMap的addAttribute方法或ModelAndView的addObject方法中有效。 3、@SessionAttributes值:可以通过value或names注解属性指定哪些属性放到S...

qiangzhogshou的博客 427

java web项目怎么在页面输出控制台数据_Spring MVC入门(五):响应数据传出

一、SpringMVC输出模型数据概述 Spring MVC提供了以下几种途径输出模型数据:ModelAndView —— 控制器的处理方法返回值类型为ModelAndView时,在处理方法中就可以通过该对象添加模型数据,然后输出。Map、Model及ModelMap —— 入参为Model、ModelMap或Map时,处理方法返回时,Map中的数据会自动添加到模型中...

weixin_42144201的博客 1677

Spring MVC 处理模型数据

对于 MVC 框架来说,模型数据是最重要的,因为控制(C)是为了产生模型数据(M),而视图(V)则是为了渲染模型数据。 通过前面的学习我们己经知道,Spring MVC 通过 @RequestMapping 将请求引导到处理方法上,使用合适的方法签名将请求消息绑定到入参中。方法入参绑定请求消息只是处理方法的第一步,还有更为重要的任务等待完成,即根据入参执行相应的逻辑,产生模型数据,导向到特定视图...

weixin_30780649的博客 169

SpringMVC中的Model、ModelAndView、@SessionAttributes用法以及区别

模型对象的作用主要是保存数据,可以借助它们将数据带到前端。 常用的模型对象有以下几个: Model:是每次请求中都存在的默认参数,利用其addAttribute()方法即可将服务器的值传递到jsp页面中; ModelAndView:包含model和view两部分,使用时需要自己实例化,利用ModelMap用来传值,也可以设置view的名称 1)使用Model传值 @RequestMapping(value="/list-books") private String getAllBooks(Model mod

weixin_48027611的博客 980

Spring处理模型数据

Spring处理模型数据,如果跳转时需要带数据:view和model,则可以使用以下方式:ModelAndView、ModelMap、Map、Model,将数据放在request作用域。还有@SessionAttributes和@ModelAttribute ModelAndView @RequestMapping(value="testModelAndView") public ModelAndView testModelAndView() {//ModelAndView既有数据也有视图 Model

m0_46163291的博客 259

Spring MVC如何输出数据给页面

文章目录简述方式一:原生API之域对象方法二:传入map model modelmap三个接口做入参。最终会存放在请求域中隐含模型源码方法三:ModelAndView。作为控制器返回值,由视图解析器解析,放在request域中方法四:@SeesionAttribute方法五:@ModelAttibute 简述 Spring MVC除了在方法上将Servlet API当作入参外,还能怎样将数据带给页面呢? 在传统Servlet中,要想把数据带给页面,我们可以通过:request域、Session域、Servl

code_java_zqy 513
上一篇: SpringMVC中原生态的Servlet属性
下一篇: Spring MVC 中“拦截器”处理模型数据 (二) @ModelAttribute
杜鲁门
博客等级 码龄11年 219粉丝 316原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值