Spring Framework-1

유호준·2021년 3월 13일

Spring Framework

목록 보기
2/21

🏆시리즈에서의 목표 혹은 구현할 프로젝트

Spring Framework을 사용해서 간단한 게시판을 만들어볼 것 입니다.

MVC패턴이란?

  • Controller는 사용자의 입력을 처리하고 Model과 View 사이에서 상호작용을 할 수 있도록 지원합니다.
  • Model은 데이터를 관리하는 부분 또는 로직을 뜻합니다.
  • View는 데이터를 화면에 보이는 부분을 관리합니다.

이 MVC패턴을 통해서 데이터가 UI로부터 분리되어 따로 검수하거나 사용하는 것이 가능하고 Spring Framework는 이 MVC패턴을 따릅니다.


View

우리는 Spring Framework을 이용하여서 Backend를 구현하는데 초점을 맞출 것이므로 이미 구현되있는 View를 이용하여서 View를 구현하겠습니다. 이 링크를 통해 테마를 다운 후 압축을 해제하고 webapp 하위의 resources에 아래와 같이 복사합니다.

여기서 그리고 이후에 나오는 HTML과 JS코드들을 모두 설명을 하진 못합니다. HTML과 JS은 찾아서 공부하시길 바랍니다.

게시판 페이지 작성

테마 안의 table.html의 내용을 복사하여서 board.jsp를 WEB-INF 하위의 views 폴더에 생성합니다. 그 후 html의 lang을 kr로 변경합니다.

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html lang="kr">

<head>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>SB Admin 2 - Tables</title>

정적 리소스 요청 주소 변경

정적 리소스들의 요청 주소를 상대 주소에서 오류가 나지 않도록 안전하게 아래와 같이 절대 주소로 변경합니다.

<script src="/vendor/datatables/dataTables.bootstrap4.min.js"></script>

ServletConfig 클래스 수정

ServletConfig 클래스의 addResourceHandlers 메소드를 수정합니다.

 @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        WebMvcConfigurer.super.addResourceHandlers(registry);
        registry.addResourceHandler("/vendor/**").addResourceLocations("/resources/vendor/");
        registry.addResourceHandler("/css/**").addResourceLocations("/resources/css/");
        registry.addResourceHandler("/scss/**").addResourceLocations("/resources/scss/");
        registry.addResourceHandler("/img/**").addResourceLocations("/resources/img/");
        registry.addResourceHandler("/js/**").addResourceLocations("/resources/js/");
    }

정적 자원을 아래 경로처럼 요청을 보내므로 위와 같이 수정합니다. 위의 코드를 말로 해석하면 /vendor/ 등등으로 오는 모든 요청을 /resources/vendor/로 보낸다라는 말입니다. 따라서 아래 경로로 오는 요청은 /resources/vendor/fontawesome-free/css/all.min.css를 반환받게 됩니다.

<link href="/vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">

Controller

유저의 요청을 받는 Controller를 작성합니다. ac.kr.smu.controller 패키지 안에 BoardController 클래스를 아래와 같이 생성합니다.

@Controller
@RequestMapping("/board")
public class BoardController {
    @GetMapping
    public void getBoard(){}
}

@RequestMapping

value에 지정된 경로로 들어오는 요청을 처리한다.

@GetMapping

value에 지정된 경로로 들어오는 Get요청을 처리한다.

여기서 처리를 하는 Controller의 메소드의 반환값이 void라면 들어온 경로를 그대로 반환합니다. 여기서는 board가 반환됩니다. 그리고 이 Controller의 반환값은 지난 번에 ServletConfig에서 설정한 ViewResolver의 설정에 맞게 유저에게 view를 반환합니다. 이 것에 의해서 /board로 들어오는 Get요청은 /WEB-INF/views/board.jsp를 반환하게 됩니다.

@Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        WebMvcConfigurer.super.configureViewResolvers(registry);
        registry.jsp("/WEB-INF/views/",".jsp");
    }

테스트

profile
포트폴리오 - https://drive.google.com/file/d/152OM9p7JQorjUfvR4BaxqGuP5xtQ8-fM/view?usp=sharing

0개의 댓글