Java/Spring
-
Spring Security 5 버전에서 6 버전으로 바뀌면서 변경된 내용중 SecurityContextHolder 에 관한 내용이 있어 공부하게 되었다. SecurityContext 사용자 인증 정보를 저장하고 있는 Authentication 객체를 저장하는 보관소이다. SecurityContextHolder 전략(Strategy)에 따라 SecurityContext 에 저장하는 방식이 다르며 일반적으로 ThreadLocal 에 저장한다. Authentication 인증 객체를 한 쓰레드에서 공유하므로 언제든지 불러와 사용할 수 있다. SecurityContextHolder SecurityContext 를 관리하고 저장하는 객체이다. SecurityContext 저장을 위해 ThreadLocal 를 가..
SecurityContext, SecurityContextHolderSpring Security 5 버전에서 6 버전으로 바뀌면서 변경된 내용중 SecurityContextHolder 에 관한 내용이 있어 공부하게 되었다. SecurityContext 사용자 인증 정보를 저장하고 있는 Authentication 객체를 저장하는 보관소이다. SecurityContextHolder 전략(Strategy)에 따라 SecurityContext 에 저장하는 방식이 다르며 일반적으로 ThreadLocal 에 저장한다. Authentication 인증 객체를 한 쓰레드에서 공유하므로 언제든지 불러와 사용할 수 있다. SecurityContextHolder SecurityContext 를 관리하고 저장하는 객체이다. SecurityContext 저장을 위해 ThreadLocal 를 가..
2024.02.23 -
Spring Security 5 버전에서 6버전으로 올라가면서 Success Handler 까지 정상적으로 인증이 성공했지만 로그인이 안되어 찾아보다가 공식 문서 및 구글링을 통해 찾았다. 위 내용을 요약하면 아래와 같다. Spring Security 5 에서는 SecurityContextPersistenceFilter 를 사용하여 Security Context 가 SecurityContextRepository 에 자동으로 저장된다고 한다. 정상적인 요청과 응답이 수행되기 전에 세션을 생성한다는 문제점과 이러한 세션을 추적하기가 어렵다는 문제가 있었다. Spring Security 6 에서는 SecurityContextPersistenceFilter 가 Defrecated 되고 SecurityContex..
Spring Security 5 버전에서 Spring Security 6 버전으로 올라가면서 변경된 SecurityContext 에 인증 객체 설정Spring Security 5 버전에서 6버전으로 올라가면서 Success Handler 까지 정상적으로 인증이 성공했지만 로그인이 안되어 찾아보다가 공식 문서 및 구글링을 통해 찾았다. 위 내용을 요약하면 아래와 같다. Spring Security 5 에서는 SecurityContextPersistenceFilter 를 사용하여 Security Context 가 SecurityContextRepository 에 자동으로 저장된다고 한다. 정상적인 요청과 응답이 수행되기 전에 세션을 생성한다는 문제점과 이러한 세션을 추적하기가 어렵다는 문제가 있었다. Spring Security 6 에서는 SecurityContextPersistenceFilter 가 Defrecated 되고 SecurityContex..
2024.02.22 -
HttpServletResponse 의 sendRedirect 메서드 Java Servlet 에서 페이지 이동을 위해 redirect 하는 메서드이다. Http 프로토콜을 사용하여 정해진 규칙으로 서버가 클라이언트에게 특정 URL 로 이동하라고 요청을 보낸다. sendRedirect 메서드를 사용하게 되면 서버에서는 클라이언트에게 응답 상태값을 302 와 함께 이동할 URL 정보를 Location 헤더값에 담아 전송한다. 클라이언트 브라우저는 서버로부터 받은 상태값이 302 일 경우 Location 헤더 값으로 재요청을 보내어 Redirect 하게 된다. 예시) 개발환경 : Spring Boot, JSP 위처럼 jsp 페이지가 2개가 존재한다. test.jsp asdfsadfasdfasd response..
HttpServletResponse 의 sendRedirect() 와 RequestDispatcher 의 forward() 메서드 차이HttpServletResponse 의 sendRedirect 메서드 Java Servlet 에서 페이지 이동을 위해 redirect 하는 메서드이다. Http 프로토콜을 사용하여 정해진 규칙으로 서버가 클라이언트에게 특정 URL 로 이동하라고 요청을 보낸다. sendRedirect 메서드를 사용하게 되면 서버에서는 클라이언트에게 응답 상태값을 302 와 함께 이동할 URL 정보를 Location 헤더값에 담아 전송한다. 클라이언트 브라우저는 서버로부터 받은 상태값이 302 일 경우 Location 헤더 값으로 재요청을 보내어 Redirect 하게 된다. 예시) 개발환경 : Spring Boot, JSP 위처럼 jsp 페이지가 2개가 존재한다. test.jsp asdfsadfasdfasd response..
2024.02.13 -
개발환경 : Spring 4.4 버전, JDK 1.8 문제 좀 오래된 버전의 프로젝트를 실행 했을때 나오는 에러였다. STS 버전은 현재날짜 최신버전인 sts-4.18.1.RELEASE 였다. 에러 내용은 아래와 같다. 이 문제는 STS ini 파일을 보면 vmargs 에 들어갈 내용에 --add-opens 가 포함되어 있다. STS 버전은 높지만 Java 8 버전에서 사용할 수 없는 옵션이 있었다. Java 8 에서는 --add-opens 옵션을 지원하지 않는다고 한다. 해결방법 프로젝트의 vm args 값을 수정 해줘야한다. 프로젝트 마우스 오른쪽 버튼 > Run As > Run Configurations... > 톰캣 또는 Spring Boot App 에서 프로젝트 선택 > Arguments > V..
Java 1.8 버전 에러 - Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED개발환경 : Spring 4.4 버전, JDK 1.8 문제 좀 오래된 버전의 프로젝트를 실행 했을때 나오는 에러였다. STS 버전은 현재날짜 최신버전인 sts-4.18.1.RELEASE 였다. 에러 내용은 아래와 같다. 이 문제는 STS ini 파일을 보면 vmargs 에 들어갈 내용에 --add-opens 가 포함되어 있다. STS 버전은 높지만 Java 8 버전에서 사용할 수 없는 옵션이 있었다. Java 8 에서는 --add-opens 옵션을 지원하지 않는다고 한다. 해결방법 프로젝트의 vm args 값을 수정 해줘야한다. 프로젝트 마우스 오른쪽 버튼 > Run As > Run Configurations... > 톰캣 또는 Spring Boot App 에서 프로젝트 선택 > Arguments > V..
2024.01.31 -
@ControllerAdvice Spring 에서 공통 및 전역적으로 예외처리, ModelAttribute 등 핸들링 하기 위해 @ControllerAdvice 어노테이션을 사용할 수 있다. 본인은 공통적으로 사용하는 변수값을 체크하여 특정 View 에 공통적으로 데이터를 넘겨야 할 상황이 있었다. 그래서 @ControllerAdvice 를 사용했다. @ControllerAdvice 와 @ModelAttribute 어노테이션을 사용하여 요청 별로 각 Pakcage 경로마다 공통 속성을 추가해야 할 상황에 적절하다. 아래와 같이 CommonControllerAdvice 라는 클래스를 생성한다. package com.youth.market.system.handler; import javax.servlet.h..
@ControllerAdvice@ControllerAdvice Spring 에서 공통 및 전역적으로 예외처리, ModelAttribute 등 핸들링 하기 위해 @ControllerAdvice 어노테이션을 사용할 수 있다. 본인은 공통적으로 사용하는 변수값을 체크하여 특정 View 에 공통적으로 데이터를 넘겨야 할 상황이 있었다. 그래서 @ControllerAdvice 를 사용했다. @ControllerAdvice 와 @ModelAttribute 어노테이션을 사용하여 요청 별로 각 Pakcage 경로마다 공통 속성을 추가해야 할 상황에 적절하다. 아래와 같이 CommonControllerAdvice 라는 클래스를 생성한다. package com.youth.market.system.handler; import javax.servlet.h..
2023.08.28 -
RestTemplate 란? Spring 에서 간편하게 Rest 방식 API 를 호출할 수 있는 내장 클래스이다. Spring 3.0 부터 지원되며 응답은 Json, xml 모두 받을 수 있다. Rest API 요청 시 응답 받을 수 있도록 설계되어 있으며, HTTP 메소드(GET, POST, PUT, DELETE)들에 적합한 여러 메소드들을 제공한다. RestTemplate 특징 Rest API 를 간편하게 호출 후 응답 받을 수 있는 Spring 내장 클래스 Spring 3.0 부터 지원하는 HTTP 통신 템플릿 HTTP 요청 후 Json, XML, String 등 여러 형태로 응답 받을 수 있는 템플릿 HTTP HEADER, Content-Type 등을 설정하여 외부 API 호출 Server to ..
Spring RestTemplate 사용하기RestTemplate 란? Spring 에서 간편하게 Rest 방식 API 를 호출할 수 있는 내장 클래스이다. Spring 3.0 부터 지원되며 응답은 Json, xml 모두 받을 수 있다. Rest API 요청 시 응답 받을 수 있도록 설계되어 있으며, HTTP 메소드(GET, POST, PUT, DELETE)들에 적합한 여러 메소드들을 제공한다. RestTemplate 특징 Rest API 를 간편하게 호출 후 응답 받을 수 있는 Spring 내장 클래스 Spring 3.0 부터 지원하는 HTTP 통신 템플릿 HTTP 요청 후 Json, XML, String 등 여러 형태로 응답 받을 수 있는 템플릿 HTTP HEADER, Content-Type 등을 설정하여 외부 API 호출 Server to ..
2023.08.10