Backend/JAVA 20

JAVA에서 html 다루기 (Jsoup)

JAVA에서 html을 String 데이터로 들고 있는데 특정 요소에 속성을 추가하는게 필요했습니다. 라이브러리 종류 3가지 방법(Jsoup, javax.swing.text.html3, HTML Template Engine)에 대해 알아보았는데 아래에 각 라이브러리의 사용 사례와 특징을 설명하겠습니다. 선택 시 프로젝트의 요구사항과 개발 환경을 고려하여 결정하시면 됩니다. 1. Jsoup: HTML을 파싱하고 조작하는 작업에 우수한 성능을 제공하는 라이브러리입니다. 주로 웹 스크래핑, HTML 파싱, 수정, 정보 추출 등에 사용됩니다. 특히 복잡한 HTML 문서를 다루는 데 편리하며, 간단한 DOM 조작과 선택이 필요한 경우에도 유용합니다. import org.jsoup.Jsoup; import org...

Backend/JAVA 2023.08.16

[JAVA] 패키지와 클래스 (같은 이름의 클래스 import)

패키지(package) 자바는 클래스의 구분을 위해 패키지를 사용합니다. 패키지는 클래스들을 논리적으로 그룹화하여 충돌을 방지하고, 클래스의 이름을 명확하게 지정하는 데 도움을 줍니다. FQCN (Fully Qualified Class Name) 클래스의 정규화된 이름은 패키지를 포함하여 클래스를 명시적으로 지정하는 방법입니다. 이를 사용하면 라이브러리명이 겹칠 때 충돌을 피하고 원하는 클래스를 명확히 지정할 수 있습니다. 만약 같은 이름의 클래스가 다른 패키지에 있을 때, import 문을 사용하여 해당 클래스를 구분하면 됩니다. 자바에서 import 문은 다음과 같이 사용됩니다: // 패키지가 com.example.package1인 MyClass 클래스를 import import com.example..

Backend/JAVA 2023.07.25

JAVA 문자열 비교 (== 연산자와 equals 메서드의 차이)

