Dev/Spring&Java 17

[SpringBoot] Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

제목과 같이 오류가 발생한 사유는 Database에 연결할 때 필요한 정보가 없기 때문이다.초기 세팅 후 DB 설정하기 전까지는 아래 예시 코드와 같이 설정하고, DB 설정 후 원복해주자.// 수정 후package com.text.notify;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; // 추가@SpringBootApplication(exclude={DataSourceAutoConfiguration..

Dev/Spring&Java 2026.01.12

[Java] SQL Injection 및 XSS 방지를 위한 SecurityUtil 클래스

작년쯤 처음이자 마지막으로 SQL Injection 공격을 받은 후에 보안에 대한 중요성을 다시한번 느끼게 되었다.웹 애플리케이션을 개발할 때 SQL Injection과 XSS(크로스 사이트 스크립팅) 공격을 방지하는 것은 필수적인 보안 조치다.이번 글에서는 Java에서 이러한 보안 취약점을 방지하기 위한 SecurityUtil 클래스를 구현하고, 직접 JAR 파일을 라이브러리로 추가하는 방식까지 확인해보자.1. SecurityUtil 클래스아래 코드는 SQL Injection과 XSS 공격을 방지하기 위한 유틸리티 클래스다.import org.owasp.encoder.Encode;import java.util.regex.Pattern;public class SecurityUtil { // SQL ..

Dev/Spring&Java 2025.03.19

[Java] Base64 인코딩/디코딩: JDK 1.7과 JDK 1.8에서의 차이점

Java에서 Base64 인코딩과 디코딩은 데이터 전송 및 저장 시 많이 사용하는 중요한 기능이다.그런데 JDK 버전에 따라서 사용하는 방식이 다르다고 한다.특히 JDK 1.8에서는 Base64 클래스가 도입된 반면, 1.7에서는 이를 기본적으로 지원하지 않는다.1.7과 1.8에서 Base64 인코딩과 디코딩을 처리하는 방법에 대해서 작성해 본다.JDK 1.8에서의 Base64 사용Java 8부터는 java.util.Base64 클래스가 기본으로 제공됨으로, 이를 사용해 간단하게 인/디코딩이 가능하다.import java.net.URLDecoder;import java.util.Base64;String parameter = "someBase64EncodedString";String test = URLDe..

Dev/Spring&Java 2024.10.04

[Java] JSON 데이터 전송 및 응답 처리

주요 흐름1. 사용자가 로그인한 경우, 세션에서 사용자 정보를 가져옴.2. API 호출을 위한 JSON 데이터 구성하여 connect 함수를 통해 서버에 전송.3. 응답 데이터를 JSON으로 파싱하여 처리.4. 성공적인 경우, 인증키를 받아서 자동으로 로그인을 처리하는 페이지를 생성.5. 잘못된 사용자나 오류가 발생한 경우 리다이렉트 처리.코드 propertyMap, String readTime) throws Exception { PrintWriter postReq = null; BufferedReader postRes = null; String resultJson = null; StringBuilder resultBuffer = new StringBui..

Dev/Spring&Java 2024.10.03

[Java] 지역 변수와 스코프(Scope)

기본적인 개념이지만 리마인드 느낌으로 정리해본다.자바에서 Scope(스코프)는 변수나 메소드, 클래스가 어디서부터 어디까지 접근 가능한지를 정의하는 범위를 의미한다.스코프는 코드의 가독성을 높이고, 변수의 중복 선언을 방지하며, 메모리 관리를 효율적으로 수행할 수 있게 해준다.자바에서는 크게 클래스 스코프, 메소드 스코프, 블록 스코프의 세 가지로 나눌 수 있다. 1. 클래스 스코프 (Class Scope)클래스 스코프는 클래스 전체에서 접근할 수 있는 변수나 메소드의 범위를 의미한다.클래스 변수(Static 변수)와 인스턴스 변수(Non-static 변수)가 클래스 스코프에 속한다.클래스 스코프에 속한 변수들은 클래스 내의 모든 메소드에서 접근할 수 있다.public class Car { // 클..

Dev/Spring&Java 2024.08.14

The type className is already defined 에러 해결 방법

사소하고 단순한 문제지만 협업하다 보면 발생할 수 있는 문제로서 작성한다.자바 개발을 하다 보면 "The type 클래스명 is already defined" 에러를 마주칠 때가 있다.이 에러는 동일한 이름의 클래스가 이미 정의되어 있을 때 발생한다. 1. 중복 클래스 이름 확인동일한 패키지 내에 동일한 이름의 클래스가 두 번 정의되어 있을 수 있다.이를 해결하기 위해서프로젝트 내 클래스명 검색: 프로젝트 전체에서 클래스명을 검색하여 동일한 이름의 클래스가 여러 곳에서 정의되어 있는지 확인중복 클래스명 변경: 중복된 클래스 중 하나의 이름을 변경하여 충돌 회피 2. 동일한 파일에서 중복 정의 확인같은 파일 내에 동일한 이름의 클래스를 두 번 정의한 경우이를 해결하기 위해서는파일 내용 확인: 클래스가 정의..

Dev/Spring&Java 2024.06.25

The selected JRE does not support the current compiler compliance level of 1.8

원인기존에 JDK 1.8 버전을 사용하다가 1.7로 변경하니 위와 같은 오류가 발생하였다.정확한 오류 코드는 아래와 같다.The selected JRE does not support the current compiler compliance level of 1.8 검색해 보니 컴파일러 버전과 JDK 버전을 일치시켜줘야 한다고 되어 있다. 해결방안[Window] → [Preferences] → [Java] → [Compiler]에서 Compiler compliance level을 JDK 버전과 동일하게 맞춰주면 해결된다.

Dev/Spring&Java 2024.04.09

[Java] 이클립스 JDK 버전 설정/변경하기

이클립스 버전eclipse-jee-2022-03-R기존 JDK 버전jdk1.8.0변경 JDK 버전jdk1.7.0 1. 상단 [Window] → Preferences 2. [Java] → [Installed JREs] → [Add...] 3. JRE Type은 Standard VM을 선택해 준 뒤에 [Next] 4. JDK가 설치되어 있는 경로를 선택 (보통 아래와 같은 경로에 설치함) 후 [Finish] 5. 추가한 jdk1.7 버전을 체크한 뒤에 [Apply] 6. 위 순서까지만 진행하면 설정된 컴파일러 버전과 JDK 버전이 달라서 그렇기 때문에 Compiler 버전도 맞춰야 한다. [Java] → [Compiler] 7. 버전을 맞추면 오류가 사라지는 것을 확인할 수 있다. 버전을 1.7로 맞춰준 뒤..

Dev/Spring&Java 2024.04.09