利用springmvc处理模型数据

网友投稿 496 2023-02-07

利用springmvc处理模型数据

利用springmvc处理模型数据

springmvc处理模型数据

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

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

ModelAndView: 处理返回值为ModelAndView时,可以将该对象中添加数据模型

Map及Model:入参为Model、ModelMap或Map时,处理方法返回时,Map中的数据会自动添加到模型中

@SessionAttributes: 将模型中的某个属性暂存到HttpSession中,以便多个请求之间共享数据

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

ModelAndView

主要有两个重要的变量

// 视图 可以传字符串(视图名字)也可以传View对象

private Object view;

// 数据模型 本质是一个map

private ModelMap model;

视图相关的方法

// 设置视图

publinyKqAleRjWc void setViewName(String viewName) {

this.view = viewName;

}

// 获取视图

public String getViewName() {

return this.view instanceof String ? (String)this.view : null;

}

数据模型相关方法

// 获取数据模型

protected Map getModelInternal() {

return this.model;

}

public ModelMap getModelMap() {

if (this.model == null) {

this.model = new ModelMap();

}

return this.model;

}

public Map 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 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 map){

System.out.println(map.getClass()); //class org.springframework.validation.support.BindingAwareModelMap

map.put("name","张三");

return "hello";

}

nyKqAleRjW // 可以在该方法中获取到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 处理模型数据的资料请关注我们其它相关文章!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:网站前端如何设置安全代码(网络安全前端)
下一篇:HybridApp(hybridapp入门教程)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~