Spring

230201 Spring 화면 보내기 Model객체, ModelAndView 객체

주영재 2023. 2. 1. 19:53

화면 보내기

Model 전달자-화면에 데이터를 전달하기 위한 객체

 


Model 객체 = (ModelMap)

  1. Model타입을 메서드의 파라미터로 주입하게 되면 view로 전달하는 데이터를 담아서 보낼 수 있다.
  2. request.setAttribute()와 유사한 역할을 한다.

가장 많이 사용한다. 
ex)메서드(Model model).
ex)addAttribute(키,값)에 키,값을 실어 보낸다.


ModelAndView 객체(페이지와 데이터를 동시 지정)

ex)addObject("변수명","값");
ex)setViewName("페이지명"); -String형 메서드에서 return에 적는 경로.

 

 

 

 

ResponseController.java

package com.simple.controller;


import java.util.Date;

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

@Controller
@RequestMapping("/response")
public class ResponseController {
	
	
	//1.화면
	@RequestMapping("/ex01")//입력경로
	public String ex01() {
		return "response/ex01";//출력경로
	}
	
	//result01요청 -Model객체
	@RequestMapping("result01")
	public String result01(Model model) {
		
		model.addAttribute("data","홍길동");
		model.addAttribute("serverTime",new Date());
		
		return "response/result01";
	}
	
	
	//result02요청-ModelAndView객체
	@RequestMapping("result02")
	public ModelAndView result02() {
		
		//뷰의 정보, data정보를 함께 저장할 수 있는 객체
		ModelAndView mv = new ModelAndView();
		mv.addObject("data2","이순신");
		mv.addObject("name","홍길자");
		mv.setViewName("response/result02");
		
		return mv;
	}
	
	
	
}

 

 

ex01.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>res ex01</h3>
	
	<a href="result01">model객체 사용</a>
	<a href="result02">modelAndView객체 사용</a>
</body>
</html>

 

result01.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%-- 
<%
    String data=(String)request.getAttribute("data");
%>
--%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	결과
	<%-- <%=data %> --%>
	${data }<br/>
	${serverTime }<br/>

</body>
</html>

 

 

result02.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	결과
	${data2 }<br/>
	${name }<br/>



</body>
</html>