프로그래밍 언어/자바 웹

ServletContext의 파일 입출력 기능

· 코딩마이데이

1. 프로젝트 pro08의 WebApp/WEB-INF 폴더를 선택하고 마우스 오른쪽 버튼을 클릭한 후 New > Folder를 선택합니다.

New > Folder 산택

 

2. 폴더 이름으로 bin을 입력하고 Finish를 클릭합니다.

폴더 이름으로 bin 입력 후 Finish 클릭

 

3. bin 폴더가 생성된 것을 확인할 수 있습니다.

bin 폴더 생성 확인

 

 

4. bin 폴더를 선택하고 마우스 오른쪽 버튼을 클릭한 후 New > File을 선택합니다.

New > File 선택

 

5. 파일 이름으로 init.txt를 입력하고 Finish를 클릭합니다.

파일 이름으로 init.txt 입력 후 Finish 클릭

 

6. 생성된 파일에 메뉴 항목을 입력한 후 저장합니다.

파일에 있는 메뉴 항목 입력 후 저장

 

7. 이제 init.txt에서 메뉴 데이터를 읽어와 출력하는 기능을 구현해 보겠습니다. 다음과 같이 ContextFileServlet 클래스를 준비합니다.

실습 파일 위치

 

8. ContextFileServlet 클래스를 다음과 같이 작성합니다. getServletContext() 메서드로 ServletContext에 접근하여 getResourceAsStream() 메서드에서 읽어 들일 파일 위치를 지정한 후 파일에서 입력 받습니다.

package sec05.ex03;

import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;

@WebServlet("/cfile")
public class ContextFileServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;chatset=utf-8");
		PrintWriter out = response.getWriter();
		ServletContext context = getServletContext();
		InputStream is = context.getResourceAsStream("/WEB-INF/bin/init.txt");
		BufferedReader buffer = new BufferedReader(new InputStreamReader(is));
		
		String menu = null;
		String menu_member = null;
		String menu_order = null;
		String menu_goods = null;
		while ((menu = buffer.readLine()) != null) {
			StringTokenizer tokens = new StringTokenizer(menu, ",");
			menu_member = tokens.nextToken();;
			menu_order = tokens.nextToken();
			menu_goods = tokens.nextToken();
		}
		out.print("<html><body>");
		out.print(menu_member + "<br>");
		out.print(menu_order + "<br>");
		out.print(menu_goods + "<br>");
		out.print("</body></html>");
		out.close();
	}
}

 

9. http://localhost:8090/pro08/cfile로 요청하면 다음과 같이 파일의 메뉴 항목을 읽어와 브라우저로 출력합니다.

실행 결과

'프로그래밍 언어 > 자바 웹' 카테고리의 다른 글

@WebServlet 에니테이션을 이용한 서블릿 설정  (1) 2025.07.02
ServletConfig  (0) 2025.06.29
ServletContext의 매개변수 설정 기능  (1) 2025.06.21
ServletContext 사용법  (1) 2025.06.18
바인딩  (1) 2025.06.15