본문 바로가기

Web/spring study28

[Spring] Spring Controller 어노테이션 정리 (MVC, REST api) 1. 개요 스프링을 공부하면서, 컨트롤러 작성 시 여러 어노테이션들을 배우게 되었다. 각각의 특징들을 간단하게나마 모두 정리하면 좋을 것 같아, 해당 게시물에서 최대한 나열해 보려고 한다. 목차 @Controller @RestController @RequestMapping() @GetMapping(), @PostMapping(), ... @ResponseBody @RequestParam() @ModelAttribute @PathVariable() HttpEntity, ResponseEntity @RequestBody @ResponseStatus(HttpStatus.OK) RedirectAttributes etc 2. @Controller @Controller public class MyMVCControl.. 2023. 5. 26.
[Spring] 스프링 MVC 패턴에서 Controller가 Model에 정보 저장하는 방법 정리 1. 개요 스프링 MVC 패턴에 의해 개발을 진행한다면, Controller에서 View에 정보를 전달하기 위해 Model에 정보를 담게 된다. 방식이 여러가지 있으며, 정리하기 위해 해당 게시물을 작성한다. 2. ModelAndView ModelAndView는 스프링 MVC가 제공해주는 클래스로, 핸들러 어댑터가 핸들러(컨트롤러)에서 받은 정보를 가지고 ModelAndView 인스턴스에 담아서 반환한다. 이때, 핸들러에서 직접 ModelAndView를 만들어서 반환할 수도 있다. @RequestMapping("/member/mv") public ModelAndView mvt() { ModelAndView mv = new ModelAndView("response/hi"); //(1) Member memb.. 2023. 5. 25.
[Spring] MVC 패턴, 스프링 MVC 구조 이해 1. 개요 이번 게시물에서는 MVC 패턴에 대한 소개, 장점에 대해서 설명할 것이다. 그 후, 스프링은 이 MVC 구조를 어떻게 구현하였는지를 알아보기위해 이와 비슷한 MVC 프레임워크를 만들어 볼 것이다. 2. MVC 패턴의 등장 이유 여러 이유로 인하여 서블릿으로만, 혹은 JSP로만 모든 비즈니스 로직과 뷰 렌더링을 처리해 본 사람들은 알 것이다. 하나의 파일이 너무 많은 역할을 하게 되고, 비즈니스 로직 변경 혹은 UI 변경을 할 일이 있을 경우 모두 함께 있는 파일을 수정해야 한다. 이때, 가장 큰 문제는 UI와 비즈니스 로직은 변경의 라이프 사이클이 전혀 다르다는 점이다. UI를 일부 수정하거나 비즈니스 로직을 수정하는 일은 개별적으로 주로 발생하며, 서로에게 영향을 주지 않는 경우가 많다. (.. 2023. 5. 24.
[Spring] SLF4J 로깅 간단한 정리 1. 개요 이번 게시물에서는 로그 사용법에 대해서 알아 볼 것이다. 사실 깊이있게 들어가면 공부할 내용들이 많지만, 우선 간단하게 로그를 왜 사용해야 하는지, 실제로 사용하는 방법들 위주로 작성할 예정이다. 2. 로깅 코딩을 하다 보면, 여러 정보를 확인하기 위해서 콘솔에 직접 값을 출력하고 싶을 때가 있다. 이때, System.out.println()와 같이 직접 출력하는 것이 아닌, 로그를 사용해 남기면 다음과 같은 이점이 있다. - 성능이 더 뛰어남 - 상황에 맞춰서 로그를 출력할지 결정할 수 있음 - 로그 기록을 파일 혹은 별도의 위치에 남길 수 있음 Logback, Log4J, Log4J2 등 많은 라이브러리가 있으며, 이를 통합해서 제공하는 것이 SLF4J 라이브러리다. 실제로는 스프링 부트가.. 2023. 5. 24.
[Spring] 서블릿, HttpServletRequest, HttpServletResponse 1. 개요 이번 게시물에서는 실제로 서블릿을 사용해 볼 것이다. 서블릿에 대한 설명은 아래 게시물을 참고해보자. (서블릿에 대한 설명) 2. 서블릿 사용하기 서블릿을 사용하려면 웹 애플리케이션 서버를 직접 설치하고, 서블릿 코드를 클래스 파일로 빌드한 후, 톰캣 서버를 실행해야 한다. 이는 매우 번거럽기 때문에 톰캣 서버를 내장하고 있는 스프링 부트를 사용하면 된다. (사실 이제는 스프링 MVC 패턴을 주로 사용, 서블릿 동작 원리만 확인해 보기 위함이기 때문) - 스브링 부트 서블릿 환경 구성 @ServletComponentScan //서블릿 자동 등록 @SpringBootApplication public class ServletApplication { public static void main(Str.. 2023. 1. 17.
[Spring] 서블릿, 서블릿 컨테이너 1. 개요 이번 게시물에서는 서블릿과 이를 담고 있는 서블릿 컨테이너에 대해 알아볼 것이다. 2. 서블릿 1) 서블릿이 그래서 뭐하는 건데? HTTP 요청과 응답을 처리하기 위해서, 서버에서는 왼쪽에 적힌 모든 처리를 해주어야 한다. 하지만, 저 중에서 의미있는 비즈니스 로직에 해당되는 것은 초록색 네모 만의 부분 뿐이다. 따라서 서블릿은 초록색 네모를 제외한 나머지를 개발자 대신 해줌으로서, 개발자로 하여금 비즈니스 로직에 집중할 수 있도록 해준다. 2) 실제 코드 - urlPatterns(/hello)의 URL이 호출되면, 해당 서블릿 코드가 실행된다. - 파라미터를 보면, HTTP 요청을 관리하는 HttpServletRequest와 HTTP 응답을 관리하는 HttpServletResponse가 있다.. 2023. 1. 16.
웹 서버, 웹 어플리케이션(WAS), 그리고 사용법 1. 개요 이번 게시물에서는 웹 서버, 웹 어플리케이션(WAS), 그리고 어떻게 활용하면 좋은지에 대해 적도록 할 것이다. 2. 웹 서버 웹 서버(Web Server)는 "정적인 상황"에 사용한다고 생각하면 된다. HTTP 기반으로 동작하며, 정적인 리소스를 주로 제공한다.(정적 HTML, CSS, JS, 이미지, 영상..) 기타 부가기능도 있으며 예시로는 NGINX, APACHE가 있다. 3. 웹 애플리케이션 서버 웹 애플리케이션 서버(WAS, Web Application Server)도 마찬가지로 HTTP 기반으로 동작한다. 이는 웹 서버의 기능을 포함함과 동시에, 정적 리소스를 제공 가능하다. 프로그램 코드를 실행해서 애플리케이션 로직 수행이 가능하며, 이로 인해 동적 HTML, HTTP API(J.. 2023. 1. 15.
[Spring] 빈 스코프 (@Scope) 0. 개요 이번 게시물에서는 스프링 스코프에 대해 작성할 것이다. 해당 게시물을 보기 전, 아래 링크의 글을 보고 오는 것을 추천한다. (스프링 빈과 스프링 컨테이너) 1. 빈 스코프란? 모든 설명에 나오는 예시 프로젝트의 설계 방식은 아래 링크를 참고 https://imgzon.tistory.com/114 빈 스코프란 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다음과 같은 다양한 스코프를 지원한다. - 싱글톤: 기본 스코프(default), 스프링 컨테이너의 시작과 끝을 함께하는 가장 넓은 범위의 스코프이다. - 프로토타입: 프로토타입 빈의 생성과 의존관계 주입까지만 스프링 컨테이너가 관여하고, 그 이후로는 관리하지 않는 매우 짧은 범위의 스코프이다. - 웹 관련 스코프 - request: 웹 요청.. 2023. 1. 10.