-
Properties 파일이란?JAVA/JDBC 2024. 6. 4. 13:30
▤ 목차
먼저 properties 파일을 만들어서 어떤 방식으로 돌아가고 java 프로그램에 호출할 수 있는지 확인해보자.
파일을 직접 만들고 코드로 돌려보자.
이후 properties 파일의 개념에 대해 알아보자.
✔ Properties 파일 만들기
⌨ properties
file을 생성한다.
이때 확장자는 .properties를 넣어야한다.
해당 파일은 영어는 잘 들어가지만 한글과 같은 글자들은 unicode로 변환된다.
💻 코드로 보기
package pack; import java.io.FileInputStream; import java.util.Properties; public class PropertiesTest { public static void main(String[] args) { Properties prop = new Properties(); try { prop.load(new FileInputStream("C:\\work\\jsou\\jpro2\\src\\pack\\ex.properties")); System.out.println(prop.getProperty("mes1")); System.out.println(prop.getProperty("mes2")); } catch (Exception e) { System.out.println(e); } } }
👏 중요
이전 글에서 DB를 연결했을때도 할 수 있다.
아래와 같이 띄어쓰기가 있는 것과 없는 것은 다른 코드파일이다.
✔Properties 파일이란?
암호화에 사용되는 key값들을 하드코딩하는 경우, 보안적인 측면에서 안전하지 못하다.
이런 경우, 파일명.Properties에 정보를 담은 후 읽어올 수 있다.
예를 들어,
프로젝트를 진행하다보면 외부에서 특정 값들을 주입받아야 하는 경우가 있다.
DB접속 정보, 메일 계정 정보, API key .. 등 이러한 값들을 코드에 직접 사용한다면,
재사용도 힘들고 외부에 노출이 되어 악의적인 의도를 가진 사람에게 공격당하기 쉽다.
이렇게 중요한 값들은 암호화 프로그램을 사용하는 것을 추천한다.
다만 어떤 방식으로 암호화되는지 알거나 properties와 같이 외부 설정값을 관리하는 파일에 적어두고 사용할 수 있다.
🔷oracle 설명
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Properties.html
Properties (Java SE 17 & JDK 17)
All Implemented Interfaces: Serializable, Cloneable, Map Direct Known Subclasses: Provider The Properties class represents a persistent set of properties. The Properties can be saved to a stream or loaded from a stream. Each key and its corresponding value
docs.oracle.com
위의 공식문서를 보자.
- 클래스 Properties는 지속적인 속성 집합을 나타낸다.
- Properties 스트림에 저장하거나 스트림에서 로드할 수 있다.
- 속성 목록의 각 키와 해당값은 문자열이다.
- 속성 목록에는 "기본값"으로 다른 속성 목록이 포함될 수 있다. 원래 속성 목록에서 속성 키를 찾을 수 없으면 이 두 번째 속성 목록이 검색됩니다.
- Properties에서 상속되므로 Hashtable및 메서드 put를 객체 putAll에 적용할 수 있다.
- Properties 호출자가 키나 값이 아닌 항목을 삽입할 수 있도록 허용하므로 사용을 강력히 권장하지 않는다.
- Strings 대신 이 setProperty방법을 사용해야 합니다.
- 키가 아닌 항목을 포함하는 "손상된" 개체 에 대해 or 메서드를 호출하면 호출 이 실패한다.
https://velog.io/@jipark09/Java-Properties ⌨ 형식
key = Value
👏 중요
java 코드에 key을 .getProperty() 메서드를 사용해서 Value값을 가져올 수 있다.
json은 키:값( key:Value )형식으로 사용한다.
eclipse에서 unicode를 utf로 바꿀 수 있다.
eclipse에서 .properties의 unicode로 나오는 문자를 한글로 나오게 하기
eclipse에서 자바 프로젝트를 개발하면 properties파일을 사용할 일이 생깁니다. 그런데 그냥 사용하면 properties파일 안의 한글이 유니코드로 표현됩니다. (유니코드는 다음 사이트를 참고하세요. 참
khstar.tistory.com
✔ Unicode
🔦 유니코드란?
숫자와 글자이다. 즉, 키와 값이 1:1로 매핑된 형태의 코드인 것이다.
컴퓨터는 정말 똑똑해보이지만 '기계'이다. 모든 정보를 0과 1로 받아드리고 처리한다.
한글, 한자 .. 등 많은 글자를 수용하기 위해 한 글자에 2byte를 잡는 유니코드를 만들었다.
즉, 2^16 = 65536 용량을 사용하는 유니코드가 등장했다.
하지만 세상 문자를 모두 담지 못했다. 고어, 아프리카 토속어 등 많은 생각보다 많은 문자가 있기 때문이다.
이를 해결하기 위해 보충 언어판을 정의했다.
한글은 UTF-8 인코딩 방식으로 변환이 가능하다.
UTF-8 인코딩 방식은 유니코드 인코딩 중의 기준이며 8bit를 사용한다.
💻 아스키코드(ASCII)
JAVA 정수형 데이터 타입과 ASCII코드(16진수)
java는 변수를 입력할때 변수 타입을 함께 선언합니다.java는 타입에 맞춰 메모리를 할당합니다.대단한 일을 척척 진행하지만, 사실 이 안에서는 1,0으로 기록하고 데이터를 주고 받는답니다.가장
velog.io
블로그를 바꾸기 전에 내가 잠시 정리한 글이다.
아스키코드를 알기 위해서는 2진수와 16진수를 알아야한다.
컴퓨터 통신 장비에서 문자나 기호를 숫자로 표현하는 표준화된 방법을 의미한다. 초반 컴퓨터 제조사마다 문자나 숫자에 대한 값이 일관성이 없었다. 즉, 데이터를 통신하니 제조사가 다른 경우, 문제가 생긴것이다.
이런 현상을 없애기 위해 1960년대 미국에서 정의한 문자나 숫자를 표준화한 부호체계이다.
아스키 코드는 8비트를 사용한다.
더보기1bit는 1과 0으로 표현할 수 있다.
4bit는 16진수를 표현할 수 있다. (1,2,4,8) 4bit는 16진수의 한자리 수 이다.
1byte = 8bit
이중 1bit는 통신 에러 검출을 위해 사용하기때문에 7bit만 사용한다.
위의 표에서 보면 0 ~127까지 고유한 값이 할당되어 있다.(128)
아스키 코드는 미국에서 만들어서 영문을 제외한 다른 언어를 사용하면 7bit로는 부족했다.
[ ANSI 코드 ]
8bit로 확장한 아스키 코드가 나왔다. 이 코드를 ANSI 코드라고 한다.
ANSI 코드는 8bit를 사용한다니 2 ^8 = 256이다. 아스키 코드와 비교하면 128개를 더 쓸 수 있다.
하지만 이로도 비유럽 국가는 사용이 어려웠다.
그래서 등장한 국제 표준 코드가 유니코드였다.
👏 중요
인코딩과 디코딩이라는 개념을 짧게 남기고 가는게 좋겠다. (안하기엔 연결된 개념이라 아쉽다.)
[인코딩 encoding]
정해진 규칙에 따라 코드화, 암호화, 부호화하는 것을 말한다.
인코딩을 하는 이유는 정보의 형태 표준화, 보안, 저장 공간 절약 등을 하기 위해서이다.
문자 인코딩(문자 > byte) , 사진/오디오/비디오 인코딩 형식이 있다.
[디코딩 decoding]
인코딩의 반대되는 개념이다. 역코드화의 의미를 가지고있다.
저장 공간 효율화, 보안 등의 이유로 인코딩을 한 데이터를 다시 디코딩을 해서 사용할 수 있다.
😊인코딩, 디코딩을 쉽게 볼 수 있는 사이트
https://r12a.github.io/app-encodings/
Encoding converter
show all the characters in: Select... big5 euc-jp iso-2022-jp shift_jis euc-kr gb18030 (index only) gbk koi8-r koi8-u windows-1250 windows-1251 windows-1252 windows-1253 windows-1254 windows-1255 windows-1256 windows-1257 windows-1258 macintosh ibm866 wind
r12a.github.io
'JAVA > JDBC' 카테고리의 다른 글
java Swing 로그인 기능 query (0) 2024.06.10 maven, gradle) 파일 만들기, 저장소에서 dependencies 코드 가져오기 (0) 2024.06.03 JDBC의 개념과 연결 방법, DB Cursor (0) 2024.05.31