Java 21

Java 파일 업로드 구현하기 및 Progress Bar 설정

개요안녕하세요 빈코입니다. 오늘은 Java에서 파일 업로드하는 방법에 대해 알아보려고 합니다. UI에서 파일을 선택하고 업로드되는 과정을 보여주는 Progress bar를 표현하는 일련의 과정을 순서에 맞게 포스팅해 볼게요😄 UI 구성📒가장 먼저 구현해야 할 것은 당연 Front 단이겠죠? Front단 설정은 간단합니다. input 타입을 file로 설정하여 사용자가 파일을 선택할 수 있는 파일 선택 버튼을 생성합니다. 그리고 저는 data-show-preview="false"를 설정하여 파일 미리 보기를 보여주지 않도록 설정하였습니다. 하위 코드로 아래와 같이 UI단을 구성하면 UI단은 끝이 납니다😊 JS 단 구성📙$('#input_file').fileinput({ language: "ko..

TIL 2024.11.16

Java 회원가입 및 로그인 비밀번호 Hash 비교 방법

개요안녕하세요 빈코입니다. 오늘은 Java 프로젝트에서 회원가입 및 로그인 시 중요한 정보인 비밀번호를 해시화하는 방법에 대해 자세히 알아보려고 합니다. 만약 사용자가 회원가입 및 로그인 시 비밀번호를 입력했을 때, 사용자가 입력한 텍스트 그대로 서버로 통신하면 정보가 유출될 가능성이 높습니다. 그렇기 때문에, 해당 기능 작업 시에 중요한 정보들은 꼭 Hash 화해서 서버로 통신하는데 대표적인 방법으로 'SHA-256' 방법을 많이 사용하곤 합니다. 좀 더 자세한 내용은 하단에서 이어가 볼게요😁 회원가입 및 로그인📙로그인 시 비밀번호 검증을 위해 보통 사용자가 입력한 비밀번호를 해시를 떠서 사용하는 것이 일반적입니다. 보안상 암호화된 비밀번호를 데이터베이스에서 꺼내와 복호화하여 비교하는 대신, 입력한..

TIL 2024.11.12

Java IP 유효성 검사 및 여러 유용한 함수 모음

개요안녕하세요 빈코입니다! 오늘은 Java에서 IP 유효성 검사 및 다양한 Util 함수들에 대해서 포스팅하려 합니다. IP 유효성 검사는 웹 애플리케이션에서 사용자로부터 IP 주소를 입력받을 때나 외부 API에서 IP 주소를 사용할 때 등 생각보다 많은 곳에서 사용됩니다😁  유효성 검사 로직만 살펴보기에는 포스팅 내용이 짧을 것 같아서 제가 주로 사용해왔던 IP 관련 함수들도 소개하려고 합니다. 그럼 하단에서 조금 더 자세히 살펴볼까요? IPv4 VS IPv6📙첫 번째로 알아야 할 점은 IP는 IPv4와 IPv6로 나뉩니다. IPv4는 32비트 주소 체계를 사용하며, 4개의 옥텟(ex: 127.0.0.1)으로 표현되고, IPv6는 128비트 주소 체계를 사용하여 8개의 16진수 블록으로 표현됩니다(..

TIL 2024.09.24

Java Spring Scheduler 정의 및 사용법 예시

개요웹 사이트를 운영하다 보면 주기적으로 특정 작업을 해야 할 때가 있습니다. 예를 들어, 매월 마지막 날에 어떤 통계를 내야 한다던지, 매일 쌓이는 로그를 지정해 둔 사이즈에 도달했을 때 순차적으로 삭제하는 등의 작업들입니다. 개발자가 직접적으로 해당 시간마다 작업을 진행할 수 없기에 Java에서는 Scheduler라는 기능을 제공합니다. 아래에서 좀 더 자세히 살펴볼까요? Spring Scheduler 란?📙Java Spring Scheduler는 개요에서 설명한 바와 같이 스프링 프레임워크에서 제공하는 작업 스케줄링 기능입니다.  해당 기능을 통해 개발자는 지정된 시간 간격이나 특정 시점에 자동으로 실행되어야 하는 작업을 쉽게 구성할 수 있고, 스프링 스케줄러는 멀티스레딩과 비동기 실행을 지원하..

TIL 2024.09.13

Java HTTP Server 쉽게 이해하기 및 예제

개요현직에서 업무를 하다 보면 기업 간의 API 통신이 이루어질 때가 왕왕 있습니다. 예를 들어, 생체 인증을 해서 로그인을 한다던가 또는 메일 발송을 해당 기업의 API를 사용할 때입니다. 그럴 때마다 서로 API 문서를 주고받고 필요한 값들을 넘겨주게 됩니다.  예를 들어, 메일 발송이라 가정했을 때 발신자, 제목, 본문, 파일, 수신자 등 다양한 정보를 넘겨주게 됩니다. 하지만 외부 API를 직접 테스트 할 수는 없기에 내가 보내는 값만 정상적으로 보내는지 체크할 수 있을 뿐, 응답값이 제대로 나오는지 확인이 불가능합니다. 이럴 때 유용하게 사용하는 기능이 HTTP Server입니다. 하단에서 좀 더 자세히 살펴볼까요? HTTP Server란?📙HTTPServer는 Java에서 간단한 웹 서버를 ..

TIL 2024.09.09

SMTP 정의 및 Java에서 메일 발송 기능 활용해보기(간단 예시)

개요 안녕하세요 빈코입니다. 오늘은 메일 발송 기능인 SMTP에 대해 자세히 알아보려고 합니다. SMTP 프로토콜은 Simple Mail Transfer Protocol의 약자로 인터넷에서 이메일을 전송하는 통신 규약 중 하나를 일컫습니다. 그럼 하단에서 자세히 알아볼까요? SMTP📙SMTP는 개요에서 설명한 바와 같이 이메일을 전송하는 통신 규약입니다. 주로 이메일 클라이언트와 서버 간, 그리고 서버와 서버 간의 이메일 전송을 관리하는 역할을 합니다. SMTP의 주요 기능은 이메일 전송, 서버 간 이메일 릴레이, 포트와 연결 등이 있습니다. 여기서 서버 간 이메일 릴레이는 이메일이 발신자의 메일 서버에 도착하면, 이 서버는 수신자의 메일 서버로 이메일을 전송하게 되는데 해당 과정을 서버 간의 릴레이라..

TIL 2024.09.04

Java 날짜 함수 DateUtil 모음집

개요 안녕하세요 빈코입니다! 오늘은 Java 프로젝트를 진행하면서 제가 실무에서 자주 사용한 날짜 함수 몇 가지를 소개하려고 합니다. 실무에서는 대부분 자주 사용하는 함수들을 Util 클래스로 따로 만들어서 Controller나 Service단에서 호출하여 사용을 하는데, 특정 커스텀을 제외하고 대중적으로 사용되는 Data 관련 함수들을 살펴볼게요😊 DateUtil 생성📙 public class DateUtil { private Calendar c; private String dateSep = "-"; private String timeSep = ":"; private final String[] day = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; pub..

TIL 2024.03.27

Java 엑셀 만드는 방법 완벽정리(JS에서 Controller까지)

개요 안녕하세요. 빈코입니다! 오늘은 프로젝트에서 자주 사용하는 기능인 엑셀 출력 기능에 대해 알아보려고 합니다. 엑셀 라이브러리인 POI 적용부터 엑셀을 만드는 방법, 엑셀 내용을 커스텀하는 방법 등 다양하게 소개해드리고자 합니다. 이번 포스팅은 js에서 엑셀 만들기까지 간단한 예시와 함께 작성했습니다. 혹여 엑셀 관련 함수들만 보실 분들은 포스팅 맨 하단에 위치해 있습니다😊 엑셀 라이브러리 POI📙 POI 라이브러리를 사용하면 엑셀(.xls, .xlsx), 파워포인트(. ppt,. pptx), 워드(. doc,. docx) 등의 Microsoft Office 파일 형식을 다룰 수 있습니다. 프로젝트에 POI 라이브러리를 적용하는 방법은 apache 다운로드 홈페이지(https://poi.apache...

TIL 2024.01.15

[Java] csv 파일 프로그램 여러가지 Tip

오늘은 Java를 이용해서 CSV 파일을 만드는 프로그램을 구성할 때 필요한 여러 가지 tip들을 공유해보려 합니다😁 개요 csv 파일이 무엇인지 잘 아시나요? csv 파일이란 comma-separated variables의 약자로 몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일을 뜻합니다. 확장자는 .csv이며 MIME 형식은 text/csv입니다. 현업에서는 csv 파일을 많이 다루게 되는데요. 백업 파일을 준비하거나, 기업에서 요청하는 경우도 상당히 많습니다. csv 파일은 단순 텍스트 파일이기 때문에, 개발적인 측면에서 많은 공수가 들어가지 않는다는 장점이 있고, csv 파일을 엑셀로 열었을 때 쉼표(,) 기준으로 셀이 자동으로 나뉘는 편리함도 가지고 있기 때문입니다. 그럼 cs..

TIL 2023.09.14

Java String, StringBuilder, StringBuffer 차이와 장단점

개요 오늘은 Java에서 문자열을 다루는 String, StringBuilder, StringBuffer의 차이를 알아보려고 한다. 3가지 클래스는 각각 차이점이 있는 만큼 효율적으로 사용하는 방법 또한 다르게 작용이 된다. 어떠한 상황에서 어떤 문자열 클래스를 사용하는 것이 효율적인지는 각 클래스의 특징을 완전히 이해하고 사용해야 한다. 3가지 클래스는 어떤 부분에서 다를까? String📙 우리가 흔히 아는 Java의 문자열 클래스로 대표적인 클래스는 단연 String 일 것이다. String 변수에 값을 할당하는 방법은 2가지가 있는데, 리터럴 변수를 대입하는 방법과 new 연산자를 사용하는 방법이 있다. String str = "Binco"; // 리터럴 String str = new String(..

TIL 2023.08.21