Spring
230201 Spring 화면 보내기 Model객체, ModelAndView 객체
주영재
2023. 2. 1. 19:53
화면 보내기
Model 전달자-화면에 데이터를 전달하기 위한 객체
Model 객체 = (ModelMap)
- Model타입을 메서드의 파라미터로 주입하게 되면 view로 전달하는 데이터를 담아서 보낼 수 있다.
- 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>