利用springmvc处理模型数据

springmvc处理模型数据

很多情况下页面上需要很多数据,单单返回页面是不行的,那么springmvc如何将数据返回到该页面呢

springmvc提供了四种方式来输出模型数据

  • ModelAndView: 处理返回值为ModelAndView时,可以将该对象中添加数据模型
  • Map及Model:入参为Model、ModelMap或Map时,处理方法返回时,Map中的数据会自动添加到模型中
  • @SessionAttributes: 将模型中的某个属性暂存到HttpSession中,以便多个请求之间共享数据
  • @ModelAttribute: 方法入参标注该注解后,入参的对象就会放到数据模型中

ModelAndView

主要有两个重要的变量

// 视图 可以传字符串(视图名字)也可以传View对象
private Object view;
// 数据模型 本质是一个map
private ModelMap model;

视图相关的方法

// 设置视图
public void setViewName(String viewName) {
 this.view = viewName;
}
// 获取视图
public String getViewName() {
 return this.view instanceof String ? (String)this.view : null;
}

数据模型相关方法

// 获取数据模型
protected Map<String, Object> getModelInternal() {
 return this.model;
}

public ModelMap getModelMap() {
 if (this.model == null) {
 this.model = new ModelMap();
 }

 return this.model;
}

public Map<String, Object> getModel() {
 return this.getModelMap();
}

// 添加视图模型
public ModelAndView addObject(String attributeName, Object attributeValue) {
 this.getModelMap().addAttribute(attributeName, attributeValue);
 return this;
}

springmvc底层使用request.setAttribute(name,value)来将数据放入到请求中

示例:

@RequestMapping("/modelAndViewTest")
public ModelAndView modelAndViewTest(){
 // 视图名
 ModelAndView modelAndView = new ModelAndView("modelAndViewTest");
 // 包含的数据
 modelAndView.addObject("dateTime",new Date());
 return modelAndView;
}

Map及Model

@RequestMapping("/mapTest")
public String mapTest(Map<String,String> map){
 System.out.println(map.getClass()); //class org.springframework.validation.support.BindingAwareModelMap
 map.put("name","张三");
 return "hello";
}

@SessionAttributes

在类上添加@SessionAttributes可以使该类所代表的路径下的session共享

@Controller
@RequestMapping("helloWorld")
// 设置name属性共享
@SessionAttributes(value={"name"})
public class HelloWorldController {

 @RequestMapping("/mapTest")
 public String mapTest(Map<String,String> map){
 System.out.println(map.getClass()); //class org.springframework.validation.support.BindingAwareModelMap
 map.put("name","张三");
 return "hello";
 }

 // 可以在该方法中获取到name值为张三
 @RequestMapping("/sessionAttributes")
 public String sessionAttributes(HttpSession session){
 System.out.println(session.getAttribute("name"));
 return "hello";
 }
}

@ModelAttribute

用在无返回值的方法

package com.yiidian.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class ModelAttributeController {

  //没有返回值的情况
  @ModelAttribute
  public void myModel(@RequestParam(required = false) String name, Model model) {
    model.addAttribute("name", name);
  }

  @RequestMapping(value = "/model")
  public String model() {
    return "success";
  }
}

用在带返回值的方法

package com.yiidian.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class ModelAttributeController {

  /**
   * 带返回值的情况
   * @param name
   */
  @ModelAttribute("name")
  public String myModel(@RequestParam(required = false) String name) {
    return name;
  }

  @RequestMapping(value = "/model")
  public String model() {
    return "success";
  }
}

应用在方法的参数上

@ModelAttribute("name")
public String myModel(@RequestParam(required = false) String name) {
  return name;
}

//应用在方法的参数行
@RequestMapping(value = "/model")
public String model(@ModelAttribute("name") String name) {
  System.out.println("name="+name);
  return "success";
}

以上就是利用springmvc 处理模型数据的详细内容,更多关于springmvc 处理模型数据的资料请关注我们其它相关文章!

(0)

