no image
[Java] 단축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 알고리즘..
2025.01.20
no image
[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..
2024.10.04
no image
[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..
2024.10.03
no image
[Java] 지역 변수와 스코프(Scope)
기본적인 개념이지만 리마인드 느낌으로 정리해본다.자바에서 Scope(스코프)는 변수나 메소드, 클래스가 어디서부터 어디까지 접근 가능한지를 정의하는 범위를 의미한다.스코프는 코드의 가독성을 높이고, 변수의 중복 선언을 방지하며, 메모리 관리를 효율적으로 수행할 수 있게 해준다.자바에서는 크게 클래스 스코프, 메소드 스코프, 블록 스코프의 세 가지로 나눌 수 있다. 1. 클래스 스코프 (Class Scope)클래스 스코프는 클래스 전체에서 접근할 수 있는 변수나 메소드의 범위를 의미한다.클래스 변수(Static 변수)와 인스턴스 변수(Non-static 변수)가 클래스 스코프에 속한다.클래스 스코프에 속한 변수들은 클래스 내의 모든 메소드에서 접근할 수 있다.public class Car { // 클..
2024.08.14
no image
The type className is already defined 에러 해결 방법
사소하고 단순한 문제지만 협업하다 보면 발생할 수 있는 문제로서 작성한다.자바 개발을 하다 보면 "The type 클래스명 is already defined" 에러를 마주칠 때가 있다.이 에러는 동일한 이름의 클래스가 이미 정의되어 있을 때 발생한다. 1. 중복 클래스 이름 확인동일한 패키지 내에 동일한 이름의 클래스가 두 번 정의되어 있을 수 있다.이를 해결하기 위해서프로젝트 내 클래스명 검색: 프로젝트 전체에서 클래스명을 검색하여 동일한 이름의 클래스가 여러 곳에서 정의되어 있는지 확인중복 클래스명 변경: 중복된 클래스 중 하나의 이름을 변경하여 충돌 회피 2. 동일한 파일에서 중복 정의 확인같은 파일 내에 동일한 이름의 클래스를 두 번 정의한 경우이를 해결하기 위해서는파일 내용 확인: 클래스가 정의..
2024.06.25
no image
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 버전과 동일하게 맞춰주면 해결된다.
2024.04.09
no image
[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로 맞춰준 뒤..
2024.04.09
no image
[Java] HttpServletRequest 내장 함수
HttpServletRequest란?Java 웹 애플리케이션을 개발할 때, HTTP 요청을 처리해야 하는 경우가 많다.HttpServletRequest 인터페이스는 이러한 HTTP 요청을 처리하기 위한 핵심 클래스 중 하나다.사실 자주 사용하는 함수는 일부인 것 같고 나머지는 생소한 함수들도 있길래 정리한다.  request.getMethod()getMethod는 HTTP 요청 메소드를 반환한다. 주로 GET, POST, PUT, DELETE 등의 값 반환.HttpServletRequest request = ...; // HttpServletRequest 객체 생성String method = request.getMethod();System.out.println("HTTP 요청 메소드: " + method..
2024.03.21
no image
Java.lang.OutOfMemoryError: Java heap space
원인 파악2주 전까지 정상적으로 서비스 중이던 페이지가 갑자기 500 에러를 출력시켰다.분명 변경 사항도 없었고 데이터 조회하는 페이지라서 데이터를 많이 조회하나..? 싶어서데이터 건 수를 확인했더니 겨우 157건 데이터 조회하고 있었음.부랴부랴 운영서버 들어가서 로그를 확인하니 아래와 같았다.nov 15, 2023 1:40:24 pmorg.apache.catalina.core.standardwrappervalve invoke severe: servlet.service() for servlet [jsp] in context with path [] threw exception [javax.servlet.servletexception: java.lang.outofmemoryerror: java heap sp..
2023.11.16