목록
'홈' 729건
-
예외 처리하기노드에서는 예외 처리가 정말 중요합니다. 예외란 보통 처리하지 못한 에러를 가리킵니다. 이러한 예외들은 살행 중인 노드 프로세스를 멈추게 만듭니다.멀티 스레드 프로그램에서는 스레드 하나가 멈추면 그 일을 다른 스레드가 대신합니다. 하지만 노드의 메인 스레드는 하나뿐이므로 그 하나를 소중히 보호해야 합니다. 메인 스레드가 에러로 인해 멈춘다고 것은 스레드를 갖고 있는 프로세스가 멈춘다는 뜻이고, 전체 서버도 멈춘다는 뜻과 같습니다. 아무리 신중을 가해 만들었다고 해도 항상 예기치 못한 에러는 발생하는 법입니다.error.jssetInterval(() => { console.log("시작"); try { throw new Error("서버를 고장내주마!"); } catch (err) { co..
-
웹 브라우저에서 서블릿으로 데이터 전송하기GET/POST 전송 방식웹 브라우저에서 서블릿으로 전송하는 방법은 크게 GET 방식과 POST 방식이 있습니다.주소 창을 자세히 보면 물음표(?) 뒤에 입력한 값, 외화 종류 그리고 나타내는 문자열이 서블릿 매핑 이름 뒤에 붙어서 전송됩니다. 이렇게 URL 주소에 데이터를 붙여서 전송하는 방식을 GET 방식이라고 합니다. GET 방식으로 데이터를 전송할 경우에는 전송하는 데이터가 노출되므로 보안에 취약합니다.반면에 POST 방식은 전송하는 데이터를 숨겨서 전송하므로 보안성이 높습니다.즉, GET 방식은 보안과 관련이 없는 간단한 데이터를 쉽게 전송할 수 있는 반면, POST 방식은 보안과 관련된 데이터를 전송하는 데 많이 사용합니다. GET 방식POST 방식서블릿에 데이터를 전송할 때는 데이터가 URL..
-
파일 입출력 응용: 파일 복사파일은 문자열로 이루어진 텍스트 파일과 이미지나 오디오 혹은 그래픽 등 바이너리 코드로 이루어진 바이너리 파일로 나뉜다. 바이너리 파일은 바이트 스트림으로 읽고 써야 정확하게 복사가 이루어지지만, 텍스트 파일은 문자 스트림이나 바이트 스트림 중 어떤 것을 사용해도 복사에 문제가 없다. 텍스트 파일 복사FileReader를 이용하여 텍스트 파일을 읽고 FileWriter로 텍스트 파일에 복사합니다. 파일 경로명은 File 객체를 이용합니다. 텍스트 파일 복사import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class TextCopyEx { public static..
-
이벤트 이해하기스트림을 배울 때 on('data', 콜백) 또는 on('end', 콜백)을 사용했습니다. 바로 data라는 이벤트와 end 이벤트가 발생할 때 콜백 함수를 호출하도록 이벤트를 등록한 것입니다.createReadStream 같은 경우는 내부적으로 알아서 data와 end 이벤트를 호출하지만, 우리가 직접 이벤트를 만들 수도 있습니다.const EventEmitter = require("events");const myEvent = new EventEmitter();myEvent.addListener("event1", () => { console.log("이벤트 1");});myEvent.on("event2", () => { console.log("이벤트 2");});myEvent.on("event2",..
-
서블릿을 이용한 환율 계산기 예제 실습1. sec02.ex01 패키지에 ClacServlet 클래스를 생성합니다.package sec02.ex01;import java.io.IOException;import java.io.PrintWriter;import jakarta.servlet.ServletException;import jakarta.servlet.annotation.WebServlet;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;@WebServlet("/calc")public class CalcServlet extends HttpServle..
-
File 클래스File 클래스란?File 클래스는 파일이나 디렉터리에 대해, 겅로명, 크기, 타입, 수정 날짜 등의 속성 정보를 재공하고, 파일 삭제, 디렉터리 생성, 파일 이름 변경, 디렉터리 내의 파일 리스트 제공 등 다양한 파일 관리 작업을 지원합니다. File 클래스의 경로명은 java.io.File입니다. 이름과는 달리, File 클래스에는 파일 입출력 기능은 없습니다. File 객체 생성File f = new File("c:\\Temp\\test.txt");File f = new File("c:\\Temp", "test.txt"); // 디렉터리와 파일명을 나누어 전달 메소드설명File(File parent, String child)parent 디렉터리에 child 이름의 서브 디렉터리나 파일을 나타내는 ..
-
스레드 풀 알아보기비동기식 메서드들은 백그라운드에서 실행되고, 실행된 후에는 다시 메인 스레드의 콜백 함수나 프로미스의 then 부분이 실행됩니다. 이때 fs 메서드를 여러 번 실행해도 백그라운드에서 동시에 처리되는데, 바로 스레드풀이 있기 때문입니다.fs 외에도 내부적으로 스레드 풀을 사용하는 모듈로는 crypto, zlib, dns.lookup 등이 있습니다.threadpool.jsconst crypto = require("crypto");const pass = "pass";const salt = "salt";const start = Date.now();crypto.pbkdf2(pass, salt, 1000000, 128, "sha512", () => { console.log("1:", Date.now() - sta..
-
HttpServletResponse를 이용한 서블릿 응답 실습서블릿이 클라이언트(웹 브라우저)에 응답하는 과정은 다음과 같습니다. 1. login.html을 다음과 같이 수정합니다. 로그인창에서 ID와 비밀번호를 입력한 후 login2 서블릿으로 전송합니다. 아이디 : 비밀번호: 2. sec02.ex01 패키지에 LoginServlet2 클래스를 추가하고 다음과 같이 작성합니다. 브라우저에서 전달받은 ID와 비밀번호를 HTML 태그로 만든 후 다시 브라우저로 응답합니다.package sec01.ex01;import jakarta.servlet.ServletException;import jakarta.servlet.annotation.WebServlet;import jakarta.servlet.http.HttpServlet;impor..
-
버퍼 입출력과 파일 입출력버퍼 입출력의 필요성스트림이 버퍼(buffer)를 가지게 되면 보다 효율적으로 작동할 수 있습니다. 버퍼란 데이터를 일시적으로 저장하기 위한 메모리입니다. 파일 출력 스트림이 파일에 쓸 데이터를 버퍼를 모아 두었다가, 한 번에 운영체제 API를 호출하여 파일에 쓰게 하면, 운영체제의 부담을 줄이고 장치를 구동하는 일이 줄어들게 되어 시스템의 속도나 효율이 올라가게 될것입니다.버퍼 스트림 역시 데이터의 타입에 따라 바이트 버퍼 스트림과 문자 버퍼 스트림으로 구분됩니다. 바이트 버퍼 스트림을 구현한 입출력 클래스는 BufferedInputStream과 BufferOurputStream이 있으며, 문자 버퍼 스트림을 구현한 클래스는 BufferedReader와 BufferedWriter가 있습니다. 버퍼 스트..
-
기타 fs 메서드 알아보기fsCreate.jsconst fs = require("fs").promises;const constants = require("fs").constants;fs.access("./folder", constants.F_OK | constants.W_OK | constants.R_OK) .then(() => { return Promise.reject("이미 폴더 있음"); }) .catch((err) => { if (err.code === "ENOENT") { console.log("폴더 없음"); return fs.mkdir("./folder"); } return Promise.reject(err); }) .then(() => { console.log(..
-
서블릿의 응답 처리 방법 & MIME-TYPE이번에는 서브릿이 처리한 결과를 클라이언트에게 응답하는 기능을 알아보겠습니다. 서블릿에서 응답을 처리하는 방법은 다음과 같습니다.1. doGet()이나 doPost() 메서드 안에서 처리합니다.2. javax.servlet.http.HttpServletResponse 객체를 이용합니다.3. setContextType()을 이용해 클라이언트에게 전송할 데이터 종류(MIME-TYPE)를 지정합니다.4. 클라이언트(웹 브라우저)와 서블릿의 통신은 자바I/O의 스트림을 이용합니다. MIME-TYPE웹 애플리케이션은 클라이언트에 해당하는 웹 브라우저와 서버에 해당하는 서블릿이 서로 데이터를 주고받으면서 실행합니다. 웹 브라우저가 네트워크를 통해 서블릿에 데이터를 보내는 경우 서블릿은 네트워크로부터 데이터를 입력받..
-
FileInputStream을 이용한 바이너리 파일 읽기바이트 스트림으로 파일을 읽는 스트림 클래스는 FileInputStream이며, 생성자와 주요 메소드는 다음과 같습니다.생성자설명FileInputStream(File file)file이 지정하는 파일로부터 읽는 FileInputStream 생성FileInputStream(String name)name이 지정하는 파일로부터 읽는 FileInputStream 생성 메소드설명int read()입력 스트림에서 한 비이트를 얻어 int형으로 리턴int read(byte[] b)최대 배열 b의 크기만큼 바이트를 읽음. 읽는 도중 EOF를 만나면 실제 읽은 바이트 수 리턴int read(byte[] b, int off, int len)최대 len개의 바이트를 열어 b 배열의 off 위치부터 저장, 읽는 도중 EOF를..