전체 글 175

[강의] 스프링 MVC 2편 - 필터, 인터셉터(섹션7)

1. 서블릿 필터공통 관심 사항요구사항을 보면 로그인 한 사용자만 상품 관리 페이지에 들어갈 수 있어야 한다.문제는 로그인 하지 않은 사용자도 다음 URL을 직접 호출하면 상품 관리 화면에 들어올 수 있다. 공통 관심사는 AOP로 해결할 수 있지만, 웹과 관련된 공통 관심사는 서블릿 필터 또는 스프링 인터셉터를 사용하는 것이 좋다. 1) 서블릿 필터 소개필터는 서블릿이 지원하는 수문장이다. 필터 흐름HTTP 요청 → WAS → 필터 → 서블릿 → 컨트롤러 필터 제한HTTP 요청 → WAS → 필터 → 서블릿 → 컨트롤러  // 로그인 사용자HTTP 요청 →  WAS →  필터(적절하지 않은 요청이라 판단, 서블릿 호출 X) // 비 로그인 사용자 필터 인터페이스init(): 필터 초기화 메소드, 서블릿 ..

[스프링 MVC 1편] 웹 페이지 만들기

현재 문제점 정확한 에러의 이유는 모르겠지만, 타임리프의 templates/basic 경로를 handler에서 못 잡고 있다.로깅 메세지가 info이면 에러가 안 보여서 시간을 많이 낭비했다...(보여야 되는거 아닌가..ㅠㅠ)이 부분을 해결해야 강의를 계속 들을 수 있을 것 같다....요구사항 분석상품을 관리할 수 있는 서비스 만들기 상품 도메인 모델상품 ID상품명가격수량상품 관리 기능상품 목록상품 상세상품 등록상품 수정상품 도메인 개발  상품 객체package hello.itemservice.domain.item;import lombok.Getter;import lombok.Setter;@Getter @Setterpublic class Item { private Long id; private..

[스프링 MVC 1편] 구조 이해

DispatcherServlet 구조 살펴보기스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있다.프론트 컨트롤러가 바로 디스패처 서블릿(DispatcherServlet)이다.디스패처 서블릿이 스프링 MVC의 핵심 DispacherServlet 서블릿 등록DispacherServlet도 부모 클래스에서 HttpServlet 을 상속 받아서 사용하고, 서블릿으로 동작한다.DispacherServlet → FramewokrServlet → HttpServletBean → HttpServlet스프링 부트는 DispacherServlet 을 서블릿으로 동작하면서 모든 경로(urlPatterns="/")에 대해서 매핑한다.참고: 더 자세한 경로가 우선순위가 높다. 요청 흐름서블릿이 호출되면 HttpServlet..

[KOSTA] 스프링 부트로 구현하는 메세징 시스템(RabbitMQ)

본 내용은 Mac OS 기준으로 설정되었습니다. 개발환경RabbitMQDockerMySQL, MySQL workbenchVSCodeIntelliJ IDEA설치방법Dockerhttps://docs.docker.com/desktop/install/mac-install/Docker version 26.1.1MySQLbrew install mysql⚡️ root계정이 비밀번호 없이 설치가 된다.Ver 8.3.0 for macos14.2 on arm64RabbitMQbrew info rabbitmqdocker# latest RabbitMQ 3.13docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.13-management⇒ ‼️ 터..

[스프링 MVC 1편] MVC 프레임워크 만들기

정리f else도 좋지만, 다형성으로 작성해보는 것도 좋다.프론트 컨트롤러 패턴FrontController 패턴 특징프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출입구를 하나로공통 처리기능프론트 컨트롤러를 제외한 나머지는 컨트롤러는 서블릿을 사용하지 않아도 됨 스프링 웹 MVC와 프론트 컨트롤러스프링 웹 MVC의 핵심도 바로 FrontController스프링 웹 MVC의 ✨DispatcherServlet이 FrontController 패턴으로 구현되어 있음프론트 컨트롤러 도입구조를 개선할 때는 구조만 개선해야한다?? => 참아 참으라구개선할 때는 같은 레벨의 코드만 개선한다. @WebServlet(name = "frontControllerServ..

[KOSTA] 도메인 모델 기반의 서비스 설계 (DDD)

사전 지식※ 해당 내용은 ChatGPT(80%) + 인터넷 검색(20%) 을 통해 정리 했습니다. ✅ 소프트웨어 개발 순서※ 방법론과 접근 방식에 따라 다를 수 있지만, 일반적인 소프트웨어 공학에서 다음과 같이 포함한다.요구사항 분석(Requirements Analysis)목적: 시스템이 무엇을 해야하는지에 대해 고객의 요구사항을 명확히 정의활동: 요구사항을 수집하고 문서화산출물: 요구사항 명세서(Software Requirements Specification)시스템 설계(System Design)목적: 요구사항을 충족할 수 있는 시스템 구조와 설계를 정의활동: 시스템 아키텍처 설계, 데이터베이스 설계, UI/UX 설계 등을 수행산출물: 시스템 설계 문서, 아키텍처 다이어그램, 데이터 모델상세 설계(De..

[스프링 MVC 1편] 서블릿, JSP, MVC 패턴

강의 요약웹 애플리케이션을 Servlet / 템플릿 / MVC 세 방법으로 개발해보자.Servelt 개발 → 템플릿(JSP) 개발 → MVC 패턴 Servlet은 자바 코드에 HTML이 있어 불편하다.템플릿은 HTML 문서에 서비스 로직 등이 있어 불편하다.그래서 등장한게 MVC 패턴으로 각 역할을 Model, View, Controller로 나눈다. 회원 관리 앱 애플리케이션 요구 사항 기능 요구사항회원 저장회원 목록 조회 회원( Member )도메인 모델@Getter @Setterpublic class Member { private Long id; private String username; private int age; public Member () { } publi..

[Refactoring] 국제화(Internationalization) 수정

상황현재 로직HTML 태그마다 data-lang 이라는 속성을 만들고 있다.data-lang의 속성 값을 자바스크립트 객체로 선언한다.속성 값과 객체가 일치하는 값을 불러와서 국제화 처리 진행문제점자바 스크립트 객체로 되어있기 때문에 값들을 관리하기 어려움.(중복 등)애플리케이션 배포가 끝나고, 이후 값을 수정하려면 엔지니어가 처리하기 어렵다.변경 이유스프링 프레임워크에서 이미 국제화 기능을 지원하고 있다...다른 사이트에서 적어 놓은 글 However, this approach depends on the access to the application's resource files when adding a new supported language or modify the existing message f..

[스프링 MVC 1편] 웹 애플리케이션 이해

웹 서버, 웹 애플리케이션 서버 웹은 HTTP 프로토콜 기반HTML, TEXTImage,음성, 영상, 파일JSON XML거의 모든 형태의 데이터 전송 가능서버간에 데이터를 주고 받을 때도 HTTP 사용 웹 서버(Web Server)HTTP 기반으로 동작정적 리소스 제공, 기타 부가기능정적(파일) HTML, CSS, JS, 이미지, 영상예) NGINX, APACHE 웹 애플리케이션 서버(WAS - Web Application Server)HTTP 기반으로 동작웹 서버 기능 포함 + 정적 리소스 제공 가능프로그램 코드를 실행해서 애플리케이션 로직 수행동적 HTML, HTTP API(JSON)서블릿, JSP, 스프링 MVC예) 톰캣(Tomcat), Jetty, Undertow 웹 서버 VS 웹 애플리케이션 서..