공부/Spring39 [Spring MVC](4) 프레임워크 만들기 v4,5 구조 구조는 v3와 같으나, 컨트롤러가 ModelView를 반환하지 않고, viewName만 반환한다. ControllerV4 package hello.servlet.web.frontcontroller.v4; import java.util.Map; public interface ControllerV4 { /** * @param paramMap * @param model * @return viewName */ String process(Map paramMap, Map model); } ModelView를 반환하지 않는다. model 객체는 파라미터로 전달되기 때문에, 그냥 사용하면 되고, 결과로 뷰 이름만 반환해준다. MemberFormControllerV4 package hello.servlet.web.. 2024. 1. 22. [Spring MVC](3) 프론트 컨트롤러 도입, 프레임워크 만들기 v1,2,3 *서블릿 하나로 클라이언트의 요청을 받음(요청 받는 입구가 하나) *프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아 호출 *공통 처리 가능 *나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 컨트롤러 인터페이스를 만든다. 각 컨트롤러는 이 인터페이스를 구현하면 된다. 프론트 컨트롤러는 이 인터페이스를 호출해서 구현과 관계없이 로직의 일관성을 유지한다. 각 컨트롤러에는 공통된 부분을 구현한다. 구조 ControllerV1 인터페이스 package hello.servlet.web.frontcontroller.v1; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet... 2024. 1. 20. [Spring MVC](2) MVC 패턴 1. 너무 많은 역할 하나의 서블릿이나 JSP만으로 비즈니스 로직, 뷰 렌더링까지 모두 처리하면 너무 많은 역할을 하게 된다. 유지보수시 많은 양의 얽혀있는 코드를 봐야하기 때문에 어려움이 증가한다. 2. 변경의 라이프 사이클 뷰(UI)를 수정하는 일과 비즈니스 로직을 수정하는 일은 각각 다르게 발생할 가능성이 매우높고 대부분 서로에게 영향을 주지 않는다. 변경의 라이프 사이클이 다른 부분을 하나의 코드로 관리하는 것은 유지보수하기 좋지 않다. 3. 기능 특화 뷰 템플릿은 화면을 렌더링하는데 최적화되어 있기 때문에 이 부분의 업무만 담당하는 것이 가장 효과적이다. *컨트롤러: HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담는다... 2024. 1. 19. [Spring MVC](1) HttpServletRequest & HttpServletResponse 서블릿은 HTTP 요청 메시지를 편리하게 사용할 수 있도록 HTTP 요청 메시지를 파싱해준다. 그 결과를 HttpServletRequest객체에 담아 제공한다. 임시 저장소 기능 해당 HTTP 요청이 시작부터 끝날 때 까지 유지되는 임시 저장소 기능 *저장: request.setAttribute(name, value) *조회: request.getAttribute(name) 세션 관리 기능 *request.getSession(creat: true) 1. GET - 쿼리 파라미터 2. POST - HTML Form -> request.getParameter()는 GET URL 쿼리 파라미터 형식도 지원하고, POST HTML Form 형식도 둘 다 지원하니, 구분없이 사용할 수 있다. 3. HTTP mes.. 2024. 1. 19. [HTTP](3) HTTP 메서드 회원 정보 관리 API를 만들어보자. 회원 목록 조회 회원 조회 회원 등록 회원 수정 회원 삭제 무작정 URI에 기능을 표현하는 방법은 좋은 설계가 아니다. 중요한 것은 리소스 식별이다. 여기서 리소스는 무엇일까? '회원'이라는 개념 자체가 리소스이다. 나머지는 단지 기능일 뿐이다. 그러므로, '회원'이라는 리소스만 식별하면 된다. => 회원 리소스를 URI에 매핑한다. 회원 목록 조회: /members/{id} 회원 조회: /members/{id} 회원 등록: /members/{id} 회원 수정: /members/{id} 회원 삭제: /members/{id} URI는 리소스만 식별한다. 리소스를 대상으로 하는 행위를 분리하면 각 기능별로 구분할 수 있다. 여기서는 '조회', '등록', '삭제', '변경.. 2024. 1. 18. [HTTP](2) URI, HTTP • scheme://[userinfo@]host[:port][/path][?query][#fragment] • https://www.google.com:443/search?q=hello&hl=ko *프로토콜(https) *호스트명(www.google.com) *포트 번호(443) *패스(/search) *쿼리 파라미터(q=hello&hl=ko) *클라이언트 - 서버 구조 : Request - Response 구조 *무상태 프로토콜(스테이트리스) : 서버가 클라이언트의 상태를 보존하지 않는다. 장점: 서버 확장성 높음(스케일 아웃) => 클라이언트 요청이 증가해도 서버를 대거 투입할 수 있다. 단점: 클라이언트가 추가 데이터 전송 *비연결성 요청 - 응답 완료시, 연결을 끊어버려 서버 자원을 효율적으로 사.. 2024. 1. 18. 이전 1 2 3 4 5 6 7 다음