gi_dor

FrontController - 간단 본문

Back_End/JSP_Servlet

FrontController - 간단

기돌 2024. 2. 14. 23:32
728x90

기존 패턴

FrontController 사용

Front Controller에 요청을 보내고,
Front Controller은 각 요청에 맞는 컨트롤러를 찾아서 호출시킨다.
공통 코드에 대해서는 Front Controller에서 처리하고, 서로 다른 코드들만 각 Controller에서 처리할 수 있도록 한다.

 


 

 FrontController 패턴은 웹 애플리케이션에서 클라이언트의 요청을 중앙 집중적으로 처리하는 패턴이라고 한다. 

  • 공통 코드의 중복을 줄임 ,  애플리케이션의 구조를 개선할 수 있다
  • 요청 1개 = 컨트롤러 1개 → 컨트롤러 갯수가 많아짐
  • 하나의 컨트롤러 안에 여러개 처리하는 방식

class FrontController{

	}
    
//클라이언트의 모든 요청은 여기로 옴(다른 컨트롤러들이 직접 받지X)

//이 작업들은 맨날 해야 하는 작업들임
// 1. 요청 접수
// 2. 요청 분석
// 3. 적절한 요청핸들러 메소드 실행
// 4. 이동할 경로 반환받가
// 5. 해당 경로로 내부 이동하기(-> 내부이동   JSP)
class BoardController {

	public String list(req, resp){ ... }

	public String detail(req, resp){ ... }

	public String form(req, resp){ ... }

	public String insert(req, resp){ ... }

}
class LoginLogoutController {
	
	public String loginForm(req, resp){ ... }

	public String login(req, resp){ ... }

	public String logout(req, resp){ ... }
}
class UserController {
	public String info(req, resp){
		User user = userDao.getUserById("hong");
		req.setAttribute("user", user);
		
		return "user/info.jsp";  //내부이동할 jsp 경로
	}
}

//업무로직 수행
//속성으로 데이터 저장
//내부이동할 페이지 반환

 

▶ 실제 개발자가 하는 부분 :  UserController , jsp

 

📌 다른 Controller들 자바 클래스로 만들기

FrontController가 서블릿으로 → FrontController에서 다른 Controller 실행(request, response 전달) → 다른 Controller들은 일반 자바 클래스로 만들 수 있음

서블릿 클래스만 Http 요청을 받고 Http 응답 보낼 수 있음

 

📌 FrontController와 다른 Controller의 분리

FrontController - 클라이언트 요청 접수, 뷰 페이지로 내부 이동

다른 Controller - 업무로직 호출, 데이터 획득, 데이터를 뷰에 전달

 

@Controller
@RequestMapping(path = "/user")
class UserController {
	@RequestMapping(path = "/register")
	public String form(req, resp){
		//회원가입 화면 제공
		return "user/form.jsp";
	}

	@RequestMapping(path = "/register". method = HttpMethod.POST)
	public String register(req, resp){
		//회원가입처리(요청 파라미터 조회, User 객체 생성/값 담기, Dao 전달해서 저장시키기)
		return "redirect:completed";
	}

	@RequestMapping(path = "/completed")
	public String completed(req, resp){
		//회원가입 완료 화면 제공
		return "user/completed.jsp";
	}
}

 

https://yeonyeon.tistory.com/103

 

[MVC] 프론트 컨트롤러 패턴

기존의 패턴을 설명하자면 아래 그림과 같다 각 클라이언트들은 Controller A, B, C에 대해 각각 호출한다. 공통 코드들은 별도로 처리되어 있지 않고 각 Controller에 포함되어 있다. 하지만 프론트 컨

yeonyeon.tistory.com

 

728x90