본문 바로가기

Spring33

MVC 프레임워크 만들기 (1) - 프론트 컨트롤러 도입 오늘 포스팅에서는 지난 포스팅에서 다뤘던 MVC 패턴의 한계를 프론트 컨트롤러 패턴을 사용하여서 리팩토링 할 것이다. 우선 프론트 컨트롤러 패턴이란 무엇인가? 프론트 컨트롤러 패턴이란 하나의 서블릿으로 모든 클라이언트 요청을 받는 것을 의미한다. 프론트 컨트롤러는 클라이언트의 요청을 받고 그에 맞는 컨트롤러를 찾아서 호출 해주게 된다. 프론트컨트롤러를 둠으로써 모든 클라이언트 요청 입구가 하나로 처리되게 되어 공통 처리가 가능하다. 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다. 스프링 웹 MVC의 핵심은 바로 FrontController이다. 스프링 웹 MVC의 DispatcherServlet이 바로 FrontController 패턴으로 구현되어 있다! 프론트 컨트롤러 구조 .. 2023. 7. 17.
MVC 패턴의 한계 앞의 포스팅에서 나온 MVC패턴을 적용하지 않은 서블릿과 JSP코드들은 비효율적이고, 유지보수가 어렵다. 그렇다면, 이번에는 앞의 코드들을 MVC패턴을 적용하여, 리팩토링 해보자. 아래는 MVC패턴을 적용한 간단한 회원 전체 조회 소스코드이다. MvcMemberListServlet (회원 전체 조회 컨트롤러) import hello.servlet.domain.member.Member; import hello.servlet.domain.member.MemberRepository; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; impor.. 2023. 7. 17.
MVC 패턴이란 MVC 패턴이란, 하나의 서블릿이나, JSP로 처리하던 것을 컨트롤러(Controller)와 뷰(View)라는 영역으로 서로 역할을 나눈 것을 말한다. 오늘날의 웹 애플리케이션은 일반적으로 MVC 패턴을 사용한다. MVC 패턴의 요소 컨트롤러(Controller) : HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담는다. 모델(Model) : 뷰에 출력할 데이터를 담아둔다. 뷰가 필요한 데이터를 모두 모델에 담아서 전달해주는 덕분에 뷰는 비즈니스 로직이나 데이터 접근을 몰라도 되고, 화면을 렌더링 하는 일에 집중할 수 있다. 뷰(View) : 모델에 담겨있는 데이터를 사용해서 화면을 그리는 일에 집중한다. 참고 컨트롤러에 비즈니스.. 2023. 7. 17.
HttpServletResponse 정리 HttpServletResponse 역할 앞선 포스팅의 HttpServletRequest와 동일하게, 개발자가 직접 응답메시지를 일일히 생성하여 만든다면 매우 불편할 것이다. 마찬가지로 서블릿은 요청뿐만아니라 HttpServletResponse를 이용하여, 응답도 간편하게 생성할 수 있는 기능들을 제공해준다. HttpServletResponse를 사용하면, HttpRequest요청에 응답을 보다 편리하게 생성해 보낼 수 있다. HttpServletResponse는 다음과 같은 기능을 제공한다. HTTP 응답 메시지 생성 HTTP응답코드 지정 헤더 생성 바디생성 편의 기능 제공 Content-Type, 쿠키, Redirect HTTP 응답 데이터 - 단순 텍스트와 기본 응답헤더 설정 코드 import j.. 2023. 7. 15.
HTTP 요청 데이터를 서블릿을 이용하여 처리하기 HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법은 주로 3가지가 있다. GET - 쿼리 파라미터 POST - HTML Form HTTP message body에 데이터를 직접 담아서 요청 아래의 내용을 살펴보며, 각각의 방법이 어떤 방식과 특징이 있는지 살펴보자. GET - 쿼리 파라미터 /url?username=hello&age=20 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달 예시) 검색, 필터, 페이징등에서 많이 사용하는 방식 코드 예시 import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet;.. 2023. 7. 15.
HttpServletRequest 정리 HttpServletRequest 역할 HTTP 요청 메시지를 개발자가 직접 파싱해서 사용한다면, 매우 불편할 것이다. 서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 HTTP 요청 메시지를 파싱한다. 그리고 그 결과를 HttpServletRequest객체에 담아서 제공한다. HttpServletRequest를 사용하면, 다음과 같은 HTTP 요청 메시지를 편리하게 조회할 수 있다. HTTP 요청 메시지 POST /save HTTP/1.1 Host: localhost:8080 Content-Type: application/x-www-form-urlencoded username=kim&age=20 START LINE HTTP 메소드 URL Query String Schem.. 2023. 7. 14.