Model_ModelMap_Map「建议收藏」

Model_ModelMap_Map「建议收藏」Model_ModelMap_Map

大家好,又见面了,我是你们的朋友全栈君。

* SpringMVC除过在方法上传入原生的request和session外还能怎么样把数据带给页面
* 
* 1)、可以在方法处传入Map、或者Model或者ModelMap。
*     给这些参数里面保存的所有数据都会放在请求域中。可以在页面获取
*   关系:
*      Map,Model,ModelMap:最终都是BindingAwareModelMap在工作;
*      相当于给BindingAwareModelMap中保存的东西都会被放在请求域中;
* 
*     Map(interface(jdk))      Model(interface(spring))  
*        ||                     //
*        ||                    //
*        \/                   //
*     ModelMap(clas)         //
*              \\           //
*               \\         //
*              ExtendedModelMap
*                    ||
*                    \/
*              BindingAwareModelMap
@RequestMapping("/handle01")
public String handle01(Map<String, Object> map){
	map.put("msg", "你好");
	map.put("haha", "哈哈哈");
	System.out.println("map的类型:"+map.getClass());
	return "success";
}

/**
 * Model:一个接口
 */
@RequestMapping("/handle02")
public String handle02(Model model){
	model.addAttribute("msg", "你好坏!");
	model.addAttribute("haha", 18);
	System.out.println("model的类型:"+model.getClass());
	return "success";
}

@RequestMapping("/handle03")
public String handle03(ModelMap modelMap){
	modelMap.addAttribute("msg", "你好棒!");
	System.out.println("modelmap的类型:"+modelMap.getClass());
	return "success";
}

 这些数据都存储在 reuest 域中

success.jsp

reuest:${requestScope.msg }<br/>


 * 2)、方法的返回值可以变为ModelAndView类型;
 * 			既包含视图信息(页面地址)也包含模型数据(给页面带的数据);
 * 			而且数据是放在请求域中;
 * 			request、session、application;
 *
 * 3)、SpringMVC提供了一种可以临时给Session域中保存数据的方式;
 * 	使用一个注解	@SessionAttributes(只能标在类上)
 * 	@SessionAttributes(value="msg"):
 * 		给BindingAwareModelMap中保存的数据,或者ModelAndView中的数据,
 * 		同时给session中放一份;
 * 		value指定保存数据时要给session中放的数据的key;
 *
 * 	value={"msg"}:只要保存的是这种key的数据,给Session中放一份
 * 	types={String.class}:只要保存的是这种类型的数据,给Session中也放一份
 *
 *  后来推荐@SessionAttributes就别用了,可能会引发异常;
 * 			给session中放数据请使用原生API;
@SessionAttributes(value={"msg"},types={String.class})
@Controller
public class OutputController {

	//args:如何确定目标方法每一个参数的值;最难?
	// method.invoke(this,args)
	@RequestMapping("/handle01")
	public String handle01(Map<String, Object> map){
		map.put("msg", "你好");
		map.put("haha", "哈哈哈");
		System.out.println("map的类型:"+map.getClass());
		return "success";
	}

	/**
	 * Model:一个接口
	 * @param model
	 * @return
	 */
	@RequestMapping("/handle02")
	public String handle02(Model model){
		model.addAttribute("msg", "你好坏!");
		model.addAttribute("haha", 18);
		System.out.println("model的类型:"+model.getClass());
		return "success";
	}

	@RequestMapping("/handle03")
	public String handle03(ModelMap modelMap){
		modelMap.addAttribute("msg", "你好棒!");
		System.out.println("modelmap的类型:"+modelMap.getClass());
		return "success";
	}

	/**
	 * 返回值是ModelAndView;可以为页面携带数据
	 * @return
	 */
	@RequestMapping("/handle04")
	public ModelAndView handle04(){
		//之前的返回值我们就叫视图名;视图名视图解析器是会帮我们最终拼串得到页面的真实地址;
		//ModelAndView mv = new ModelAndView("success");
		ModelAndView mv = new ModelAndView();
		mv.setViewName("success");
		mv.addObject("msg", "你好哦!");
		return mv;
	}
	
}

 success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Hello</h1>
pageContext:${pageScope.msg }<br/>
reuest:${requestScope.msg }<br/>
session:${sessionScope.msg }-${sessionScope.haha}<br/>
application:${applicationScope.msg }<br/>
<%System.out.println("来到页面了...."); %>
</body>
</html>

Model_ModelMap_Map「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150294.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 文本聚类简单实现_文本聚类分析

    文本聚类简单实现_文本聚类分析引用:CoreConcepts—gensim<<自然语言处理入门>>一、简介文本聚类(textclustering,也称文档聚类或documentclustering)指的是对文档进行的聚类分析,被广泛用于文本挖掘和信息检索领域。最初文本聚类仅用于文本归档,后来人们又挖掘出了许多新用途,比如改善搜索结果、生成同义词,等等。在文本的预处理中,聚类同样可以发挥作用比如在标注语料之前,通常需要从…

    2025年6月28日
    4
  • SAP PRD SYSTEM COPY TO QAS具体操作步聚

    SAP PRD SYSTEM COPY TO QAS具体操作步聚SAPPRDSYSTEMCOPYTOQAS具体操作步聚 转载于:https://blog.51cto.com/anhwei/1242357

    2022年6月28日
    30
  • 建立友好城市有什么用_缔结友好城市

    建立友好城市有什么用_缔结友好城市原题连接Palmia国有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市。北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同。每对友好城市都向政府申请在河上开辟一条直线航道连接两个城市,但是由于河上雾太大,政府决定避免任意两条航道交叉,以避免事故。编程帮助政府做出一些批准和拒绝申请的决定,使得在保证任意两条航线不相交的情况下,被批准的申请尽量多。输入格式第1行,一个整数N,表示城市数。第2行到第n+1行,每行两个整数,中间用1个空格隔开,分别表示南岸和

    2022年8月8日
    4
  • Springboot上传excel并将表格数据导入或更新mySql数据库[通俗易懂]

    Springboot上传excel并将表格数据导入或更新mySql数据库[通俗易懂]本文主要描述,Springboot-mybatis框架下上传excel,并将之导入mysql数据库的过程,如果用户id已存在,则进行更新修改数据库中该项信息,由于用到的是前后端分离技术,这里记录的主要是后端java部分,通过与前端接口进行对接实现功能1.在pom.xml文件中导入注解,主要利用POI<dependency><groupId>org.a…

    2022年6月28日
    29
  • [Cubieboard] 镜像资源汇总

    [Cubieboard] 镜像资源汇总

    2021年8月31日
    78
  • 解决 无法读取到 /data/data/yourPackageName/files/coverage.ec 文件

    解决 无法读取到 /data/data/yourPackageName/files/coverage.ec 文件参考https://testerhome.com/topics/8554这篇文章jacoco生成coverage.ec在/data/data/yourPackageName/files/下,通过adb pull该目录,提示该文件不存在 因无Root权限  需定义一下下coverage.ec文件的存放路径在该文章JacocoInstrumentation

    2022年7月20日
    19

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号