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


相关推荐

  • 3DE平台基础_系统架构师多少分过

    3DE平台基础_系统架构师多少分过3DE平台系统架构

    2022年8月5日
  • getMethod和getAnnotation「建议收藏」

    getMethod和getAnnotation「建议收藏」1该方法用于取得指定的实体类的实体名称。如果指定的实体类的实体标签定义了名称,则取该名称,否则取类名。例如:有实体类SampleEntityJava代码importjavax.persistence.Entity; @Entity(name=”SpecialName”) publicclassSampleEntity{ …

    2022年9月17日
  • ansys随机振动分析_workbench扫频振动仿真

    ansys随机振动分析_workbench扫频振动仿真随机振动(PSD)分析步骤PSD分析包括如下六个步骤:1.建造模型;2.求得模态解;3.扩展模态;4.获得谱解;5.合并模态;6.观察结果。以上六步中,前两步跟单点响应谱分析一样,后四步将在下面作详细讲解。Ansys/Professional产品中不能进展随机振动分析。如果选用GUI交互方法进展分析,模态分析选择对话框〔MODOPT命令〕中包含有是否进展模态扩展选项〔MXPAND命令〕,将其设置为YES就可以进展下面的:扩展模态。这样,第二步〔求得模态解〕和第三步〔扩展模态〕就合并到一个步

    2022年10月10日
  • 图片触及翻转效果 css3

    图片触及翻转效果 css3

    2021年8月24日
  • jenkins教程菜鸟_jenkins 入门教程(上)「建议收藏」

    jenkins教程菜鸟_jenkins 入门教程(上)「建议收藏」jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的”自动化”编译、打包、分发部署。jenkins可以很好的支持各种语言(比如:java,c#,php等)的项目构建,也完全兼容ant、maven、gradle等多种第三方构建工具,同时跟svn、git能无缝集成,也支持直接与知名源代码托管网站,比如github、bitbucket直接集成。jenkins官…

    2022年5月14日
  • 2020年支持java8的Java反编译工具汇总

    2020年支持java8的Java反编译工具汇总luyten是一款操作简单、功能实用的java反编译工具,软件支持*.JAR、*.zip、*.class等类型文件的反编译操作,还原度非常高,支持更多功能设置,如显式导入、类型、合成组件等等,用户可根据不同的需求选择合适的显示项目,结果更明了。luyten是个人用过的最好用的java反编译工具。哪怕使用jd-gui反编译时会出现“//INTERNALERROR//”错误,无法反编译,此工具…

    2022年4月20日

发表回复

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

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