본문 바로가기

Programming_web/Make Board - Study

[Spring] 스프링 프레임워크로 만드는 게시판2

계층별 - 비즈니스 계층

Service 객체를 만든다. 

1. 요구사항을 메소드로 정리해서 Service 인터페이스를 정의하고

2. ServiceImpl.java 에서 구현 객체를 만들어준다. 

 

비즈니스 계층의 역할

컨트롤러와 DAO 사이의 접착제 역할을 한다. 

1. 각 회사마다 다른 로직이나 규칙을 데이터베이스에 무관하게 처리할 수 있는 완충 영역

2. 컨트롤러와 같은 외부 호출이 영속 계층에 종속적인 상황을 막아준다. 

3. 컨트롤러로 로직이 집중되는 것을 막는다. (트랜잭션 처리, 예외처리 등) 

 

비즈니스 계층은 로직에 필요한 데이터베이스 관련 객체들을 모아서 자신이 원하는 일을 처리하는 용도이다. 

 

root-context.xml 수정 

service package를 Spring container가 인식할 수 있도록 등록해준다. 


<context:component-scan base-package="org.coc.service"></context:component-scan>

 

BoardService 인터페이스 구현 

 

 

BoardServiceImpl

 

 

등록 구현 

CRUD를 구현하는 영속계층과 서비스 계층을 전부 작성했다면

실제로 이를 웹 화면에서 처리하는 컨트롤러와 뷰를 제작해야 한다. 

 

컨트롤러 작성 과정

1. 공통적인 URI 경로와 각 기능별 URI

2. 각 URI에 대한 호출방식 (GET, POST)

3. 결과 처리와 리다이렉트 방식의 페이지 결정 

4. 예외 페이지 

 

URI 작성 규칙

1. 모듈을 나타내는 경로를 가지고 있는 것이 좋다. 

게시판의 경우 /board/regist , /board/remove 등으로 모듈과 그에 대한 처리를 나타낸다. 

 

2. 외부나 다른 사람에게 메신저등으로 보낼 수 있도록 하려면 반드시 GET 방식으로 처리한다.

즉, 조회가 가능하도록 만들어야 하는 경우에는 GET을 사용한다. 

 

3. POST 방식은 현재 사용자가 스스로 작업하는 내용이 있는 경우에 사용한다. 

외부에 노출하는 것이 아닐 때 POST 방식을 사용 

 

컨트롤러 선언 

스프링 MVC를 사용하는 경우에는 컨트롤러 역시 @Controller 애노테이션을 추가해야한다. 

또한, RequestMapping("/board/*") 로 들어오는 경로를 공통으로 처리한다. 

 

스프링 MVC는 메소드의 파라미터와 리턴 타입이 매우 유연하기 때문에 설계를 할 때 모든 것을 결정해야 한다. 

  • 파라미터 수집은 스프링에서 자동으로 이루어지므로, 파라미터 수집이 필요하면 원하는 객체를 파라미터로 선언한다. 
  • 특별한경우가 아니라면 VO 클래스 혹은 DTO 클래스를 파라미터로 사용하는것이 편리하다. 
  • 브라우저로 들어오는 요청은 자동으로 파라미터로 지정한 클래스의 객체 속성값으로 처리되는 데 이를 바인딩이라고한다. 
  • 스프링의 Model 객체는 해당 메소드에서 뷰에 필요한 데이터를 전달하는 용도로 사용된다. 
등록 컨트롤러의 메소드

1. 등록을 위한 입력 페이지 보기 

2. 입력 데이터 처리 

 

 

 

@RequestMapping(value="/regist", method=RequestMethod.GET)

특정한 URI 경로와 GET/POST 등의 전송방식을 결정하는 method 속성을 사용하고 있다. 

 

GET : 입력 페이지, 조회 페이지에서 주로 사용 

POST : 브라우저 주소창에 보여지면 안되는 정보를 전송하는 데 사용 

 

반환되는 뷰의 경로는 /WEB-INF/views/board/success.jsp 가 된다. 

 

등록 페이지 구현 (.jsp)

 

전체 목록 보기 구현 

 

 

 

1. model에 담아서 객체를 보내주는 방법 

2. json에 담아서 반환하는 방법 

 


출처 : 코드로 배우는 스프링 웹 프로젝트