Java 13

[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

단축URL 구현하기 (네이버 me2.do 서비스 종료)

서론기존 홈페이지에서 무료로 사용하던 네이버 단축URL API가 피싱 사례의 급증, 도메인 시행사의 엄격한 피싱 대응 가이드로 인해, 2024년 12월 02일부로 me2.do 단축URL서비스를 종료했다.(공지 내용은 아래 링크 참조)https://developers.naver.com/notice/article/17062기존 생성된 단축URL의 연결은 2026년 2월 말까지 유지될 예정으로 자체적인 단축URL 서비스 개발이 필요했다. 본론1. 주요 기능1-1. 긴 URL을 단축된 형태로 변환1-2. 단축 URL이 원래 URL로 리다이렉트1-3. 단축 URL 저장 및 조회 (DB연동) 2. 구체적인 설계2-1. URL 단축 로직 - 서칭해보니 단축 URL은 보통 Base62 인코딩이나 Hashing 알고리즘..

SideProject 2025.01.20

[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

Call by Value와 Call by Reference

CS 면접에서 자주 나오는 개념이다.위 두 가지는 함수 호출 방식의 차이점을 이해하는데 핵심적인 역할을 한다.**본문에서는 가독성을 위해 Call by Value = CbV, Call by Reference = CbR 이라고 지칭하겠습니다. Call by Value와 Call by Reference란?프로그램에서 함수를 호출할 때, 인자를 전달하는 방식에는 'Call by Value(값에 의한 호출)'와 'Call by Reference(참조에 의한 호출)' 두 가지가 있다. 이 두 방식은 함수가 인자를 처리하는 방법에 있어서 근본적인 차이가 있다. Call by Value (값에 의한 호출)Call by Value는 함수가 호출될 때 실제 인자의 값이 복사되어 함수의 매개변수로 전달되는 방식이다.이는 ..

Dev/CS 2024.07.29

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

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

Dev/Spring&Java 2024.06.25