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「建议收藏」

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 系统架构师(1)计算机组成与结构[通俗易懂]

    系统架构师(1)计算机组成与结构[通俗易懂]1.计算机硬件组成计算机得硬件基本系统由五大部分组成运算器、控制器、存储器、输入设备、输出设备存储器分为内部存储器:内存,容量小。特点是速度快,临时存放数据。外部存储器:硬盘,光盘。特点是容量大,速度慢,能长期存储数据。输入设备:键盘、鼠标。输出设备:音响、显示器。主机:CPU+主存储器…

  • C语言实现大整数乘法

    C语言实现大整数乘法转载自:点击打开链接乘法规律,一个数的第i位和另一个数的第j位相乘,一定会累加到结果的第i+j位,结果的数组一个数组元素存2位数,最后对结果处理进位,最后打印出来方法一见上面链接https://www.cnblogs.com/king-ding/p/bigIntegerMul.html方法二voidIntMultiply(inta[],intb[],intc[],intma,in…

  • html滚动字幕制作教程,dreamweaver教程:怎么制作网页滚动字幕[通俗易懂]

    html滚动字幕制作教程,dreamweaver教程:怎么制作网页滚动字幕[通俗易懂]滚动字幕在FrontPage的组件里有,但是FrontPage这个软件只能支持单行文字,一出现多行文字它就无能为力了,而且它只能支持一行滚动!(如果出现只能滚动一行的情况,解决办法是把这段代码嵌入到JavaScript的document.write里面,请看下面例的详细说明)Dreamweaver也只能用编写HTML代码的方法。所以强烈建议用记事本打开网页源代码来编辑。1.建立第一个滚动字幕。代码…

  • 模式-“里氏替换原则”

    模式-“里氏替换原则”

  • EXT 4 文件系统新特性

    EXT 4 文件系统新特性

  • android的layout_android可拖拽layout

    android的layout_android可拖拽layoutViewGroup.LayoutParams介绍LayoutParams携带了子控件针对父控件的信息,告诉父控件如何放置自己LayoutParams类也只是简单的描述了宽高,宽和高都可以设置成三种值:1,一个确定的值;2,FILL_PARENT,即填满(和父容器一样大小);3,WRAP_CONTENT,即包裹住组件就好。每一个ViewGroup(例如LinearLayout,RelativeLa…

发表回复

您的电子邮箱地址不会被公开。

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