본문 바로가기
IT/JSP

[JSP] - 18. application - 파일 읽는 방법(기본 객체 사용)

by 차이나는 개발자 2020. 7. 22.
728x90
반응형

#application - 파일 읽는 방법(기본 객체 사용)

 

 

#application 기본 객체 사용하여 자원 읽기

-WebContent는 이클립스(개발 프로그램)의 경로이다.

-개발상의 경로와 배포경로를 정확히 알 수가 없다.

-절대 경로를 사용해서 파일을 읽어오면 유지보수에 문제가 생길 수 있다.

-이런 문제를 해결할 수 있도록 웹 애플리케이션의 파일에 접근할 수 있는 메서드를 제공하고 있다.

-(path) : 웹 어플리케이션 상의 경로

 

 

#application기본 객체가 제공하는 자원 접근 메서드

메서드 리턴 타입 설명
getRealPath(String path) String(디스크상의 경로) 웹 어플리케이션 내에서 지정한 경로에 해당하는 자원의 시스템상에서의 경로를 리턴한다.(읽기, 쓰기 모두 가능)
getResource(String path) java.net.URL 웹 어플리케이션 내에서 지정한 경로에 해당하는 자원에 접근할 수 있는 URL 객체를 리턴한다.( 읽기만 가능)
getResourceAsStream(String path) java.io.InputStream 웹 어플리케이션 내에서 지정한 경로에 해당하는 자원으로부터 데이터를 읽어올 수 있는 InputStream을 리턴 한다.
(읽기만 가능)

 

 

#getResourceAsStream 메서드 사용

<%@page import="java.io.InputStreamReader"%>
<%@page import="java.io.IOException"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>application 기본 객체 사용하여 자원 읽기1</title>
</head>
<body>
	<%
		String resourcePath ="/message/notice.txt";
	%>
	자원의 실제 경로:<br>
	<%= application.getRealPath(resourcePath) %>
	<br>
	-------------<br>
	<%=resourcePath %>의 내용<br>
	-------------<br>
	<%
		char[] buff = new char[128];
		int len = -1;
		
		InputStreamReader br = null;
		try{
			br = new InputStreamReader(application.getResourceAsStream(resourcePath));	
			while( (len = br.read(buff)) != -1){
				out.print(new String(buff, 0, len));
			}
		}catch(IOException e){
			e.printStackTrace();
		}
	%>
</body>
</html>

 

 

-결과 화면

 

 

#getResource 메서드 사용

<%@page import="java.net.URL"%>
<%@page import="java.io.InputStreamReader"%>
<%@page import="java.io.IOException"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>application 기본 객체 사용하여 자원 읽기2</title>
</head>
<body>
	<%
		String resourcePath ="/message/notice.txt";
		char[] buff = new char[128];
		int len = 01;
		URL url = application.getResource(resourcePath);
		InputStreamReader br = null;
		try{
			br = new InputStreamReader(url.openStream());
			while( (len = br.read(buff)) != -1){
				out.print(new String(buff, 0, len));
			}
		}catch(IOException e){
			out.println("익셉션 발생:" + e.getMessage());
		}
	
	%>
</body>
</html>

 

 

-결과 화면

 

 

 

728x90
반응형

댓글