SpringMVC之请求响应(上)

1.OutPutController

package com.tz.controller;

import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/output")
public class OutPutController {
	
	/**
	 * springmvc除了用servlet的session和request之外还能怎样把数据放哪进行转储
	 * 
	 * 1.可以在方法参数的位置上传入Map,model,ModelMap三种类型的任意一种参数
	 * ,往对象中保存数据,都会放到域对象(request)中,可以从页面获取
	 * BindingAwareModelMap
	 * 
	 * Map,model,ModelMap,最终都是BindingAwareModelMap再操作,相当于BindingAwareModelMap中,
	 * 保存的数据都会被放在request的域对象中
	 * 
	 * Map<jdk> Model<spring> ModelMap<spring>
	 * 								|
	 * 都实现map接口
	 * 
	 * 
	 * 2.springmvc支持把方法的返回值类型设置ModelAndView类型
	 * 
	 * @return
	 */
	
	@RequestMapping("/handle01")
	public String handle01(Map<String,Object> map){
		map.put("msg","你好");//map会存在request域对象中
		System.out.println("map的类型:"+map.getClass());
		return "success";
	}
	
	@RequestMapping("/handle02")
	public String handle02(Model model){
		model.addAttribute("msg","你吃饭了吗");
		System.out.println(model.getClass());
		return "success";
	}
	
	@RequestMapping("/handle03")
	public String handle03(ModelMap modelMap){
		modelMap.addAttribute("msg","ModelMap");
		System.out.println(modelMap.getClass());
		return "success";
	}
	
	/**
	 * ModelAndView:既包含视图信息(页面地址),也包含模型数据(给页面带的数据)
	 * 而且最终数据也是存在request域对象中
	 * @return
	 */
	
	@RequestMapping("/handle04")
	public ModelAndView handle04(){
		//构造方法传入jsp名字,springmvc中的视图解析器会帮助我们进行拼接字符串得到页面的真实地址
//		ModelAndView view = new ModelAndView("success");//第一种设置视图的方法
		ModelAndView view = new ModelAndView();//第二种设置视图的方法
		view.setViewName("success");
		//保存数据
		view.addObject("msg","awslDnmd");//保存在request域名里去
		return view;
	}
}

  2.output.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>

	<a href="output/handle01">outPut1</a><br/>
	<a href="output/handle02">outPut2</a><br/>
	<a href="output/handle03">outPut3</a><br/>
	<a href="output/handle04">outPut4ModelAndView</a><br/>
	
</body>
</html>

  3.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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<h1>success</h1>

<%-- 	request:${requestScope.request}<br/>
	session:${sessionScope.session} --%>
	
pageContext:${pageScope.msg}<br/>
request:${requestScope.msg}<br/>
session:${sessionScope.msg}<br/>
application:${applicationScope.msg}<br/>

</body>
</html>

  总结:

为啥model,modelMap,modelAndView数据都存在request域对象中?

 2.为啥能够访问success.jsp

原文地址:https://www.cnblogs.com/luyuan-chen/p/11690972.html