일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- reflection
- CPU bound
- Spring
- URL
- 문자열 내마음대로 정렬하기
- IO bound
- CPU
- stack
- springMVC
- Split
- green thread
- Queue
- 동시성문제
- 십진수 이진수 전환
- 크기가 작은 부분 문자열
- frontPattern
- annotation
- 가장 가까운 단어
- 프로그래머스
- 문자열
- process
- java
- DICTIONARY
- dns
- port
- deque
- 코딩테스트
- 2차원 배열 출력
- TCP/IP
- http
- Today
- Total
목록Spring (8)
아무나개발하자

상품 목록 - 타임리프 이제부터 본격적으로 컨트롤러와 뷰 템플릿을 개발해 보겠다. 우선 첫번째로 만들어볼 컨트롤러는 상품목록 컨트롤러이다. 단순히 저장되어있는 상품을 모두 조회하는 기능을 가지고 있다. 그럼 상품목록 컨트롤러를 만들어 보자 BasicItemController package hello.itemservice.web.basic; import hello.itemservice.domain.item.Item; import hello.itemservice.domain.item.ItemRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; import org.springframe..

지금까지 김영한님의 강의를 들으면서 spring mvc구조의 탄생 배경에 대해 배워봤다, 이제는 직접 spring mvc를 사용하여 웹페이지를 개발해 보겠다. 요구사항 분석 - 상품을 관리할 수 있는 Admin웹 서비스를 만들어 보자 상품 도메인 모델(item) - 상품id, 상품명, 가격, 수량이 들어간다. 상품관리 기능 - 상품목록, 상품 상세, 상품 등록, 상품 수정 서비스 제공의 흐름도 서비스 제공의 흐름도이다. 상품 도메인을 개발해보자 1. Item - 상품 객체 package hello.itemservice.domain.item; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Item { private Long..

Spring MVC 구조 위 그림은 Spring-MVC의 전체적인 구조를 보여주고 있는 그림이다. 그러면 HTTP 메시지 컨버터는 SpringMVC에서 어느곳에 위치할지 궁금할 것이다. 살짝만 이야기 하자면 어노테이션 기반으로 컨트롤러를 처리하기 때문에, 핸들러 어댑터쪽에 위치한다. RequestMappingHandlerAdapter의 동작 방식 ArgumentResolver 우리가 어노테이션 기반의 컨트롤러를 사용할때, 우리는 다양한 파라미터를 사용할 수 있었다. 예를들어 HttpServletRequest , Model 은 물론이고, @RequestParam , @ModelAttribute같은 어노테이션 그리고 @RequestBody , HttpEntity 같은 HTTP 메시지를 처리하는 부분까지 수 ..

컨트롤러가 뷰템플릿으로 HTML을 생성해서 응답하는 것이 아니라, HTTP API처럼 JSON이나, 텍스트를 HTTP메시지 바디에서 직접 읽거나 쓰는경우 HTTP 메시지 컨버터를 사용한다. 그럼 자세하게 HTTP메시지 컨버터에 대해 소개하겠다. 우선 컨트롤러에서 파라미터에 @RequestBody , HttpEntity(RequestEntity)가 사용되면, HTTP요청 정보를 메시지 컨버터를 사용하여 우리가 필요한 정보로 변환해 준다. return 값으로 @ResponseBody , HttpEntity(ResponseEntity)가 사용되면, HTTP 바디에 우리가 반환한 값을 직접 써서 반환해준다. org.springframework.http.converter.HttpMessageConverter pu..

단순하고 실용적인 컨트롤러 - v4 앞서 만든 v3 컨트롤러도 서블릿 종속성을 제거하고, 뷰 경로의 중복을 제거하는 등 잘 설계된 컨트롤러이다. 하지만 또 다르게 중요한것은 "개발자가 편하게 사용 할 수있냐?? "이다. 아무리 구조가 좋고 설계가 잘된 프레임워크라도 개발자가 사용하기 불편하면 망한다. 지금 까지 spring프레임워크가 가장 사랑 받고 인기있었던 이유 중 하나도 개발자가 사용하기에 너무 편한 프레임 워크이다. 물론 spring 프레임워크는 구조와 설계도 아주 잘된 프레임워크이다. 하여튼 우리가 지금까지 구현한 v3를 보면 컨트롤러에서 ModelView 객체를 직접 생성하고 반환하는 번거로운 부분이 있었다. 이부분도 개발자 입장에서 조금더 편하게 사용할 수 있게 바꿔보도록 하자! Contro..

Model 추가 - v3 서블릿 종속성 제거 V2에서 더욱더 개선된 V3를 만들어 보겠다. 우선 서블릿의 종속성을 완전히 제거하겠다. 컨트롤러 입장에서 HttpServletRequest, HttpServletResponse의 요청 파라미터 정보를 자바의 Map으로 대신 넘기도록 하면 지금 구조에서는 컨트롤러가 서블릿 기술을 몰라도 동작할 수 있다. 그리고 지금까지는 model을 사용하기 위해서 request.setAttribute()를 사용하였다. 하지만 이번에는 별도의 Model 객체를 만들어서 반환 할 것이다. 이름 중복 제거 컨트롤러에서 지정하는 뷰 이름에 중복이 있는 것을 확인할 수 있다. /WEB-INF/views/new-form.jsp new-form /WEB-INF/views/save-res..

View 분리 - v2 앞서서 소개한 프론트 컨트롤어 패턴 소개1은 모든 컨트롤러에서 뷰로 이동하는 부분에 중복이 발생한다. 또한 코드도 복잡하고 깔끔하지 않아서 밑에 코드를 수정해 보려고 한다. String viewPath = "/WEB-INF/views/new-form.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response); 밑에 소스코드에서 ControllerV2의 인터페이스를 상속받은 controller클래스는 위에 코드를 모두 반복하고 있다. 위에 코드는 viewPath를 String으로 지정하고 viewPath에 따른 RequestDispatch..

프론트 컨트롤러 패턴 소개 FrontController 패턴 특징 프론트 컨트롤러 특징에 대해 설명하겠다. 이전 서블릿이나 jsp로 웹서비스를 만들때와 다르게 프론트 컨트롤러 서블릿 하나를 만들어서 모든 클라이언트의 요청을 받는다. 그러면 프론트 컨트롤러는 요청에 맞는 컨트롤러를 찾아서 호출하게 된다. 결국 입구를 하나로 만들고 모든 공통 처리를 프론트 컨트롤러에서 함으로써 나머지 컨트롤러들은 서블릿을 사용하지 않고도 구현이 가능해진다. 이제부터 v1~v5까지 점점 발전된 구조를 설명하겠다. 나중에 v3부터는 서블릿을 사용하지 않고도 컨트롤러 구현이 가능해진다. 스프링 웹 MVC와 프론트 컨트롤러 1. 스프링 웹 MVC의 핵심도 바로 FrontController 2. 스프링 웹 MVC의 Dispatche..