温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用springmvc怎么对模型数据进行处理

发布时间:2021-03-05 14:40:10 来源:亿速云 阅读:161 作者:Leah 栏目:开发技术

使用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";
}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI