# ๐Ÿ“˜ Spring MVC ๊ฒŒ์‹œํŒ ๊ตฌ์กฐ์™€ ViewResolver ๋™์ž‘ ์›๋ฆฌ ์ดํ•ดํ•˜๊ธฐ

Yeeunยท2025๋…„ 4์›” 29์ผ
0

SpringBoot

๋ชฉ๋ก ๋ณด๊ธฐ
27/46

๐Ÿ“˜ Spring MVC ๊ฒŒ์‹œํŒ ๊ตฌ์กฐ์™€ ViewResolver ๋™์ž‘ ์›๋ฆฌ ์ดํ•ดํ•˜๊ธฐ

Spring MVC๋ฅผ ์ฒ˜์Œ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜๋Š”
"Controller์—์„œ View(JSP)๋ฅผ ์–ด๋–ป๊ฒŒ ์ฐพ๋Š”๊ฐ€?" ์ž…๋‹ˆ๋‹ค.
์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ง์ ‘ ๋งŒ๋“  ๊ฒŒ์‹œํŒ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์กฐ์™€ ViewResolver์˜ ๋™์ž‘ ๋ฐฉ์‹๊นŒ์ง€ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณผ๊ฒŒ์š”.


๐Ÿ“Œ ์ „์ฒด ํ๋ฆ„ ์š”์•ฝ

๋ธŒ๋ผ์šฐ์ € ์š”์ฒญ โ†’ DispatcherServlet โ†’ Controller โ†’ Service โ†’ (Repository) โ†’ Model โ†’ View(JSP)

๐Ÿงฉ 1. Controller: ์š”์ฒญ์„ ๋ฐ›์•„์ฃผ๋Š” ์—ญํ• 

package ruby.paper.controller;

import java.util.ArrayList;
import java.util.List;

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

import ruby.paper.domain.Board;

@Controller
public class BoardController {
	@GetMapping("/getBoardList")
	public String getBoardList(Model model) {
		List<Board> boardList = new ArrayList<>();
		for(long i = 1L; i <= 10L; i++) {
			boardList.add(Board.builder()
				.seq(i)
				.title("๊ฒŒ์‹œํŒ ํ”„๋กœ๊ทธ๋žจ ํ…Œ์ŠคํŠธ")
				.writer("๋„์šฐ๋„ˆ")
				.content("๊ฒŒ์‹œํŒ ํ”„๋กœ๊ทธ๋žจ ํ…Œ์ŠคํŠธ์ž…๋‹ˆ๋‹ค.")
				.build());
		}
		model.addAttribute("boardList", boardList);
		return "getBoardList";
	}
}

๐Ÿ“ ์—ฌ๊ธฐ์„œ "getBoardList"๋Š” View ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
Spring์€ ์ด ๋ฌธ์ž์—ด์„ ๋ฐ”ํƒ•์œผ๋กœ getBoardList.jsp ํŒŒ์ผ์„ ์ฐพ์•„ ํ™”๋ฉด์— ๋ณด์—ฌ์ค˜์š”.


๐Ÿงฉ 2. ViewResolver ์„ค์ •: JSP๋ฅผ ์ฐพ๋Š” ๊ทœ์น™์„ ์ •์˜

Spring์˜ ์„ค์ • ํŒŒ์ผ (servlet-context.xml ๋“ฑ)์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ViewResolver ์„ค์ •์ด ํฌํ•จ๋ผ ์žˆ์Šต๋‹ˆ๋‹ค.

<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>

๐Ÿ” ์ด ์„ค์ • ๋•๋ถ„์—,

return "getBoardList";

๋ผ๊ณ ๋งŒ ์จ๋„ Spring์€ ๋‹ค์Œ ๊ฒฝ๋กœ์˜ JSP ํŒŒ์ผ์„ ์ž๋™์œผ๋กœ ์ฐพ์Šต๋‹ˆ๋‹ค:

/WEB-INF/views/getBoardList.jsp


๐Ÿงฉ 3. View (JSP): ๋ฐ์ดํ„ฐ๋ฅผ ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ๋Š” ์—ญํ• 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

<html>
<head>
    <title>๊ธ€๋ชฉ๋ก</title>
</head>
<body>
    <h1>๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก</h1>
    <table>
        <tr>
            <th>๋ฒˆํ˜ธ</th><th>์ œ๋ชฉ</th><th>์ž‘์„ฑ์ž</th><th>๋“ฑ๋ก์ผ</th><th>์กฐํšŒ์ˆ˜</th>
        </tr>
        <c:forEach var="board" items="${boardList}">
            <tr>
                <td>${board.seq}</td>
                <td><a href="getBoard?seq=${board.seq}">${board.title}</a></td>
                <td>${board.writer}</td>
                <td><fmt:formatDate value="${board.createDate}" pattern="yyyy-MM-dd" /></td>
                <td>${board.cnt}</td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>

๐Ÿงฉ 4. Service์™€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‚˜๋ˆ„๋Š” ์ด์œ 

public interface BoardService {
    List<Board> getBoardList();
    // ...
}
@Service
public class BoardServiceImpl implements BoardService {
    @Autowired
    private BoardRepository BoardRepo;

    @Override
    public List<Board> getBoardList() {
        return BoardRepo.findAll();
    }
}

๐Ÿ“Œ ์™œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์“ฐ๋ƒ๋ฉด์š”...

  • ๋А์Šจํ•œ ๊ฒฐํ•ฉ(Loosely Coupled): ์ฝ”๋“œ ์œ ์—ฐ์„ฑ ์ฆ๊ฐ€
  • ๋‚˜์ค‘์— ๋‹ค๋ฅธ ๊ตฌํ˜„์ฒด๋กœ ๋ฐ”๊พธ๊ธฐ ์‰ฝ๋‹ค (ex. ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ตฌํ˜„ โ†’ DB์—์„œ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ตฌํ˜„)
  • ํ…Œ์ŠคํŠธํ•  ๋•Œ Mock ๊ฐ์ฒด๋กœ ๋Œ€์ฒดํ•˜๊ธฐ ์‰ฌ์›€

์ฆ‰, BoardService๋ฅผ ์“ฐ๋ฉด ์‹ค์ œ ๊ตฌํ˜„์ฒด๊ฐ€ ์–ด๋–ค ํด๋ž˜์Šค๋“  ์‰ฝ๊ฒŒ ๊ต์ฒด ๊ฐ€๋Šฅํ•ด์š”.


โœ… ์ตœ์ข… ์š”์•ฝ

์š”์†Œ์—ญํ• 
@Controller์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ฐ›์•„ ์ฒ˜๋ฆฌ
ModelView๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ
"getBoardList"View ์ด๋ฆ„ (JSP ํŒŒ์ผ ์ด๋ฆ„)
ViewResolverJSP ๊ฒฝ๋กœ ๊ทœ์น™์„ ์ •์˜ (/WEB-INF/views/ + ์ด๋ฆ„ + .jsp)
@Service + ์ธํ„ฐํŽ˜์ด์Šค์œ ์—ฐํ•œ ๊ตฌ์กฐ, ์ถ”ํ›„ ํ™•์žฅ์„ฑ ํ™•๋ณด

0๊ฐœ์˜ ๋Œ“๊ธ€