본문 바로가기

spring

스프링 MVC 프로젝트의 기본 구성, 비즈니스 계층 spring core 설정에서의 scan, 등록/수정/삭제 시 redirect를 하는 이유

* 스프링 MVC 프로젝트의 기본 구성

- 웹 프로젝트는 3-tier 방식

- 스프링 MVC 영역은 프레젠테이션 tier를 구성하게 되는데, 각 영역은 사실 별도의 설정을 가지는 단위로 볼 수 있다.

- 스프링 Core 영역은 흔히 POJO(Plain-Old-Java-Object)의 영역입니다. 비즈니스 계층, 영속계층

- 스프링은 스프링의 의존성 주입을 이용해서 객체 간의 연관구조를 완성해서 사용합니다.

 

- 해당 영역의 설정 파일이 각각의 설정을 담당

  root-context.xml - spring Core

  servlet-context.xml - spring MVC 

 

* 비즈니스 계층의 component-scan 설정

비즈니스 계층의 인터페이스와 구현 클래스가 작성되었다면, 

이를 스프링 빈으로 인식 하기 위해서 root-context.xml @Service 어노테이션이 있는 패키지를 스캔(조사) 하도록 추가해야 합니다. 

 

네임스페이스에서 context 항목을 추가하고 root-context.xml에 아래 내용을 추가합니다.

    <context:component-scan base-package="com.youngwun.service">
    </context:component-scan>

 

 

* redirect 처리

    @PostMapping("/register")
    public String register(BoardVO board, RedirectAttributes rttr) {
        log.info("register: " + board);

        service.register(board);
        rttr.addFlashAttribute("testResult", "1");
        rttr.addFlashAttribute("result", board.getBno());

        return "redirect:/board/list";
    }

 

위와 같이 redirect로 등록후 list로 재전송을 하지 않는다면 사용자는 브라우저의 '새로고침'을 통해서

동일한 내용을 계속 서버에 등록할 수 있따.

브라우저에서는 이런 경우 경고창을 보여주기는 하지만 근본적으로 차단하지는 않습니다.