
해당 포스팅에서는 @ModelAttribute에 대해 간략하게 정리해 보고자 한다.@ModelAttribute가 있으면 Model 객체에 item을 자동으로 넣어준다. model.addAttribute("item", item); 로직이 자동으로 붙는다.@ModelAtt

BindingResult는 스프링이 제공하는 검증 오류를 보관하는 객체이다.BindingResult는 순서가 중요하다. 검증할 대상의 바로 다음에 위치해야한다.BindingResult는 Model에 자동으로 포함된다.@ModelAttribute에 바인딩 시 타입 오류가

WebDataBinder는 매개변수 바인딩의 역할을 한다. 또한 내부에 검증 기능을 포함하고 있다. 먼저 타입 변환을 해주고 그 후에 데이터 검증을 실시 하며, 변환 결과나 에러는 Errors에 저장한다.AccountController.class@InitBinder 어

@RestController는 @Controller에 @ResponseBody가 결합된 어노테이션이며, 주로 JSON 형태의 객체 데이터를 반환하는 용도로 사용한다.@RestController, @Controller 차이@Controller는 반환 값이 String이

필터는 클라이언트의 요청을 필터링하기 위해 서블릿 실행 전후에 호출되는 객체이며, 공통 관심사를 처리하기에 적합한 기술이다. 예를들어 모든 페이지에서 로그인 유무를 확인해야 할 경우 각각의 컨트롤마다 로그인 유무를 체크 할 필요 없이, 필터를 이용하여 공통 로직을 한

인터셉터(Interceptor)는 클라이언트의 요청이 컨트롤러의 핸들러에 도달하기 이전에 낚아채서 원하는 작업을 먼저 처리한 후에 핸들러로 보낼 수 있기 때문에 필터(Filter)와 마찬가지로 공통 관심사를 효과적으로 처리하기에 적합한 기술이다. 예를들어 모든 페이지에

스프링 부트는 ErrorPage라는 기본 오류 페이지(기본경로 : /error)와 이를 컨트롤 할 수 있는 BasicErrorController라는 스프링 컨트롤러를 자동으로 등록한다. 개발자는 오직 BasicErrorController가 제공하는 규칙과 우선순위에 따

HttpServletRequest 객체는 클라이언트의 요청 정보들을 편리하게 조회할 수 있는 기능을 제공한다. 서블릿이 클라이언트의 요청 메시지를 파싱하고, 그 결과를 HttpServletRequest 객체에 담아서 제공한다.START LINEHTTP 메소드URL쿼리

HttpServletResponse 역할HTTP 응답 메시지 생성HTTP 응답코드 지정헤더 생성바디 생성편의 기능 제공Content-Type1-1. HttpServletResponse 역할쿠키Redirecthttps://www.inflearn.com/cours

스프링은 @RequestParam을 통해 HTTP 요청 파라미터를 받을 수 있다.@RequestParam("username") 은 request.getParameter("username") 와 거의 같은 코드라 생각하면 된다.@RequestParam은 @RequestP

