본문 바로가기

JAVA

자바로 html 출력하기

실습 내용

자바의 시스템 속성을 출력하는 html을 자바로 출력해보고자 한다.

🔸 요구 사항
- 자바의 시스템 속성 가져오기
- html 파일 생성 & 작성
- html로 테이블 만들기

자바의 시스템 속성 가져오기

System.getProperty() 사용
자바를 실행할 때, 실행되는 곳의 정보를 얻어오거나 운영체제의 정보가 필요할 때가 있다.
이때 실행 위치에 있는 파일의 정보를 읽어드려야 하는데, 이를 위해 System.getProperty() 를 사용한다.
System.getProperty()의 인자로 문자열을 적어넣으면 그 값이 String 으로 출력된다.

e.g
System.out.print(System.getProperty("os.name");) // => Windows 11가 출력됨

시스템 속성 전체를 받아오는 방법
System.getProperties().keySet() 에서 향상된 for문으로 key를 가져와서
getProperties의 인자로 넘겨주어 리턴되는 String을 사용

참고 : https://lifeinprogram.tistory.com/19

for(Object k : System.getProperties().keySet()){
    String key = k.toString();
    String value = System.getProperty(key);
}

html 파일 생성 & 작성

🔸 파일 생성
File 클래스의 생성자에 만들고 싶은 html 파일명을 넘겨주면 된다.
File file = new File("index.html"); 은 해당 이름의 파일이 없는 경우 새로 생성, 있는 경우 그 파일을 받아오는 코드이다.

🔸 파일 수정
버퍼 스트림(BufferedWriter)과 파일 입출력 버퍼()를 이용해서 파일 내용을 수정할 수 있다.

🔸 사용된 스트림
BufferedWriter는 성능 향상을 위해 입출력 스트림과 연결하여 사용하는 보조 스트림
FileWriter는 문자열 기반 스트림 (대상 = 파일)
write(char\[\]) 메소드는 char 배열을 모두 출력 버퍼로 보내는 메소드

try {
    File file = new File("index.html"); // 해당 이름의 파일이 없는 경우 새로 생성, 있는 경우 그 파일을 받아옴
    BufferedWriter writer = new BufferedWriter(new FileWriter(file));
    writer.write("hello world");
    writer.close();
} catch (IOException e) {
    e.printStackTrace();
}

전체 코드

import java.io.*;

public class Main {
    public static void main(String[] args) {
        try {
            File file = new File("index.html"); // 해당 이름의 파일이 없는 경우 새로 생성, 있는 경우 그 파일을 받아옴
            BufferedWriter writer = new BufferedWriter(new FileWriter(file));

            writer.write("" +
                    "<head>" +
                        "<meta charset = \"UTF-8\"/>" +
                        "<style>" +
                            "table {border-collapse: collapse; width: 100%;}" +
                            "th, td {border: solid 1px #000;}" +
                        "</style>" +
                    "</head>" +
                    "<body>");

            writer.write("<h1>자바 환경정보</h1>");
            writer.write("" +
                    "<table>" +
                        "<tr>" +
                            "<th>키</th>" +
                            "<th>속성</th>" +
                        "</tr>");

            for(Object k : System.getProperties().keySet()){
                String key = k.toString();
                String value = System.getProperty(key);
                writer.write("" +
                        "<tr>" +
                            "<td>" + key + "</td>" +
                            "<td>" + value + "</td>" +
                        "</tr>");
            }

            writer.write("</table>");

            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

결과

새롭게 배운 것

System.getProperty 메소드의 쓰임에 대해 알게 되었다.
File 클래스, Buffer 스트림, 파일 입출력 스트림에 대해 알고는 있었지만, 실습은 하지 않았는데 사용법을 알게 되었다.
html에서 테이블을 만드는 방법을 다시금 복습할 수 있었다.
한글 깨짐을 방지하기 위해 UTF-8 속성을 반드시 넣어야 한다는 것을 알게 되었다.

UTF-8 설정을 하지 않았을 때의 출력 화면