Spring Framework-1

유호준·2021년 3월 13일
0

Spring Framework

목록 보기
2/21

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

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

MVC패턴이란?

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

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


View

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

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

게시판 페이지 작성

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

<%@ 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");
    }

테스트

0개의 댓글