
HTTP 기반정적 리소스 제공, 기타 부가기능정적 HTML, CSS, JS, 이미지, 영상ex) NGINX, APACHEHTTP 기반웹서버 기능 포함 + (정적 리소스 제공 가능)프로그램 코드를 실행해서 애플리케이션 로직 수행동적 HTML, HTTP API(JSON)서

@ServletComponentScan스프링 부트는 서블릿을 직접 등록해서 사용할 수 있도록 @ServletComponentScan을 지원한다.@WebServlet 서블릿 애노테이션name: 서블릿 이름urlPatterns: URL 매핑HelloServletinde

HTTP요청 메시지를 개발자가 직접 파싱해서 사용해도 되지만, 매우 불편할 것이다. 서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 HTTP 요청 메시지를 파싱한다.http 요청 메시지START LINEHTTP 메소드URL쿼리 스트링스

GET - 쿼리 파라미터/url?username=hello&age=20메세지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달POST - HTML Formcontent-type application/x-www-form-urlencoded메세지 바디에 쿼리 파

HttpServletResponse 역할http 응답 메세지 생성HTTP 응답코드 지정헤더생성바디생성편의기능 제공contentType, 쿠키, redirectHTTP 응답 메시지는 주로 다음 내용을 담아서 전달한다.단순 텍스트 응답HTML 응답HTTP API - Me

회원정보이름: username나이: age기능 요구사항회원 저장회원 목록 조회회원 도메인 모델MemberRepositoryMemberRepositoryTestMemberFormServletMemberSaveServletMemberListServlet정적인 HTML문서라

JSP 라이브러리 추가build.gradlenew-form.jspsave.jspJSP는 자바 코드를 그대로 다 사용할 수 있다.<% ~ %>이 부분에는 자바 코드를 입력할 수 있다.<=% ~ %>이 부분에는 자바 코드를 출력할 수 있다.회원 저장 JSP를 보

"변경의 라이프 사이클"UI를 일부 수정하는 일과 비즈니스 로직을 수정하는 일은 각각 다르게 발생할 가능성이 매우 높고 대부분 서로에게 영향을 주지 않는다. 이렇게 변경의 라이프 사이클이 다른 부분을 하나의 코드로 관리하는 것은 유지보수하기 좋지 않다."Model Vi

"프론트 컨트롤러 패턴 특징"프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출입구를 하나로공통 처리 가능프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨스프링 웹 MVC와 프론트 컨트롤러스프

https://github.com/lay423/servlet/commit/bff20de74feb46ac882f9e334c7b9af878fafe33"서블릿 종속성 제거"요청 파라미터 정보는 자바의 Map으로 대신 넘기도록 하면 지금 구조에서 컨트롤러가 서블릿 기

앞서 만든 v3 컨트롤러는 서블릿 종속성을 제거하고 뷰 경로의 중복을 제거하는 등, 잘 설계된 컨트롤러이다. 하지만, 항상 ModelView 객체를 생성하고 반환해야 하는 부분이 조금은 번거롭다.좋은 프레임워크는 아키텍처도 중요하지만, 그와 더불어 실제 개발하는 개발자

"어댑터 패턴"지금까지 우리가 개발한 프론트 컨트롤러는 한가지 방식의 컨트롤러 인터페이스만 사용할 수 있다.ControllerV3, ControllerV4는 완전히 다른 인터페이스이다. 따라서 호환이 불가능하다.어댑터 패턴을 사용해서 프론트 컨트롤러가 다양한 방식의 컨

직접 만든 프레임 워크 -> 스프링 MVC 비교FrontController -> DispatcherServlethandlerMappingMap -> HandlerMappingDispatcherServlet 서블릿 등록DispacherServlet도 부모 클래스에서 Ht

https://github.com/lay423/servlet/commit/b70e836739d31e2c5b8503400941119f5b2210c6@RequestMapping스프링은 애노테이션을 활용한 매우 유연하고, 실용적인 컨트롤러를 만들었는데 이것이 바로

지난번에 Java 버전 17로 했었다가 갈아엎었기 때문에 이번에는 확실하게 Java 11버전으로 프로젝트 생성https://github.com/lay423/springmvc/commit/6a700fc20c6092d87c365c10e147b37e15677ca3h

https://github.com/lay423/springmvc/commit/861bec704eaadf45e9ca100aad84f09f87558ab5

https://github.com/lay423/springmvc/commit/58688e215d2838d1f851b3fd5da9d28ef55e8946https://github.com/lay423/springmvc/commit/1675e562c6a10c

https://github.com/lay423/springmvc/commit/5ac56b162fbd717db43698e1967bc4dbe0466d4c이번에는 HTTP API에서 주로 사용하는 JSON 데이터 형식을 조회해보았다.기존 서블릿에서 사용했던 방식과

https://github.com/lay423/springmvc/commit/b392d64855c5467ef80c0644f62c0ddd0784ea1eHTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에 JSON