티스토리 뷰

Chapter05. 컨트롤러 구현 : '도서 쇼핑몰'에서 도서 목록 출력 (2)

 

 

 

 

 

5.4 요청 처리 메서드와 모델 유형

요청 처리 메서드는 스프링 MVC에서 사용자 요청을 처리하는 메서드를 의미한다.

@RequestMapping에 설정된 요청 매핑 경로에 따라 호출된다.

 

@RequestMapping(..)
public String 메서드 이름(){
	//모델(객체)에 응답 데이터 저장
    return "뷰 이름";
}

 

요청 처리 메서드에는 사용자 요청을 처리한 결과를 웹 브라우저 화면에 보여주는 모델과 뷰가 있다.

모델은 사용자의 웹 요청을 처리한 결과 데이터를 관리하고 전달한다.

뷰는 처리된 결과 데이터를 웹 브라우저에 출력하는 웹 페이지 역할을 한다.

 

 

 

✔ 응답 데이터를 저장하는 모델 유형 (중요!!!)

모델(&뷰) 클래스 설명
Model 데이터(또는 객체) 정보를 저장하는데 사용한다.
Model Map 데이터(또는 객체) 정보를 저장하는데 사용한다.
ModelAndView 모델 정보 및 뷰 정보를 저장하는데 사용한다.

 

* Model 과 Model Map은 같은 역할을 하므로 둘 중 어느것을 사용해도 상관 없다.

 

 

 

 

 

5.4.1 Model 인터페이스를 이용한 메서드 작성

Model 인터페이스는 사용자 요청에 대한 처리 결과를 보여주는데 필요한 데이터를 Model 객체의 addAttribute() 메서드에 담아 전달한다.

 

Model addAttribute(String attrivuteName, Object attributeValue)

 

  • 역할 : 제공된 이름으로 제공된 속성을 등록한다.
  • 매개변수 : 

- attributeName : 모델 속성 이름 (null이 될 수 없음 / key 값)

- attributeValue : 모델 속성 값 (null이 될 수 있음 / value 값)

 

 

 

 

 

 

Example05Controller.java

package com.springmvc.chap05;

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

@Controller
@RequestMapping("/home")
public class Example05Controller {
	@GetMapping("/exam05")
	public String requestMethod(Model model) {
		System.out.println("exam05");
		model.addAttribute("data", "Modoel 예제입니다.");
		model.addAttribute("data2", "웹 요청 URL은 /home/exam05입니다.");
		return "webpage05";
	}
}

 

 

webpage05.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>chap05</title>
</head>
<body>
	<p>${data}
	<p>${data2}
</body>
</html>

 

 

서블렛 컨트롤러에서 

   <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <beans:property name="prefix" value="/WEB-INF/views/" />
      <beans:property name="suffix" value=".jsp" />
   </beans:bean>

 

 

 

 

 

 

 

5.4.3 ModelAndView 클래스를 사용한 메서드 작성

 

 

Example07Controller.java

package com.springmvc.chap05;

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

@Controller
@RequestMapping("/home")
public class Example07Controller {
	@GetMapping("/exam07")
	public ModelAndView requestMethod(ModelMap model) {
		ModelAndView mav = new ModelAndView();
		mav.addObject("data", "ModelAndView 예제입니다");
		mav.addObject("data2", "웹 요청 URL은 /home/exam07 입니다.");
		mav.setViewName("webpage05");
		return mav;
	}
}

 

 

 

 

  Model(ModelMap) 클래스 ModelAndView 클래스
뷰에 사용할 데이터 addAttribute() 메서드 사용 addObject() 메서드 사용
요청할 뷰 이름 없음
* 요청 처리 함수 안에 문자열로 뷰 이름을 반환해야 한다.
setViewName()

 

 

 

 

 

5.4.4 ModelAndView 클래스를 사용하여 결과 반환하기

 

 

 

BookController.java

package com.springmvc.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import com.springmvc.domain.Book;
import com.springmvc.service.BookService;

@Controller
@RequestMapping("/books")
public class BookController {
	@Autowired
	private BookService bookService;
	
	@GetMapping
	public String requestBookList(Model model) {
		List<Book> list = bookService.getAllBookList();
		model.addAttribute("bookList",list);
		return "books";
	}
	
	@GetMapping("/all")
	public ModelAndView requestAllBooks(Model model) {
		ModelAndView modelAndView = new ModelAndView();
		List<Book> list = bookService.getAllBookList();
		modelAndView.addObject("bookList", list);
		modelAndView.setViewName("books");
		return modelAndView;
	}

}

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday