전체 글(198)
-
자바 Exception 정리
Java에서 예외는 크게 Checked Exception과 Unchecked Exception으로 나뉘며, 이 둘의 차이는 컴파일러가 예외 처리를 강제하느냐의 여부입니다. ✅ 예외 전체 구조 (Java)Throwable├── Error // 시스템 오류 (개발자가 처리 ❌)└── Exception // 애플리케이션 예외 (개발자가 처리 ✅) ├── Checked Exception // 예외 처리 강제 └── Unchecked Exception // 예외 처리 선택 (RuntimeException 계열) ✅ 1. Error: 시스템 레벨의 심각한 문제 (예: JVM 자체 문제)예외 이름설명OutOfMemoryError메모리가 부족할 때St..
2025.07.02 -
리다이렉트시 사용하는 RedirectAttributes
✅ RedirectAttributes란?redirect:를 사용할 때 쿼리 파라미터나 플래시 속성(flash attribute)을 추가해서 전달할 수 있도록 도와주는 객체입니다.🔍 왜 필요한가?redirect:/some-url을 하면 새로운 요청이 발생합니다.이때 Model에 담은 데이터는 redirect 후 요청에서는 사용할 수 없습니다.그래서 리다이렉트 시 필요한 데이터를 넘기기 위해 RedirectAttributes를 사용합니다.✅ 사용 방법 2가지1. 쿼리 파라미터 방식 (addAttribute)@PostMapping("/save")public String save(User user, RedirectAttributes redirectAttributes) { redirectAttributes..
2025.07.02 -
스프링 MVC 메서드 파라미터용 주요 어노테이션
어노테이션역할 및 설명 @RequestParam쿼리 스트링이나 폼 데이터의 특정 파라미터 값을 받음. 예: /user?id=1@PathVariableURL 경로 일부를 변수로 받아옴. 예: /user/{id}@RequestBodyHTTP 요청 본문을 읽어 객체로 변환 (주로 JSON, XML)@ModelAttribute폼 데이터 또는 쿼리 파라미터를 자바 객체에 바인딩@RequestHeaderHTTP 요청 헤더 값을 받아옴@CookieValue쿠키 값을 받아옴@SessionAttribute세션에 저장된 값을 받아옴@RequestPart멀티파트 요청에서 특정 부분(파일 등)을 받아옴@Valid검증 어노테이션과 함께 사용해 입력 데이터 유효성 검사 실행 (JSR-303/JSR-380 Bean Validati..
2025.07.02 -
Spring에서 서버 사이드 렌더링과 API 통신은 언제, 어떻게 나눠서 써야 할까?
공지사항 웹 프로젝트를 진행하다 보면 이런 고민을 하게 됩니다:화면 진입 시 데이터를 바로 넘길까? 아니면 화면만 보여주고 JavaScript로 API 요청을 할까?특히, 프론트엔드가 Thymeleaf 기반의 정적 HTML이라면, 이 구조를 어떻게 나누는 게 좋을지 헷갈릴 수 있습니다. 이 글에서는 서버사이드렌더링 과 API 통신을 역할에 따라 어떻게 분리하면 좋을지, Thymeleaf와 연계해서 어떤 방식이 더 자연스러운지 실제 사례를 중심으로 정리해봅니다. 보통 서버사이드 렌터딜응로 화면을 그려주는 메소드는 @Controller에 작성하고, API 통신 메소드는 @RestController에 작성 ✅ @Controller와 @RestController의 차이어노테이션 ..
2025.07.01 -
롬복 어노테이션 정리
1. @Getter, @Setter각 필드에 대한 get, set 메서드를 자동 생성@Getter@Setterprivate String name;클래스에 붙이면 모든 필드에 대해 getter/setter 생성2. @ToStringtoString() 메서드를 자동 생성필드값을 보기 좋게 출력할 수 있게 함@ToStringpublic class User { private String name; private int age;} 3. @EqualsAndHashCodeequals(), hashCode() 메서드를 자동 생성@EqualsAndHashCodepublic class User { private String name; private int age;} 4. @NoArgsConstruc..
2025.06.28 -
HTTP 요청
📦 HTTP 요청의 전체 구조[1] 요청 라인 (Request Line)[2] 요청 헤더 (Headers)[3] 빈 줄 (헤더와 바디 구분)[4] 요청 바디 (Body, 선택) ✅ 1. 요청 라인 (Request Line)요청의 핵심 정보가 담겨 있어요.GET /boards/1 HTTP/1.1🧾 구성구성 요소예시설명HTTP 메서드GET요청 목적 (조회, 등록 등)요청 대상 URI/boards/1자원 식별 주소HTTP 버전HTTP/1.1사용 중인 프로토콜 버전 ✅ 2. 요청 헤더 (Headers)요청에 대한 부가 정보(메타데이터) 를 담는 곳입니다.📌 자주 쓰는 헤더헤더설명예시Host요청 대상 서버 도메인Host: www.example.comContent-Type요청 바디의 타입application/..
2025.06.24