Spring MVC - ViewResolver

2020. 9. 8. 20:21Java/Spring

반응형

ViewResolver

 

- 컨트롤러에서 전달 받은 View의 이름을 토대로 jsp 찾아 선택하고 jsp 데이터를 분석해 응답결과를 만들어 전달하는 요소

- 본 과정에서는 ViewResolver가 사용할 View의 이름을 지정하는 방법과 jsp 통해 응답 결과를 만들 때 필요한 데이터를 전달하는 방법에 대해 알아본다.

 

Spring MVC의 동작 과정

- ViewResolver에 의해 JSP가 실행되고 응답결과가 만들어진다.

- Controller 에서 View 지정할 때 ViewResolver가 사용할 데이터를 Request 영역에 저장할 수 있다.

 

 

 

 

기본적으로 페이지로 데이터를 전달하는 것은 model2와 비슷하다.

 

<%@ 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>
<a href="test1?data1=100&data2=200">test1</a>
</body>
</html>

위의 get 방식을 전달하고자 하면 아래와 같이 컨트롤러에 경로만 작성하고 받아도 전달이 된다.

 

@Controller
public class TestController {

	@GetMapping("/test1")
	public String test1() {
		return "test1";
	}
}

test1.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>
data1 :${param.data1}
data2 :${param.data2}
</body>
</html>

이 외에 방법으로 데이터를 받아와 ViewResolver를 설정해서 넘겨 줄 수 있다.

 

 

<%@ 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>
<a href="test1?data1=100&data2=200">test1</a>
<a href="test2?data1=100&data2=200">test2</a>
<a href="test3?data1=100&data2=200">test3</a>
<a href="test4?data1=100&data2=200">test4</a>
</body>
</html>

 

 

HttpServletRequest

- Spring MVCjsp 처리할 때 HttpServletRequest 객체를 jsp 쪽으로 전달한다.

- ViewResolver는 이를 이용해 JSP 작업시 데이터를 사용할 수 있다.

 

@GetMapping("/test2")
	public String test2(HttpServletRequest request) {
		request.setAttribute("data1",100);
		request.setAttribute("data2",200);
		return "test2";
	}

Model

- Model 객체를 주입 받아 셋팅하면 HttpServletRequest 객체에 담겨 이를 JSP로 전달할 수 있다.

HttpServletRequest 보다 더 기능이 많다.

@GetMapping("/test3")
	public String test3(Model model) {
		model.addAttribute("data1",100);
		model.addAttribute("data2",200);
		return "test3";
	}

ModelAndView

 

- ModelAndViewModel에 값을 셋팅하는 기능과 View의 이름을 지정하는 기능을 모두 가지고 있다.

 

@GetMapping("/test4")
	public String test4(ModelAndView mv) {
		mv.addObject("data1",100);
		mv.addObject("data2",200);
		return "test4";
	}
반응형