반응형 전체 글346 Log4j 보안 취약점 사태 Log4j란? · 아파치 소프트웨어 재단의 자바 기반 로깅 프레임워크다. · Logback과 더불어 자바의 대표적인 로깅 프레임워크다. 발견된 취약점 이 취약점은 Log4j의 JNDI, LDAP를 이용한다. JNDI(Java Naming and Directory Interface)은 자바 프로그램이 디렉토리를 통해 데이터(Java 객체 형태)를 찾을 수 있도록 하는 디렉토리 서비스다. LDAP(Lightweight Derectory Access Protocol)은 TCP/IP 위에서 디렉터리 서비스를 조회하고 수정하는 응용 프로토콜이다. Log4j에서는 편리하게 ${prefix:name} 형식으로 Java 객체를 볼 수 있게 하는 문법이 존재한다. 예를 들어 ${java:version} 명령어는 현재 실.. 2021. 12. 15. [Java] 자바에서 XML을 파싱하는 방법 - DOM, SAX XML은 w3c에서 개발된 마크업 언어로, 여러 종류의 데이터를 기술하는 데 사용할 수 있다. 예시 - 주식 정보를 나타내는 XML Citibank 100 1000 Axis bank 90 2000 이러한 XML 문서를 파싱하는 방법에는 대표적으로 DOM과 SAX가 존재한다. 이 글에서는 두 방식의 차이와 각 방식의 자바 코드 예시를 제공한다. DOM · XML을 트리 형태의 데이터로 만든 후, 해당 데이터를 가공하는 방식으로 파싱을 진행한다. · XML 문서를 메모리에 모두 로드한 후 파싱한다. - 단점: 메모리를 많이 사용한다. - 장점: 구현과 구조변경이 쉽다. 코드 예시 파싱할 xml 파일은 위의 stock 정보를 갖는 xml로 한다. import java.io.File; import java.ni.. 2021. 12. 14. [Servlet] 서블릿(Servlet) 생명주기 (Servlet Life Cycle) 서블릿 생명주기는 서블릿이 로딩 후 시작되는 것에서 부터 소멸될 때까지 수명 동안에 진행디는 일련의 단계로 설명할 수 있다. 1) 서블릿 로딩 2) 서블릿 인스턴스 생성 3) init() 메서드 한 번 호출 4) 각 클라이언트 요청에 대하여 반복적으로 service() 메서드 호출 5) destroy() 메서드 호출 1. 서블릿 로드 클래스로더가 서블릿 클래스를 로드한다. 서블릿 클래스는 웹 컨테이너가 서블릿에 대한 첫 번째 요청을 수신할 때 로드된다. 2. 서블릿 인스턴스 생성 모든 서블릿 클래스가 로드되면, 서블릿 컨테이너는 각 서블릿 클래스의 인스턴스를 생성한다. 서블릿 인스턴스는 서블릿 라이프 사이클에서 한 번만 생성된다. 서블릿에 대한 모든 요청은 동일한 서블릿 인스턴스에서 실행된다. 3. in.. 2021. 12. 14. [JAVA] 자바에서 파일, 디렉터리 변경 사항을 감지하는 방법 - WatchService WatchService란? · Java7의 NIO2 파일 시스템 API에 추가된 인터페이스다. · 특정 파일과 디렉터리의 변경 사항에 대해 폴링(다른 장치의 상태를 주기적으로 검사)하는 코드를 작성하도록 돕는다. 예시 코드 import static java.io.File.*; import java.io.IOException; import java.nio.file.FileSystems; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardWatchEventKinds; import java.nio.file.WatchEvent; import java.nio.file.WatchKey; import java.nio... 2021. 12. 13. [Java] 자바8의 새로운 날짜 관련 클래스들 - java.time 패키지 (LocalDate, LocalTime, LocalDateTime, ZonedDateTime) 자바 java.time 패키지 사용하기 학습 목표 · 날짜와 시간 객체 · 날짜와 시간에 대한 정보 얻기 · 날짜와 시간 조작하기 - 날짜와 시간 빼기와 더하기 - 날짜와 시간 변경하기 - 날짜와 시간 비교하기 -날짜 포맷 정하기 · 자바 7 이전까지는 Date, Calendar, SimpleDateFormatter 클래스를 이용해서 날짜와 시간 정보를 처리했지만, 여러 단점이 존재했다. TODO: 단점 정리 하지만 Date 클래스는 단순히 특정 시점의 날짜 정보를 저장하는 역할만을 하며, 대부분의 메소드가 Deprecated되었다. 또한 Calendar도 날짜 와 시간 정보를 얻는 것 외에 날짜와 시간은 조작하거나 비교하는 기능이 부족했다. 이러한 기존 버전의 문제점을 해결하기 위해서 자바 8부터 날짜.. 2021. 12. 13. [Java] 런타임에 자바 코드를 조작하는 방법: 리플렉션(Reflection) · 리플렉션은 런타임에 메서드, 클래스, 인터페이스의 동작을 검사하거나 수정하는데 사용되는 API다. · 리플렉션에 필요한 클래스는 java.lang.reflect 패키지에서 제공된다. · 리플렉션을 사용하면 특정 객체가 속한 클래스에 대한 정보, 객체를 사용하여 실행할 수 있는 해당 클래스의 메서드에 대한 정보를 얻을 수 있다. · 리플렉션을 사용하면 접근 제어자(private, public 등)와 상관없이 런타임에 메서드를 호출할 수 있다. · 사용 예시: - JSON 파일의 속성을 Jackson, GSON, BOON 등과 같은 자바 객체의 getter/setter 메서드에 매핑할 수 있다. - JDBC ResultSet의 열 이름을 Java 객체의 getter/setter 메서드에 매핑할 수 있다... 2021. 12. 10. 이전 1 ··· 13 14 15 16 17 18 19 ··· 58 다음 반응형