Spring Boot 폼 데이터 바인딩: @ModelAttribute 활용법
·
Spring 기초/Spring 기초 지식
이번 포스트에서는 @ModelAttribute를 활용한 데이터 바인딩 방식에 대해 알아보자 1. modelAttribute 방식으로 폼을 작성하고 전송하는 장점 데이터 바인딩의 용이성: modelAttribute 속성을 사용하여 폼 데이터를 모델 객체에 자동으로 바인딩할 수 있다. 이를 통해 컨트롤러에서 해당 모델 객체를 매개변수로 받아 데이터를 쉽게 처리할 수 있다. form 필드의 이름과 model 객체의 필드 이름이 일치하면 자동으로 데이터가 매핑되어 컨트롤러에서 별도의 데이터 추출 및 변환 과정 없이 데이터를 사용할 수 있다. 유효성 검증의 편의성: Spring MVC는 @Valid 어노테이션을 통해 데이터의 유효성을 검증할 수 있다. modelAttribute 방식을 사용하면 모델 객체에 @Va..
Spring Boot 웹 개발: JSP와 JSTL 활용하기 (3편)
·
Spring 기초/Spring 기초 지식2
이번 포스트에서는 spring과 Jsp 그리고 Jstl을 함께 사용하여 개발하는 방법을 소개한다. 1. Spring + JSP + JSTL 을 사용하여 코드작성하는 방법 JSP 파일 내에 직접 자바 코드를 작성하는 방식은 과거에 많이 사용되었지만, 최근에는 추천되지 않는 방식이 되었다. 대신, 서비스 로직은 서블릿이나 스프링 컨트롤러와 같은 다른 서버 사이드 컴포넌트에서 처리하고, JSP 파일은 주로 뷰(View)의 역할을 담당하는 것이 일반적이다. 서비스 로직에서 필요한 데이터를 처리한 후, 해당 데이터를 컨트롤러를 통해 JSP로 전달하는 방식을 주로 사용한다. 컨트롤러는 데이터를 Model 객체에 담아서 JSP로 전달하고, JSP는 JSTL(JavaServer Pages Standard Tag Lib..
Spring Boot 서블릿 연동: Spring과 서블릿의 관계 (2편)
·
Spring 기초/Spring 기초 지식2
이번 포스트에서는 Spring과 Servlet의 관계에 대해서 주로 설명한다. 1. Spring과 서블릿의 관계 1-1. 예시: 회원 가입 기능 개발 서블릿으로 개발한 경우 요리사의 직접 요리: 요리사(서블릿)가 직접 주문(회원 가입 요청)을 받고, 재료(데이터)를 준비하고, 요리(회원 저장)를 하고, 손님에게 음식(응답)을 전달한다. 단계: 주문을 받는다. 재료를 준비한다. 요리를 한다. 음식을 전달한다. Spring MVC로 개발한 경우 요리사와 웨이터의 협업: 요리사(컨트롤러)는 요리만 전문적으로 하고, 웨이터(디스패처 서블릿)가 주문을 받고 음식을 전달한다. 단계: 웨이터가 주문을 받는다. 요리사가 재료를 준비한다. 요리사가 요리를 한다. 웨이터가 음식을 전달한다. 위의 두 방식의 비교 및 설명 ..
Spring Boot 서블릿 기초: 서블릿 이해하기 (1편)
·
Spring 기초/Spring 기초 지식2
이번 포스트에서는 Spring에서 사용되는 서블릿에 대한 기본기를 설명한다. 1. 서블릿이란 서블릿(Servlet)은 웹 서버에서 실행되는 자바 프로그램으로, 클라이언트로부터의 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 역할을 한다. 이는 주로 동적인 웹 페이지를 생성하기 위한 용도로 사용된다. 즉, 사용자가 웹 페이지를 요청할 때마다 새롭게 생성되는 콘텐츠를 만드는데 사용되는 도구 중 하나이다. 서블릿은 일반적인 자바 클래스와 마찬가지로 자바 코드로 작성된다. 하지만 일반적인 자바 프로그램과는 다르게 웹 서버 내에서 실행되며, HTTP 프로토콜을 이용하여 클라이언트와 통신한다. 이를 위해, 서블릿은 보통 HTTP 요청을 처리하는 메소드를 구현한다. 대표적인 예로는 doGet()과 doPos..
Spring Boot 심화: 커스텀 어노테이션 만들기 (2편)
·
Spring 기초/Spring 기초 지식
커스텀한 어노테이션(Custom Annotation)이란 무엇일까? 그리고 우리가 주로 사용하는 어노테이션을 분석해보자 1. 커스텀 어노테이션을 만드는 방법 Java에서는 사용자 정의 어노테이션을 만들 수 있다. 이를 위해선 @interface 키워드를 사용하면 된다. // @interface를 통해 어노테이션을 정의한다. public @interface MyCustomAnnotation { String value() default ""; int number() default 0; } 위의 예제 코드에서, MyCustomAnnotation은 어노테이션의 이름이다. value와 number는 이 어노테이션의 요소(또는 매개변수)이며, 기본값으로 각각 빈 문자열과 0을 가지고 있다. 어노테이션 요소의 유형은..
Spring JPA [SpringBoot3.1] - Querydsl 사용
·
Spring Data JPA
이전 포스팅에서 querydsl적용을 했고 이번에는 repository를 만들어서 사용해 보겠다. 1. QuerydslConfig라는 클래스를 만들고 JPAQueryFactory Bean설정을 해준다. import com.querydsl.jpa.impl.JPAQueryFactory; import jakarta.persistence.EntityManager; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration @RequiredArgsConstructor publi..
Spring JPA [SpringBoot3.x.x] - Querydsl 적용하고 빌드하기
·
Spring Data JPA
SpringBoot3버전에서 Querydsl을 적용하는법이 2버전과 다르게 변경되었다. 1. Build.gradle을 설정한다. 아래와 같이 querydsl설정을 해준다. QClass를 만들때는 스프링부트 2.x.x처럼 compileQuerydsl로 하는게 아니라 compileJava를 실행해서 진행한다.(그냥 빌드도됨) 이런 이슈는 gradle은 꾸준히 업그레이드 되고있지만 querydsl은 업데이트가 되지 않아서 그런것같다. plugins { id 'java' id 'org.springframework.boot' version '3.1.1' id 'io.spring.dependency-management' version '1.1.0' } group = 'com.jinan' version = '0.0...
Spring Boot 3.1 & Spring Security 6: 로그인 프로세스 및 JWT 토큰 동작 설명 (10편)
·
Spring Security
지금까지 만든 시큐리티의 동작을 설명하겠다. 1. 로그인 과정 로그인 페이지 접근: 사용자는 웹 브라우저에서 로그인 페이지(/login)에 접근한다. 로그인 페이지에는 사용자 이름과 비밀번호를 입력할 수 있는 폼이 있다. 로그인 요청: 사용자가 자신의 사용자 이름과 비밀번호를 입력하고 "Login" 버튼을 클릭하면, AJAX 요청을 통해 서버에 로그인 요청(/user/login)이 전송된다. 인증 필터 처리: CustomAuthenticationFilter는 로그인 요청을 가로챈다. 이 필터는 UsernamePasswordAuthenticationFilter를 확장하여 구현되었다. 요청에서 사용자 이름과 비밀번호를 추출하여 UsernamePasswordAuthenticationToken 객체를 생성한다...