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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 获取窗口句柄 c语言,VC++编程获取窗口句柄的方法小结分享「建议收藏」

    获取窗口句柄 c语言,VC++编程获取窗口句柄的方法小结分享「建议收藏」—-想了解VC++编程获取窗口句柄的方法小结分享的全部内容且更多的C语言教程关注VC++编程获取窗口句柄的方法小结分享实例讲述了VC++编程获取窗口句柄的方法。分享给大家供大家参考,具体如下:在VC++编程中常需获取控件或窗体句柄,下面总结了几种方法,还希望大家能多多补充。1、自身窗口句柄可用AfxGetMainWnd获取。2、系统中其他APP的窗口句柄可用FindWindow获取(用SPY帮一下…

    2022年7月21日
    12
  • 卷积层与池化层(bn层的原理和作用)

    构建了最简单的网络之后,是时候再加上卷积和池化了。这篇,虽然我还没开始构思,但我知道,一定是很长的文章。卷积神经网络(ConvolutionalNeuralLayer,CNN),除了全连接层以外(有时候也不含全连接层,因为出现了Globalaveragepooling),还包含了卷积层和池化层。卷积层用来提取特征,而池化层可以减少参数数量。卷积层先谈一下卷积层的工作原理。…

    2022年4月10日
    493
  • 字符串数组转集合_安全方法把字符串转集合

    字符串数组转集合_安全方法把字符串转集合//controller中接收id数组, //html页面; varids=$(‘#yourGrid’).jqGrid(‘getGridParam’,’selarrrow’); //bean属性设置值,表达提交方式, $(“#ids”).val(JSON.stringify(ids)); //controller List<String>ids=JSON.par…

    2022年9月19日
    2
  • Linux安装nmtui(nmtui连接wifi)

    Step1yuminstallNetworkManager-tuiStep2systemctlstartNetworkManagerStep3nmtui

    2022年4月18日
    173
  • ASP NET MVC Web开发教程

    ASP NET MVC Web开发教程ASPNETMVCWeb开发教程使用ASPNETMVC和C#快速学习Web开发。从绝对基础到忍者!像专业人士一样学习C#和MVC课程英文名:CompleteASPNETMVCWebDevelopment-NewbietoNinja!此视频教程共4.0小时,中英双语字幕,画质清晰无水印,源码附件全百度网盘地址:https://pan.baidu.com/s/1tarxUTa-F0KOPeXXmocLLg?pwd=7evf课程介绍:https://www.aihor

    2022年7月22日
    6
  • python基础教程 入门教程_python基础入门教程

    python基础教程 入门教程_python基础入门教程首先,我已经假定你已经看了无数遍的垃圾文章,然后依然搞不懂类和对象,但是呢起码知道有类和对象这么两个玩意儿。由于你没有编程经验,所以无法从学过的编程语言里通过类比去理解Python的‘类和对象’。咱们用生活中的例子来说说,建房子。类(class):相当于施工图纸(blueprint)对象(object):房子(已经建造好的)假设你手上有施工图纸(Blueprint),里面有房子的所有信…

    2022年8月29日
    2

发表回复

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

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