相关推荐

  • springmvc处理响应数据的解析

    1. ModelAndView 相关的成员变量和方法 private Object view; 描述视图信息 private ModelMap model 描述模型数据(响应数据) public void setViewName(String viewName) 设置视图信息 public ModelAndView addObject(String attributeName, Object attributeValue) 设置模型数据 protected Map<String, Object>

  • springmvc处理模型数据ModelAndView过程详解

    这篇文章主要介绍了springmvc处理模型数据ModelAndView过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 springmvc提供了以下几种途径来输出模型数据: (1)ModelAndView:处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据. (2)Map及Model:入参为org.springframework.ui.Model.org.springframework.ui.ModelMa

  • SpringMVC通过模型视图ModelAndView渲染视图的实现

    SpringMVC通过模型视图ModelAndView渲染视图大致流程 代码样例 1.准备工作 A.因为文中用到jsp,所以需要引入jsp标准标签库standard.jar和jstl.jar 官方下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/ 本地下载地址:lib_jb51.rar B.添加Tomcat依赖如下: <dependency> <groupId>org.springframew

  • Springmvc处理ajax请求并返回json数据

    ①在springmvc方法上添加@ResponseBody注解,springmvc会将数据转换成json并返回: @ResponseBody //指定返回json数据,不跳转页面 @RequestMapping("/list") public List<User> list(User user){ System.out.println("获取到异步请求数据:"+user); //todo 根据条件做数据库查询,返回结果集合 ArrayList<Us

  • 解决SpringMVC 返回Java8 时间JSON数据的格式化问题处理

    有时在Spring MVC中返回JSON格式的response的时候会使用@ResponseBody注解,不过在处理java8中时间的时候会很麻烦,一般我们使用的HTTPMessageConverter是MappingJackson2HttpMessageConverter,它默认返回的时间格式是这种: "startDate" : { "year" : 2010, "month" : "JANUARY", "dayO

  • springmvc处理模型数据Map过程解析

    这篇文章主要介绍了springmvc处理模型数据Map过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 SpringmvcTest.java @RequestMapping("/springmvc") @Controller public class SpringmvcTest { private static final String SUCCESS = "success"; @RequestMapping

  • SpringMvc+POI处理excel表数据导入

    一.概念介绍 ApachePOI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能 二.功能相关代码 1.环境说明:JDK1.7+tomcat7+spring 2.配置文件的配置 pom文件中添加POI所需依赖 <!-- 添加POI支持 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi&l

  • 利用springmvc处理模型数据

    springmvc处理模型数据 很多情况下页面上需要很多数据,单单返回页面是不行的,那么springmvc如何将数据返回到该页面呢 springmvc提供了四种方式来输出模型数据 ModelAndView: 处理返回值为ModelAndView时,可以将该对象中添加数据模型 Map及Model:入参为Model.ModelMap或Map时,处理方法返回时,Map中的数据会自动添加到模型中 @SessionAttributes: 将模型中的某个属性暂存到HttpSession中,以便多个请求之间共

  • SpringMVC返回json数据的三种方式

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等. 1.第一种方式是spring2时代的产物,也就是每个json视图controller配置一个Jsoniew. 如:<bean

  • 详解SpringMVC如何进行数据回显

    基本介绍 数据回显:模型数据导向视图(模型数据 ---> Controller ---> 视图) 说明:SpringMVC在调用方法前会创建一个隐含的模型对象,作为模型数据的存储容器(隐含模型) 一.ModelAndView @RequestMapping(method = RequestMethod.POST) public ModelAndView createUser(User user) { userService.createUser(user); ModelAndView mav

  • Python利用逻辑回归模型解决MNIST手写数字识别问题详解

    本文实例讲述了Python利用逻辑回归模型解决MNIST手写数字识别问题.分享给大家供大家参考,具体如下: 1.MNIST手写识别问题 MNIST手写数字识别问题:输入黑白的手写阿拉伯数字,通过机器学习判断输入的是几.可以通过TensorFLow下载MNIST手写数据集,通过import引入MNIST数据集并进行读取,会自动从网上下载所需文件. %matplotlib inline import tensorflow as tf import tensorflow.examples.tutori

  • Python数学建模StatsModels统计回归模型数据的准备

    目录 1.读取数据文件 (1)读取 .csv 文件: (2)读取 .xls 文件: (3)读取 .txt 文件: 2.数据文件的拆分与合并 (1)将 Excel 文件分割为多个文件 (2)将 多个 Excel 文件合并为一个文件 3.数据的预处理 (1)缺失数据的处理 (2)重复数据的处理 (3)异常值处理 4.Python 例程(Statsmodels) 4.1 问题描述 4.2 Python 程序 4.3 程序运行结果: 版权说明: 1.读取数据文件 回归分析问题所用的数据都是保存在数据文件

  • AngularJS控制器controller给模型数据赋初始值的方法

    本文实例讲述了AngularJS控制器controller给模型数据赋初始值的方法.分享给大家供大家参考,具体如下: 之前的文章<AngularJS入门示例之Hello World详解>,很简单的就实现了模型数据和页面显示的自动绑定.现在我们使用控制器,给模型赋初始值.如果使用jQuery来实现变量赋初值,需要在页面加载完成后执行 $("#target").attr("value",selfValue); 使用AngularJS代码如下: <!do

随机推荐