class Main { public static void main(String[] args) { String str1 = "Programming"; // true or false String str2 = "Programming"; String str3 = new String("Programming"); System.out.println(str1==str2); // true System.out.println(str1==str3); // false System.out.println(str1.equals(str3)); // true System.out.println(str2.equals(str3)); // true } } str1==str2: str1과 str2는 모두 문자열 리터럴인 "Programming"..

Backend/JAVA 2023.07.25

자바 메모리 구조(with Constant Pool)

자바의 메모리 구조는 다음과 같이 크게 세 가지 영역으로 나뉘어집니다. 자바 프로그램이 실행되면, JVM은 아래 세 영역을 생성하고 메모리를 관리합니다. 이렇게 분리된 메모리 구조는 자바의 안정성과 자동 메모리 관리를 가능하게 합니다. 1. 메소드 영역 (Method Area 또는 클래스 영역): 모든 스레드가 공유하는 영역으로, 클래스 정보와 클래스 변수(static 변수)가 저장됩니다. 클래스 정보는 클래스의 구조와 멤버 변수, 메서드 코드 등을 포함합니다. JVM이 실행될 때 클래스 로더에 의해 클래스 파일이 로드되고 파싱되어 메소드 영역에 저장됩니다. 상수 풀(Constant Pool): 상수 풀은 클래스 파일 내부에 위치한 특별한 메모리 영역입니다. 클래스 파일에는 리터럴 값(문자열, 정수, 부..

Backend/JAVA 2023.07.25

Java 객체 형변환 (mapper.convertValue)

자바에서 직접 형변환을 할 수 없는 경우가 있습니다. 아래는 예제입니다. @RequestMapping(value = "/convertValueTest", method = RequestMethod.POST) @ResponseBody public HashMap convertValueTest(@RequestBody Map param, HttpServletRequest request) { HashMap result = new HashMap(); try { ObjectMapper mapper = new ObjectMapper(); TestModel testModel = mapper.convertValue(param.get("testModel"), new TypeReference() {}); service.conv..

Backend/JAVA 2023.06.14

[JAVA] 자바 외부 파일/ 외부 프로그램/ 명령어 실행 (exec)

exec() exec() 메소드는 Runtime 클래스의 getRuntime() 메소드를 사용하여 Runtime 객체를 생성한 다음, Runtime 객체의 exec() 메소드를 호출하여 외부 프로그램을 실행합니다. exec() 메소드는 실행할 외부 프로그램의 이름, 매개변수, 작업 디렉토리 등을 인자로 전달할 수 있습니다. public Process exec(String command, String[] envp, File dir) 매개변수 command: 지정된 시스템 명령. envp: 문자열 배열, 각 요소에 name=value 형식의 환경 변수 설정이 있거나 하위 프로세스가 현재 프로세스의 환경을 상속해야 하는 경우 null입니다. dir: 하위 프로세스의 작업 디렉토리, 하위 프로세스가 현재 프로세..

Backend/JAVA 2023.04.26

JAVA 엑셀 생성

JXLS와 POI는 모두 Java 기반의 엑셀 처리 라이브러리입니다. JXLS 템플릿 기반의 엑셀 생성을 지원하며, 간단하고 직관적인 문법을 제공합니다. 템플릿을 작성하고 데이터를 채워 엑셀 파일을 생성하기 쉽습니다. 다양한 데이터 소스와의 통합이 가능하며, 데이터를 엑셀 파일에 쉽게 매핑할 수 있습니다. 엑셀 파일의 서식과 스타일을 자유롭게 제어할 수 있습니다. POI 엑셀 파일을 생성, 편집, 읽기, 쓰기, 서식 및 스타일 설정, 수식 처리, 그래프 생성 등 다양한 기능을 제공합니다. 다양한 엑셀 파일 버전을 지원하며, Excel 97부터 최신 버전까지의 파일을 처리할 수 있습니다. Apache Software Foundation에서 개발된 오픈 소스로 활발한 커뮤니티와 지속적인 업데이트 및 개선이 ..

Backend/JAVA 2023.04.12

XMLSlideShow 자바로 PPT파일 수정하기

아래 그림같은 형태의 피피티 화면에서 작성일자를 오늘 날짜로 수정하려고 합니다. 이 글에서는 위치를 이용하여 수정할 거라서 아래 그림처럼 수정하고자 하는 요소의 위치를 알아야합니다. 선택되지 않은 부분에서 표로 보이는 것은 바탕이미지라고 생각해주시고 번호는 설명을위해 붙인걸로 봐주세요!! 이런 형태가 여러개의 슬라이드에 반복적으로 있고 그 중 0부터 카운트해서 3번째위치에 있는 텍스트 박스를 전 슬라이드 일괄 수정합니다. XMLSlideShow XMLSlideShow는 Apache POI 라이브러리를 사용하여 생성된 PowerPoint 프레젠테이션의 내용을 나타내는 Java 객체입니다. getShapes() 이용 getShapes() 메서드는 슬라이드의 모든 객체(shape) 목록을 반환합니다. 객체는 ..

Backend/JAVA 2023.03.05

ObjectMapper / JSON 파싱

Object Mapper 1. 직렬화와 역직렬화 직렬화(Serialization) Object -> String 자바 객체를 JSON 형식의 문자열로 변환하는 과정을 의미합니다. 이를 통해 객체의 데이터를 파일이나 네트워크를 통해 전송 가능한 문자열 형태로 변환합니다. 역직렬화(Deserialization) String -> Object JSON 형식의 문자열을 자바 객체로 변환하는 과정을 의미합니다. 이를 통해 JSON 형식으로 전달받은 데이터를 자바 객체로 활용할 수 있습니다. 2. Jackson 라이브러리 Jackson은 JSON 데이터와 자바 객체 간의 변환을 쉽게 처리할 수 있도록 도와주는 강력하고 인기 있는 라이브러리입니다. 자바 개체의 직렬화 및 역직렬화를 처리하는 데 특화되어 있으며, 매우..

Backend/JAVA 2022.06.06