@RequestMapping은 클라이언트로부터 들어온 요청을 특정 메서드와 매핑하기 위한 기술이다.@RequestMapping 사용 예시value : 요청 받을 url을 설정한다.method : 어떤 요청으로 받을지 설정한다. (GET, POST, PUT, DELETE

업로드중..

스프링에서 비동기 처리를 하는 경우 @RequestBody , @ResponseBody를 사용한다. 이러한 비동기 통신을 하기 위해서는 클라이언트에서 서버로 요청 메시지를 보내거나, 서버에서 클라이언트로 응답을 보낼 때에 본문(Body)에 데이터를 담아서 보내야 한다.

해당 포스팅에서는 HttpEntity & ResponseEntity & RequestEntity에 대해 간략하게 정리해 보고자 한다.HttpEntity는 HTTP 요청 또는 응답 메시지의 header, body 정보를 편리하게 조회 할 수 있는 기능을 제공한다.메시지

HandlerExceptionResolver는 컨트롤러 밖으로 던져진 예외를 해결하고, 동작 방식을 변경할 수 있는 기능을 제공한다. (=ExceptionResolver)WAS -> DispatcherServlet(+preHandle) -> HandlerAdaptor

스프링 부트가 기본으로 제공하는 ExceptionResolver는 다음과 같다. (HandlerExceptionResolverComposite에 다음 순서로 등록)ExceptionHandlerExceptionResolverResponseStatusExceptionRes

@ControllerAdvice는 대상으로 지정한 여러 컨트롤러에 @ExceptionHandler, @InitBinder 기능을 부여해주는 역할을 한다.@ControllerAdvice 에 대상을 지정하지 않으면 모든 컨트롤러에 적용된다. (글로벌 적용)@RestCont

JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다.https://ko.wikipedia.org/wiki/JDBC

SQL Mapper와 ORM 기술 둘다 각각 장단점이 있다. 쉽게 설명하자면 SQL Mapper는 SQL만 직접 작성하면 나머지 번거로운 일은 SQL Mapper가 대신 해결해준다. SQL Mapper는 SQL만 작성할 줄 알면 금방 배워서 사용할 수 있다.ORM기술은

ACID(원자성, 일관성, 고립성, 지속성)는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어이다. 데이터베이스에서 데이터에 대한 하나의 논리적 실행단계를 트랜잭션이라고 한다.예를 들어, 은행에서의 계좌이체를 트랜잭션이라고 할 수 있

스프링 부트는 application.properties에 있는 속성을 참고해서 DataSource를 생성하고 이를 스프링 빈으로 등록한다. (url 정보가 없으면 내장 DB를 생성)application.properties트랜잭션 매니저, 데이터 소스 자동 등록스프링 부

ApplicaiotnContext를 스프링 컨테이너라 한다. 스프링 컨테이너는 @Configuration이 붙은 클래스를 설정 정보로 사용하고, 해당 클래스 내에 @Bean 어노테이션이 붙은 메서드들을 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록한다. 이렇게 스

싱글톤(Singleton) 패턴은 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 그래서 private 생성자를 사용해서 외부에서 임의로 new 키워드를 통해 새로운 객체 인스턴스를 생성하지 못하도록 막아야 한다. 스프링 컨테이너는 객체 인스턴스

해당 포스팅에서는 @ComponentScan & @Autowired에 대해서 정리해 보고자 한다.컴포넌트 스캔을 사용하려면 먼저 @ComponentScan을 설정 정보에 붙여주면 된다. 컴포넌트 스캔은 @Component 애노테이션이 붙은 클래스들을 자동으로 스프링 빈

의존관계 주입은 크게 4가지 방법이 있다.생성자 주입수정자 주입(setter 주입)필드 주입일반 메서드 주입생성자를 통해서 의존 관계를 주입 받는 방법이다. 생성자 호출 시점에 딱 1번만 호출되는 것이 보장된다. (불변, 필수 의존관계에 사용) 생성자가 1개만 있으면

@RequiredArgsConstructor을 적용하면 fianl이 붙은 필드를 모아서 생성자를 자동으로 만들어준다.@RequiredArgsConstructor 적용 전@RequiredArgsConstructor 적용 후https://www.inflearn.c

웬은 HTTP라는 것을 기반으로 통신을 한다. 클라이언트에서 서버로 요청 할 때, 서버에서 클라이언트로 응답할 때 모두 HTTP 라는 프로토콜을 기반으로 동작을 한다.HTTP 기반으로 동작한다.정적 리소스와 기타 부가기능을 제공한다.정적 HTML, CSS, JS, 이미

요청 파라미터와 다르게, HTTP 메시지 바디를 통해 데이터가 직접 넘어오는 경우에는 @RequestParam, @ModelAttribute를 사용할 수 없다. (HTML Form 형식으로 전달되는 경우는 요청 파라미터로 인정됨) InputStream을 사용하면 HTT

스프링에서 응답 데이터를 만드는 방법은 크게 3가지가 있다.정적 리소스 : html/css/js와 같은 정적인 웹 브라우저를 제공 할 때 사용한다.뷰 템플릿 : 동적인 웹 브라우저를 제공 할 때 사용한다.HTTP 메시지 : HTTP API를 제공하는 경우에는 HTML이

@ResponseBody를 사용하면 응답 코드를 설정하기 어려운 반면, @ResponseStatus(HttpStatus.OK) 애노테이션을 사용하면 응답 코드도 설정할 수 있다. 물론 애노테이션이기 때문에 응답 코드를 동적으로 변경할 수는 없다. 프로그램 조건에 따라서

RedirectAttributes를 사용하면 URL 인코딩, pathVarible 이 외에도 쿼리 파라미터까지 처리할 수 있다.http://localhost:8080/basic/items/3?status=true파라미터 status의 값이 true 이면 "저장

@EventListener(ApplicationReadyEvent.class) : 스프링 컨테이너가 완전히 초기화를 다 끝내고, 실행 준비가 되었을 때 발생하는 이벤트이다. 스프링이 이 시점에 해당 애노테이션이 붙은 initData() 메서드를 호출해준다.참고로 이 기

M(Model) : 데이터를 관리하는 역할을 한다.V(View) : 사용자가 화면에서 무엇을 어떻게 볼 것인지 결정하는 역할을 한다.C(Controller) : 기본적으로 컨트롤러는 모델과 뷰의 중간 다리 역할을 한다. 데이터를 가져오고, 수정하고 그 데이터를 사용자에

SpringSecurity를 이용하여 인증을 처리할 때, customUserDetailsService를 구현하여 직접 사용자를 DB에 저장하고 DB로부터 사용자를 직접 조회하여 그 조회한 사용자를 통해서 인증처리가 이루어질 수 있도록 할 수 있다.dependency 추

SpringSecurity에서 로그아웃을 구현하기 위한 방법에는 2가지가 있다.form 태그를 이용하여 POST로 요청a 태그를 이용하여 GET으로 요청 (SecurityContextLogoutHandler 이용)thymeleaf에서 SpringSecurity와 통합하

SpringSecurity를 추가하여 로그인을 테스트 하던 도중 아래와 같은 에러페이지가 표시됐다. 하지만 다시 home으로 이동하면 로그인이 정상적으로 되어있다.해결 방법은 생각보다 간단했다. defaultSuccessUrl의 2번째 인자로 true를 전달해주는 것

Bean Validation은 애노테이션 형태로 검증 로직을 매우 편리하게 적용할 수 있는 API이다. 특정한 구현체가 아니라 검증 애노테이션과 여러 인터페이스의 모음이며, 일반적으로 사용하는 구현체는 하이버네이트 Validator이다.Bean Validation 기능

CSRF(CrossSiteRequestForgery)란 사이트 간 요청 위조의 줄임말이며, 웹 애플리케이션 취약점 중 하나로 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 해서 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격

해당 포스팅에서는 SpringSecurity 기본 설정법에 대해 정리해 보고자 한다.SecurityConfig.classjs/css/image 파일 등 보안 필터를 적용할 필요가 없는 리소스들을 설정할 수 있다.SecurityConfig.classnew Authenti

@Valid 애노테이션 사용 시, 폼을 채울 객체를 만들어서 바인딩을 하려 할 때, 기본 생성자가 없으면 NPE 에러가 발생한다.

UI와 관련된 처리 담당웹 요청과 응답사용자 요청을 검증주 사용 기술: 서블릿과 HTTP같은 웹 기술, 스프링 MVC비즈니스 로직을 담당주 사용 기술: 가급적 특정 기술에 의존하지 않고, 순수 자바 코드로 작성실제 데이터베이스에 접근하는 코드주 사용 기술: JDBC,

">" = (gt)"<" = (lt)">=" = (ge)"<=" = (le)"!" = (not)"==" = (eq)"!=" = (neq, ne)

Spring은 Java에서 가장 널리 사용되는 애플리케이션 개발 프레임워크이다. 하지만 지난 몇 년 동안 Spring은 추가된 기능으로 인해 점점 더 복잡해졋다. 새로운 프로젝트를 시작하려면 일반적으로 긴 과정을 거쳐야 했고 시간이 많이 소요됐다.처음부터 시작하는 것을

Spring Framework는 자바 개발자에게 다양한 기능을 제공하며, 그 중에서도 데이터베이스 트랜잭션 관리를 손쉽게 할 수 있도록 도와주는 @Transactional 어노테이션이 있다. 이 글에서는 @Transactional의 의미와 이를 사용하여 트랜잭션을 관리

SpringBoot에서 MongoDB를 연결하고 데이터를 화면에 출력해 보고자 한다.Spring WebSpring Data MongoDBLombokThymeleafMongoDB에 접속 후 table을 생성하고 테스트용 데이터를 추가해 주었다. (MongoDB 접속 과정

스프링 시큐리티 6 프레임워크를 활용하여 JWT 기반의 인증, 인가를 구현한 과정에 대해서 정리해 보고자 한다.로그인 (인증) : 로그인 요청을 받은 후 세션 방식은 서버 세션이 유저 정보를 저장하지만 JWT 방식은 토큰을 생성하여 응답한다.경로 접근 (인가) : JW