본문 바로가기
반응형

전체 글 목록571

스프링 기술 면접 대비 - 스프링 MVC 잊지 말아야 할 기본사항 : 스프링 MVC 패턴의 목적은 결국 HTTP 요청을 처리하고 HTTP 응답 메시지를 만들기 위함이다. Q) MVC 패턴이 무엇인가요? A) 컨트롤러와 뷰라는 영역으로 역할을 나눈 패턴입니다. 컨트롤러는 HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행합니다. 그리고 뷰에 전달할 데이터를 모델에 담습니다. 모델은 뷰에 전달할 데이터를 담아두었다가 뷰에 전달해줍니다. 뷰는 모델에 담겨있는 데이터를 사용해서 화면을 구성합니다. 이렇게 역할을 나누게 되면 각자 할 일에만 집중하면 되므로 코드도 확실히 구분해놓을 수 있고 깔끔해집니다. +) 일반적으로 비즈니스 로직까지 컨트롤러에서 처리하면 너무 많은 역할을 담당하게 되므로, 서비스라는 계층을 새로 만들어 이곳에서 비즈니.. 2022. 1. 26.
스프링 기술 면접 대비 - 스프링 기본 기능을 익히고 외우는 것도 좋지만, 그 기능이 왜 필요하고 기존에 비해 뭐가 좋은 지를 알아야 한다! 즉 이해가 우선! Q) 스프링 컨테이너의 역할은 무엇인가요? A) 스프링 빈 저장소에 빈 이름으로 빈 객체를 저장합니다. 또한 설정 정보를 참고해서 의존 관계를 주입해줍니다. Q) 그러한 기능이 왜 필요하며, 어떤 장점이 있나요? A) 기존에는 설정 정보 클래스에서 필요한 인스턴스들을 직접 생성하고, 직접 의존 관계를 주입해줬어야 했습니다. 스프링 컨테이너가 가진 기능을 사용하면, 예를 들어 컴포넌트 스캔 같은 어노테이션을 활용하면 객체 생성이나 의존 관계 주입 같은 일들이 자동으로 처리되게 할 수 있습니다. (물론 @Bean처럼 객체(빈)을 직접 등록할 수도 있음) 그리고 싱글턴으로 사용되어야 할 클래.. 2022. 1. 25.
[Spring MVC] PRG와 RedirectAttributes 사용하기 GET /add로 상품 등록 폼을 얻고, 데이터를 입력한 뒤 상품 저장 버튼을 누르면 POST /add로 데이터를 전송함. 이 상태에서 새로고침을 누른다면? 가장 최근 전송인 POST /add를 다시 보내게 되면서 동일 데이터(id만 다른)가 계속 쌓이게 됨 이것의 해결법으로 상품 저장 클릭 시 뷰 템플릿을 호출하는게 아니라 상품 상세 화면으로 리다이렉트를 호출해주면 된다. v1. 리턴값으로 "redirect:/..."를 넘기면 된다. @PostMapping("/add") public String addItemV5(Item item) { itemRepository.save(item); return "redirect:/basic/items/" + item.getId(); } 근데 반환값을 잘 살펴보면 +i.. 2022. 1. 20.
[Thymeleaf] 타임리프 간단한 사용법 타임리프 사용 선언 속성 변경 타임리프 뷰 템플릿을 거치게 되면 원래 값을 th:xxx 값으로 변경한다. 만약 값이 없다면 새로 생성한다. HTML을 그대로 볼 때는 href 속성이 사용되고, 뷰 템플릿을 거치면 th:href 의 값이 href 로 대체되면서 동적으로 변경할 수 있다. 타임리프의 핵심 타임리프의 장점은 HTML로 파일 보기를 유지하면서 템플릿 기능도 할 수 있다는 것. HTML을 파일로 직접 열었을 때 th:xxx가 있어도 웹브라우저는 th: 속성을 알지못하므로 무시함 URL 링크 표현식 - @{...} 타임리프는 URL 링크를 사용하는 경우 @{...}로 표현해야 한다. 예시 : th:href="@{/css/bootstrap.min.css}" URL 링크 표현식2 th:href="@{/.. 2022. 1. 20.
[Spring MVC] HTTP 메시지 컨버터, 요청 매핑 핸들러 어댑터 구조 HTTP 메시지 컨버터가 적용되는 경우 HTTP 요청: @RequestBody , HttpEntity(RequestEntity) HTTP 응답: @ResponseBody , HttpEntity(ResponseEntity) 스프링 부트 기본 메시지 컨버터 (순서대로 대상 클래스 타입과 미디어 타입 둘을 체크하여 사용 여부를 결정) 0 = ByteArrayHttpMessageConverter 1 = StringHttpMessageConverter 2 = MappingJackson2HttpMessageConverter ByteArrayHttpMessageConverter : byte[] 데이터를 처리한다. - 클래스 타입: byte[], 미디어 타입 : */* - 요청 : @ReqeustBody byte[] .. 2022. 1. 19.
[Spring MVC] 스프링 MVC 기본 기능 - (3) HTTP 응답 스프링에서 응답 데이터를 만드는 3가지 방법 1. 정적 리소스 : 웹브라우저에 정적인 HTML, CSS, JS 제공할 때는 정적 리소스 사용 2. 뷰 템플릿 사용 : 웹브라우저에 동적인 HTML 제공할 때는 뷰 템플릿 사용 3. HTTP 메시지 사용 : HTTP API를 제공하는 경우에는 HTTP 메시지 바디에 JSON 같은 형식으로 데이터를 보냄 정적 리소스 정적 리소스 경로 : src/main/resources/static 파일 경로가 src/main/resources/static/basic/hello-form.html라면 웹브라우저에서 다음을 실행하면 된다. http://localhost:8080/basic/hello-form.html 뷰 템플릿 뷰 템플릿 경로 : src/main/resources.. 2022. 1. 18.
반응형