Develop/JAVA 24

[Java] Spring Security 에서 SameSite 설정방법 (PG사 결제 시 리턴 후 세션 끊김현상 해결)

1. Spring Security를 사용하는 방법Spring Security를 사용하는 경우 HttpSession의 쿠키 속성에 SameSite 옵션을 추가할 수 있습니다. SameSite 속성은 기본적으로 Strict, Lax, 또는 None으로 설정할 수 있습니다.Spring Security에서 SameSite 설정하기Spring Security의 CookieSerializer를 설정하여 SameSite 속성을 지정할 수 있습니다.import org.springframework.context.annotation.Bean;import org.springframework.security.config.annotation.web.builders.HttpSecurity;import org.springframe..

Develop/JAVA 2024.10.24

[Java] BigDecimal 나누기 소수점 올림, 버림, 반올림 사용방법

BigDecimal의 필요성float 또는 double 타입은 부동소수점 방식을 사용하기 때문에, 소수점 연산 시 오차가 발생할 수 있습니다. 이를 해결하기 위해 BigDecimal은 고정 소수점 연산을 제공하며, 소수점 이하 자릿수의 처리를 정확하게 제어할 수 있는 기능을 제공합니다.특히 BigDecimal로 나눗셈을 할 때, 소수점 처리를 어떻게 할 것인지에 대한 설정을 해야 합니다. 이때 사용할 수 있는 방식은 올림, 버림, 반올림입니다.1. 기본적인 BigDecimal 나눗셈BigDecimal의 divide() 메소드는 두 숫자를 나눌 때 소수점 처리 방식을 선택할 수 있습니다. RoundingMode를 이용하여 나눗셈 결과의 소수점 처리를 정의할 수 있습니다.import java.math.Big..

Develop/JAVA 2024.10.21

[Spring Boot] application.yml 변수 Java Static 변수에서 사용하는 방법

Spring Boot 애플리케이션에서 application.yml에 정의된 설정 값을 Java의 static 변수에서 사용하는 방법은 일반적으로 직접적인 주입이 불가능합니다. Spring의 의존성 주입은 인스턴스 수준에서 이루어지기 때문에, static 변수에는 값을 할당하는 방법을 조금 더 고려해야 합니다.  1. application.yml 파일에 변수 정의하기먼저, Spring Boot 애플리케이션의 application.yml 파일에 값을 정의해 보겠습니다.# application.ymlapp: config: name: MySpringApp version: 1.0 위에서 app.config.name과 app.config.version 두 개의 설정 값을 정의하였습니다. 2. 설정 값을..

Develop/JAVA 2024.10.15

[Java] 현재 서버 도메인 정보 갖고오기

