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 。

BODAS说明书的中文版与相关资料总结 花了三天时间配了控制器的接线口,找了软件安装的一套东西。 又花了一周时间零零散散在网上只找到关于控制器少得可怜的资料: 1.力士乐控制器RC6系列介绍 2.力士乐控制器手册不完整版 3.RC6-9程序下载 力士乐配套的只有德语和英语两版,人工翻译专业文件的价格太惊人,决定自己写一版方便大家。有不正之处欢迎指出。 For these controllers, in the event of an... 阅读详情

相关推荐

Cadence学习之路:什么是PCB工艺的正片与负片

正片??负片??Flash焊盘的创建与使用

qq_46757048的博客 4245

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

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

Syntacticsugar's blog 1242

Augustus手动安装教程

本文记载了如何结合conda手动安装Augustus

m0_65437087的博客 1257

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

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

long3359的博客 928

codesys【modbusRTU】主站

【代码】modbusRTU【codesys】

cfqq1989的博客 4375

从零搭建Synopsys EDA环境:Ubuntu系统下的完整安装与避坑指南

本文详细介绍了在Ubuntu系统下从零搭建Synopsys EDA环境的完整流程,包括系统配置、安装文件准备、核心工具安装、License配置及常见问题排查。特别针对数字IC设计场景,提供了VCS、Verdi、Design Compiler等EDA Tools的安装避坑指南和性能优化建议,帮助开发者高效搭建稳定的开发环境。

weixin_33738982的博客 491

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

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

weixin_73756660的博客 800

从SC7A20数据手册到代码:一步步搞定加速度值读取与换算(避坑指南)

本文详细解析了SC7A20三轴加速度传感器的数据手册,从寄存器配置到原始数据读取,再到加速度值的换算方法。通过代码示例和避坑指南,帮助开发者准确实现加速度值的读取与换算,适用于嵌入式开发和运动检测应用。

weixin_26878995的博客 587

JAVA面试题3

JAVA面试题

weixin_61557810的博客 311

2023华为od机试C卷【最富裕的小家庭】Java&Go 实现

在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为个小家庭。现给你一颗树,请计算出最富裕的小家庭的财富和。

MISAYAONE的博客 1904

飞腾UEFI配置GPIO—飞腾FT2000/4 (D2000/8) GPIO引脚配置及使用

讲解了在飞腾UEFI代码中如何添加GPIO配置相关代码,并以GPIO1_B0—B7为例,将这8个引脚配置为GPIO工作模式并默认输出低电平

qq_30135687的博客 5344

SpringMVC——模型数据处理

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

如不來的博客 680

基于YOLOv11的手写数字与符号识别系统设计与实现

手写数字与符号识别系统需要丰富多样的训练数据才能达到理想的泛化性能。MNIST:包含70,000个手写数字样本(0-9),28x28灰度图像优点:干净整齐,适合初学者缺点:多样性不足,只有数字EMNIST:MNIST的扩展,包含数字、字母(大小写)和特殊符号样本量:814,255张图像覆盖62个类别(10数字+26小写字母+26大写字母)HASYv2:专门的手写符号数据集包含369个不同符号类别约168,000个标注实例包括数学符号、箭头、括号等:英文手写文本数据库。

YOLO 291

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

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SpringMVC-请求处理与数据输出

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

qq_44486437的博客 261

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

《SpringMVC视频教程》(p6)

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

garrulousabyss的博客 144

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

总结了一些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、付费专栏及课程。

余额充值