본문 바로가기

Back-end/Spring MVC 개념20

10. Front Controller(2) 0. 개요 - 이전 포스팅에서 전체적인 Front Controller의 흐름에 대해서 알아보았다. - 그러나 하나의 디자인 패턴이라 정의하기에는 구조적으로 불편한 부분이 많다. - 이 부분을 어떻게 개선하는지, 최종적으로 Front Controller가 어떻게 작동하는지 알아보자. * 본 포스팅은 Front Controller 시리즈의 내용입니다. 이전 포스팅을 읽는 것을 권장합니다. 1. ModelView 대신 view 이름(String)을 반환 - 이전 포스팅에서 각 Controller는 ModelView 객체를 생성하고 반환했다. 그러나 이는 SRP에 위배된다. - Controller가 비즈니스 로직의 수행과 ModelView의 생성까지 책임지고 있기 때문이다. - 그러므로 ModelView를 더 .. 2022. 3. 7.
9. Front Controller (1) 0. 개요 - 이전 포스팅에서 Servlet과 JSP를 이용한 MVC 1 구조에 대해 배웠다. - MVC 1 구조에 대해 배우면서 각 Controller의 중복 코드에 대한 공통 처리가 필요하다는 것을 알게 되었다. - 이 문제를 해결하기 위해서는 구조적인 접근이 필요하다. - 이번 포스팅에서 MVC 1의 구조적 문제점을 해결하는 방법에 대해 알아보자. 1. Front Controller의 등장 - Front Controller 패턴은 Spring MVC가 사용하는 패턴과 동일하다. - Spring의 MVC의 구조는 Front Controller 패턴을 기반으로 확장된 형태이기 때문이다. - 그러므로 Front Controller의 흐름을 이해한다면, Spring MVC의 핵심 흐름을 이해하는 것이다. .. 2022. 3. 4.
8. Forward와 Redirect 0. 개요 - 이전 포스팅에서 Servlet과 JSP를 이용한 MVC의 동작원리에 대해서 알아보았다. - MVC가 가진 문제점 중 하나로 Forward를 언급하였는데, 이에 대해서 자세히 알아보도록 하자. 1. Forward a) Forward 예시 - 고객센터를 예시로 Forward의 흐름을 알아보자. - 고객이 123번이라는 번호로 고객센터에 전화를 건다. - 직원 A가 연결 되었고, 고객은 자신이 문의사항을 전달한다. - 직원 A는 고객의 문의사항에 대한 답변을 몰라, 옆에 있는 직원 B에게 답변을 얻는다. - 고객은 직원 B가 누구인지 모르지만, 자신의 문의사항이 해결되었으므로 전화를 끝는다. b) Forward의 기능 - 위에서 언급한 고객센터 예시를 염두에 두고 이해해보자. - Forward는.. 2022. 3. 3.
7. MVC 1의 동작원리와 한계점 0. 개요 - 이전 포스팅에서 MVC 1의 등장 이유와 MVC 1의 기본적인 구조에 대해서 알아보았다. - 이번 포스팅에서는 MVC 1의 동작원리와 한계점에 대해서 알아보도록 하자. 1. MVC 1의 동작원리 - 위의 그림은 Servlet과 JSP를 이용한 MVC 1 구조의 흐름을 표현한 것이다. - 아래의 코드 사진을 보고, 어떻게 이 흐름이 구현되는지 함께 알아보자. 1. Controller에 요청이 들어온다. 2. 요청이 들어오면 비즈니스 로직을 수행한다. List members = memberRepository.findAll(); 3. 수행한 로직은 Model에 저장한다. Model은 HttpServletRequest 객체가 가진 임시 저장소를 이용하여 구현한다. - JSP는 HttpServlet.. 2022. 3. 2.
6. MVC 1의 등장 0. 개요 - 이전 포스팅에서 Servlet과 JSP에 대해 배우면서, 이 기술이 갖는 문제점에 대해 언급하였다. - 하나의 대상이 다수의 역할을 갖는다는 문제를 해결하는 방법으로, 역할의 분리를 언급했다. - 그렇다면 어떻게 분리했는지, 최초의 MVC는 어떤 기술을 사용하는지 천천히 알아보자. 1. Web 개발 기술의 발전 흐름 - 본격적으로 MVC를 배우기 전에, Web 개발 기술이 어떤 방식으로 발전했는지 복습해보자. a) 정적 Web - 최초의 Web의 형태로, 정적 Content를 제공한다. - Server는 Client가 언제, 어디서 접근하더라도 동일한 데이터를 반환한다. (= 정적이다) - 초창기의 Web에서는 HTTP 메소드 또한 GET 밖에 없었다. - 왜냐면 Server는 정적 데이터.. 2022. 3. 1.
5. JSP의 등장 0. 개요 - 이전 포스팅에서 Servlet의 동작원리와 기본 사용법을 배웠다. - 이번 포스팅에서는 JSP에 대해서 알아보자. 1. JSP의 등장 - Servlet은 동적 페이지를 구현하는 것이 매우 불편하다. - Servlet은 Java 코드 내부에 HTML을 문자열로 만들어 반환하기 때문이다. - 즉, HTML을 일일이 작성해야 하는 부분으로 인해 Servlet을 이용한 동적 페이지를 구현하는데 한계가 있다. - 이와같은 이유로 JSP가 등장하게 된다. a) Template Engine - 위에서 설명한 불편함으로 인해 template engine의 필요성을 느끼게 된다. - template engine이란, HTML 내부에 Java 코드를 넣는 방식을 사용하는 웹 페이지다. - 대표적으로 JSP,.. 2022. 2. 28.
4. Servlet - 요청/응답 처리방법 0. 개요 - Servlet 사용법을 자세히 배우기 전에, 우선 기본적인 HTTP 지식에 대해 알아보자. - 그다음에 Servlet이 HTTP request와 response를 어떻게 처리하는지에 대해 알아보자. 1. 웹 서비스의 HTTP 요청과 응답 a) GET 방식 - 데이터를 url 파라미터(= 쿼리 파라미터)로 전달하는 방식 - 검색, 필터, 페이징 등에서 자주 사용하는 방식이다. https://devraphy.tistory.com?category=Back-end&id=123 - 위의 예시를 보면, 물음표를 기점으로 쿼리 파라미터를 작성한 부분이라는 것을 알 수 있다. - category라는 이름의 파라미터에는 Back-end라는 값이 매핑된다. - id라는 이름의 파라미터에는 123이라는 값이 .. 2022. 2. 25.
3. Servlet - 기본 사용 방법 0. 개요 - 이번 포스팅에서는 Servlet의 기본적인 사용법과 동작 원리에 대해서 알아보자. 1. 기본적인 Servlet 사용 및 등록방법 a) @ServletComponentScan - main() 메서드가 존재하는 클래스 또는 최상위 경로의 클래스에 부착하는 어노테이션이다. - @ComponentScan과 동일하게 하위 경로에 존재하는 모든 클래스를 Scan 한다. @ServletComponentScan // Servlet 자동등록 @SpringBootApplication public class ServletApplication { public static void main(String[] args) { SpringApplication.run(ServletApplication.class, args.. 2022. 2. 24.
2. Servlet의 등장 0. 개요 - 이전 포스팅에서 기본적인 Web 서비스의 구조와 동작에 대해 알아보았다. - 그리고 WAS에 대해 배우면서 WAS가 단순히 비즈니스 로직만을 수행하지 않는다는 것을 확인했다. - 이번 포스팅에서 WAS가 비즈니스 로직 처리에만 집중하게 할 수 있도록 하는 방법에 대해 알아보자. 1. Servlet - Servlet은 WAS가 지원하는 기능이자, 웹 서버의 성능 향상을 위한 Java의 클래스다. - Servlet을 사용하는 이유는 WAS가 비즈니스 로직 처리만을 수행할 수 있는 환경을 제공하기 때문이다. - 무슨 말인지 잘 모르겠다. 그러므로 Servlet의 기능과 역할에 대해 알아보자. a) Servlet의 역할 - WAS는 웹 서버로부터 전달받은 HTTP request를 parsing 하.. 2022. 2. 23.