예제 코드: 현재 도메인 정보를 가져와서 문장을 생성하는 코드import java.net.InetAddress;import java.net.UnknownHostException;public class DomainInfoGenerator { public static void main(String[] args) { try { // 1. 현재 시스템의 도메인 정보를 가져옴 String domainName = getDomainName(); // 2. 도메인 정보를 이용해 문장 생성 String domainMessage = createDomainMessage(domainName); ..

Develop/JAVA 2024.09.26

[Java] spring security 설정 csrf 특정 url 예외 처리

spring security 의 csrf 설정 시 csrf 값이 없으면 페이지가 정상적으로 로드되지 않고 403 forbidden 권한없음 에러가 발생 됩니다.  1. CSRF란?CSRF(Cross-Site Request Forgery)는 악의적인 사이트에서 사용자의 인증된 세션을 도용해, 사용자가 의도하지 않은 요청을 실행하도록 만드는 공격입니다. 이를 통해 공격자는 사용자 대신 원하지 않는 행동을 수행할 수 있으며, 예를 들어 게시글 삭제, 계정 변경, 금전 송금 등과 같은 중요한 작업이 이루어질 수 있습니다.2. CSRF 보호의 필요성CSRF 공격은 사용자의 권한을 이용하여 악의적인 요청을 보내는 방식이기 때문에, 이를 방지하지 않으면 중요한 정보를 탈취하거나 악성 행위를 수행할 수 있습니다. Sp..

Develop/JAVA 2024.09.26

[Java] GET POST 메서드 REST API 호출 서비스 만들기

Java에서 REST API 호출을 위한 GET 및 POST 방식을 지원하고, 파라미터를 JSON 형태로 넘길 수 있는 함수 import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.net.http.HttpHeaders;import java.net.http.HttpRequest.BodyPublishers;import java.net.http.HttpResponse.BodyHandlers;import java.time.Duration;import java.util.Map;import com.fasterxml.jackson.datab..

Develop/JAVA 2024.09.25

[Java] forEach 와 Stream API를 사용한 배열 처리

Java에서는 배열이나 리스트와 같은 컬렉션 데이터를 처리할 때 반복문을 사용하는 것이 일반적입니다.특히 Java 8 이후로는 forEach() 메서드와 Stream API를 통해 간결하고 함수형 스타일로 컬렉션을 처리할 수 있게 되었습니다.1. forEach() 메서드forEach() 메서드는 리스트의 모든 요소에 대해 특정 작업을 수행할 때 사용됩니다. 이를 통해 반복 작업을 간결하게 표현할 수 있습니다.문법list.forEach(element -> { // 각 요소에 대해 수행할 작업}); element: 리스트의 각 요소를 나타냅니다.->: 람다 표현식으로 요소에 대해 수행할 작업을 정의합니다.예시1. 리스트의 모든 숫자에 2를 곱하기import java.util.Arrays;import jav..

Develop/JAVA 2024.09.24

[Spring Framework] Spring boot 2개 실행했을 때 로그인 세션 끊기는 현상 해결하기

보통 로컬에서 개발할때 관리자, 사용자 2개 사이트를 동시에 실행하는 경우가 많습니다서버를 두개 실행할 경우 만약 사용자에서 로그인하면 관리자에서 로그인한 세션이 끊기는 현상이 발생합니다.이럴 session cookie name 을 다르게 지정해 주시면 됩니다. ▶ application.yml 파일 수정 시 server: servlet: session: cookie: name : ANPBOSESSIONID ▶ application.properties 파일 수정 시server.servlet.session.cookie.name = ANPBOSESSIONID

Develop/JAVA 2024.09.14

[JAVA] dto model 특정값 중복 제거 합치기 stream filter distinct sort

JAVA List model 데이터에서 특정 컬럼을 기준으로 중복되는 데이터를 합치고 싶을 때 사용// 장바구니 상품 목록 조회 ScrtPrdInfrDto scrtPrdInVo = new ScrtPrdInfrDto();scrtPrdInVo.setAnpMbrNo(mbrDto.getAnpMbrNo());scrtPrdInVo.setAnpPrslTpCd("01");List scrtPrdList = scrtService.getScrtPrdInfrList(scrtPrdInVo); List scrtPrdList 값에서 getAnpDispMdclCd, getAnpDispMdclCdNm 두 개 컬럼을 기준으로 중복데이터를 합칩니다. import java.util.ArrayList;import java.util.List;..

Develop/JAVA 2024.09.10

[JAVA] QR코드 생성 후 서버에 이미지로 저장

QR코드를 바이트형태로 바로 보여줄 수도 있지만 이미지 형태로 저장해야 하는 경우도 있다. ▶ Gradle 라이브러리 추가// QR Code - zxingimplementation group: 'com.google.zxing', name: 'javase', version: '3.5.0'implementation group: 'com.google.zxing', name: 'core', version: '3.5.0' ▶ 경로와 파일명은 상황에 맞춰 조정하시면 됩니다. 이미 파일이 존재하는지 체크해서 파일이 있으면 생성하지 않고 파일이 없으면 QR코드 이미지를 생성 합니다.@PostMapping("/edu200/edu200110/clcrQrMake")public ModelAndView getCrClQrCode..

Develop/JAVA 2024.08.30