![[Spring MVC] 기본 기능 - HTTP 요청, 요청 파라미터](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FdvGMgo%2FbtsE6HGvFuD%2FAAAAAAAAAAAAAAAAAAAAAKEhdBtEp5qrK_YkusUDVrdefmbegDvjWTFrkeVY-9uz%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3D%252B9yXtAgP9d9NpEPUYqkm7JN%252Fz1w%253D)
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. HTTP 요청 어노테이션 기반의 스프링 컨트롤러는 다양한 파라미터를 지원한다. @Slf4j @RestController public class RequestHeaderController { @RequestMapping("/headers") public String headers(HttpServletRequest request, HttpServletResponse response, HttpMethod httpMethod, Locale locale, @RequestHeader MultiValueMap headerMap, @RequestHeader("host") String host, @CookieValue(valu..
![[Spring MVC] 기본 기능 - 요청 매핑](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FDd3Pt%2FbtsE0ha1tSb%2FAAAAAAAAAAAAAAAAAAAAABVJrjwWrV6BwjB7wvnwTseMwhVwuF3M_r-vAgDxQMll%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DlCcAAju8cpGuOaEy8hpadKgDOy8%253D)
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. @RestController 특정 클래스를 RESTful 웹 서비스의 컨트롤러로 지정한다. 이 어노테이션을 사용한 클래스는 HTTP 요청을 처리하는 핸들러 메소드를 포함하며, 각 메소드는 특정 HTTP 요청(예: GET, POST, DELETE 등)에 매핑된다. @RestController는 @Controller 와 유사하지만, 차이점은 @RestController 로 지정된 컨트롤러의 메소드가 기본적으로 HTTP 응답 본문(Body)에 직접 데이터를 작성한다는 점이다.이는@ResponseBody 어노테이션을 모든 핸들러 메소드에 적용한 것과 같은 효과를 가진다. @Controller 는 반환 값이 String..
![[Spring] Logging](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FFLIjp%2FbtsE7qYwHar%2FAAAAAAAAAAAAAAAAAAAAAGpXqIe7DvLgMpqnPLJ6lilMm8BlDzzG9jyFyBbdeREJ%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3D8nsznF3VcQz237F344yPIX7qe6s%253D)
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해서 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용해서 로그를 출력한다. 스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리(spring-boot-starter-logging)가 함께 포함된다. 스프링 부트 로깅 라이브러리는 기본으로 다음 로깅 라이브러리를 사용한다. SLF4J - http://www.slf4j.org Logback - http://logback.qos.ch 로그 라이브러리는 Logback, Log4J, Log4J2 등등 수 많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공하는 것이..
![[Spring MVC] 스프링 MVC - 구조 이해](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbZvjLG%2FbtsEWNn1pmo%2FAAAAAAAAAAAAAAAAAAAAAFAnnTwsvWf3l1H0lMO7nrsDAykEp5GsKouYrTidyyHe%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DDq8qlZTgv36QwLSj%252B4vByniPJuM%253D)
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 2024.02.17 - [Java Category/JSP] - JSP와 서블릿을 이용한 MVC 프레임워크 만들기 JSP와 서블릿을 이용한 MVC 프레임워크 만들기 이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. Model, View, Controller 컨트롤러: HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그 rebugs.tistory.com 위 글과 이어진 내용입니다. JSP로 만든 MVC 프레임워크와 스프링 MVC 프레임워크의 구조가 매우 비슷하다는 것을 알 수 있다. 핵심은 FrontController와 DispatcherServl..

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. Model, View, Controller 컨트롤러: HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담는다. 모델: 뷰에 출력할 데이터를 담아둔다. 뷰가 필요한 데이터를 모두 모델에 담아서 전달해주는 덕분에 뷰는 비즈니스 로직이나 데이터 접근을 몰라도 되고, 화면을 렌더링 하는 일에 집중할 수 있다. 뷰: 모델에 담겨있는 데이터를 사용해서 화면을 그리는 일에 집중한다. 여기서는 HTML을 생성하는 부분을 말한다. 참고 컨트롤러에 비즈니스 로직을 둘 수도 있지만, 이렇게 되면 컨트롤러가 너무 많은 역할을 담당한다. 그래서 일반적으로 비즈니..
![[h2] mac에서 h2 데이터베이스 설치](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FEJlWX%2FbtsEQLC0NTh%2FAAAAAAAAAAAAAAAAAAAAAP1F_1DO6mBKJ0OlpnOSqBoBk-fAsEhgB8gydKIevPOK%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3D5PGlxvvfzc6peEmJIb%252F97e3%252BNp8%253D)
H2 데이터베이스 H2 데이터베이스는 자바 기반의 경량화된 관계형 데이터베이스 관리 시스템(RDBMS)이다.메모리 내에서 실행될 수 있어서 개발이나 테스트 용도로 많이 사용되곤 한다. 그래서 애플리케이션 개발 시 데이터베이스 서버를 별도로 구성하지 않고도 손쉽게 데이터베이스 환경을 구축할 수 있어서 매우 편리하다. H2 데이터베이스의 주요 특징은 아래와 같다.H2는 자바 애플리케이션에 내장될 수 있어서 복잡한 설치 과정 없이 데이터베이스를 바로 사용할 수 있다.메모리에서 직접 실행되므로 빠른 데이터 액세스와 테스트가 가능하다. 개발 중에는 메모리 데이터베이스를 사용하고, 실제 운영 환경에서는 디스크 기반 저장소를 사용하는 식으로 활용할 수 있다.H2는 표준 SQL을 많이 지원한다. 복잡한 쿼리나 함수, ..
![[Spring MVC] 웹 어플리케이션의 이해](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fk02i3%2FbtsEfp1APql%2FAAAAAAAAAAAAAAAAAAAAABSQdxfXji4or_rqND2z_LSL-89BQ6p4i_9gO2hjqH0R%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DtR3ghLruX8kKO1gwUk9Q3PbsdNQ%253D)
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 웹 서버, 웹 애플리케이션 서버 웹은 HTTP 프로토콜 기반으로 통신하여 데이터를 주고받는다. HTML, TEXT IMAGE, 음성, 영상, 파일 JSON, XML (API) 등 웹 서버 (Web Server) HTTP 기반으로 동작 정적 리소스 제공, 기타 부가기능 정적 (파일) HTML, CSS, JS, 이미지, 영상 NGINX, APACHE 등이 웹 서버로 사용 웹 애플리케이션 서버 WAS (Wep Application Server) HTTP 기반으로 동작 웹 서버 기능 + 프로그램 코드 실행하여 애플리케이션 로직 수행 동적 HTML, HTTP API(JSON), 서블릿, JSP, 스프링 MVC 톰캣, J..
![[HTTP] 캐시와 조건부 요청](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbbbHlY%2FbtsEfsQXCxM%2FAAAAAAAAAAAAAAAAAAAAAHIMm8ebQquOr6XuVgt7EjjRe_U32lkM81GUNNZ0Hzop%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DD6vthTlUY1SrUMU2OSVbK4MEEGM%253D)
이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 캐시를 사용하지 않는다면, 서버의 데이터가 변경되지 않았어도 클라이언트는 서버의 데이터를 다운로드 받아야 한다. 때문에 브라우저 로딩 속도가 느려진다. 이는 성질 급한 사용자가 참지 못하고 해당 사이트를 이탈할 수도 있다. 이는 SEO에 안좋은 영향을 미치기 때문에 장기적으로 사이트에 안좋은 영향을 끼칠 수 있다. 또한 인터넷 네트워크는 느리고 비싸기 때문에 캐시를 필수적으로 사용해야 한다. 캐시 기본 동작 캐시 시간 설정 브라우저에서 GET /star.jpg 첫번째 요청을 보내면, 서버는 HTTP 헤더(0.1M) + HTTP 바디=star.jpg 이미지(1.0M)를 담아 응답을 보낸다. 중요한 점은 HTTP ..