본문 바로가기
Java 및 JSP

[JSP] MVC 구조에서 서비스와 인터페이스

by jane.dev 2021. 8. 21.
반응형

MVC 패턴에서는 view가 controller에 요청하면, controller는 매개변수를 이용해 sercvice 객체를 호출

service로 인터페이스를 구현함으로써 각 기능을 실행

 

2021.08.13 - [Java 및 JSP] - [JSP] MVC1과 MVC2

 

[JSP] MVC1과 MVC2

MVC(Model-View-Controller ) 소프트웨어의 비즈니스 로직과 화면을 구분하는데에 중점을 둠 이러한 구분은 더 나은 업무의 분리와 향상된 관리를 제공 1. Model: 데이터와 비즈니스 로직을 관리 - 포함되

wheneveryouwantsz.tistory.com

 

인터페이스(Interface)
추상 메서드의 집합으로, 구현된 것이 전혀 없는 설계도(껍데기와 같음)
모든 메서드는 public, abstract이기 때문에 생략 가능(상수 final도 같은 의미로 생략 가능)

 

→ 인터페이스에 정의된 미완성 추상 메서드를 완성하기위해 인터페이스를 구현

 

(+) 추상 클래스와 인터페이스의 차이

  • 추상 클래스 - 일반 클래스로 추상 메서드를 가지고 있음(인스턴스 변수, 생성자 등을 함께 가지고 있음)
  • 인터페이스 - 추상 메서드 외에는 아무것도 가지고 있지 않음

 

회원가입 로직 작성을 예시로,

interface IUserService{
    void execute(HttpServletRequest request, HttpServletResponse response);	
}

IUserService라는 인터페이스를 정의

void 파라미터에는 요청을 받을 때 전달받은 정보를 저장할 HttpServletRequest 객체(Http 프로토콜의 request 정보를 서블릿에 전달)와 웹브라우저에 응답을 돌려줄 HttpServletResponse 객체를 생성   

 

public class UserJoinService implements IUserService{

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) {
    		...(회원가입 진행 로직)...
	}
}

회원가입 기능을 수행할 UserJoinService 클래스는 IUserService 인터페이스를 구현

 

public class P03PatternServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    	protected void doRequest(HttpServletRequest request, HttpServletResponse response) 
        					  throws ServletException, IOException{
        	IUserService us = null;
                if(uri.equals("/Test/join.do")) {
                	us = new UserJoinService();
                        us.execute(request, response);
                }
        }
}

서블릿에서는 정의된 인터페이스의 객체를 생성해 서비스가 호출되면 모든 서비스의 데이터 타입을 받을 수 있게 함

view에서 요청이 들어오면 controller에서 해당하는 요청을 찾아 인터페이스가 구현된 서비스를 호출하여 실행