JSP - chapter04(3)

ZiSoOm·2021년 7월 20일
0

JSP

목록 보기
8/12

🎇절대 경로를 사용하여 자원 읽기

  • 1) notice.txt
본 사이트는 예제 사이트 입니다.<br>
이 내용은 <b>notice.txt</b>에 있습니다.<br>
작성자는 프로그래머 홍길동 입니다.
  • 2) notice.txt 읽기
<%@page import="java.io.IOException"%>
<%@page import="java.io.FileInputStream"%>
<%@page import="java.io.InputStreamReader"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>절대 경로를 사용하여 자원 읽기</title>
</head>
<body>
<%
//notice.txt가 있는 위치 적음 (\는 1개만 사용할 수 없음)
// dditServlet 프로젝트 - WebContent - chapter05 - message - notice.txt 존재
String filePath = "D:\\A_TeachingMaterial\\6.JspSpring\\workspace\\dditServlet\\WebContent\\chapter05\\message\\notice.txt";

char[] buff = new char[128]; //128자씩 끊어서 읽게끔 하기 위함
int len = -1; //length가 -1이라는 것은 없다는 뜻
try {
	//notice.txt로부터 내용을 읽어오는 스트림(데이터 물줄기)을 생성함
	InputStreamReader fr = 
			new InputStreamReader(new FileInputStream(filePath), "UTF-8");
	//notice.txt로부터 읽어온 데이터를 out 기본 객체를 사용하여 웹 브라우저에 출력함
	while((len = fr.read(buff)) != -1) { //읽을 게 있을 때만 실행(읽을 게 없으면 -1)
		out.print(new String(buff, 0, len));
	}
}catch(IOException ex) {
	out.print("익셉션 발생 : " + ex.getMessage());
}
%>
</body>
</html>

notice.txt 읽은 결과 :

🎇좋아하는 시 읽어 오기

  • 1) poem.txt
<h1>수선화에게</h1>
<div style="width:400px;">
<p style="text-align:right;">정호승</p>
울지마라<br>
외로우니까 사람이다<br>
살아간다는 것은 외로움을 견디는 일이다<br>
공연히 오지 않는 전화를 기다리지 마라<br>
눈이 오면 눈길을 걷고<br>
비가 오면 빗길을 걸어가라<br>
갈대 숲에서 가슴 검은 도요새도 너를 보고 있다<br>
가끔은 하느님도 외로워서 눈물을 흘리신다<br>
새들이 나뭇가지에 앉아 있는 것도 외로움 때문이고<br>
네가 물가에 앉아 있는 것도 외로움 때문이다<br>
산 그림자도 외로워서 하루에 한 번 씩 마을로 내려온다<br>
종소리도 외로워서 울려 퍼진다.<br>
</div>
  • 2) poem.txt 읽기
<%@page import="java.io.IOException"%>
<%@page import="java.io.FileInputStream"%>
<%@page import="java.io.InputStreamReader"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>좋아하는 시 읽어오기</title>
</head>
<body>
<%
	//poem.txt가 있는 위치 적음 (\는 1개만 사용할 수 없음)
	// dditServlet 프로젝트 - WebContent - chapter05 - message - poem.txt 존재
	String filePath = "D:\\A_TeachingMaterial\\6.JspSpring\\workspace\\dditServlet\\WebContent\\chapter05\\message\\poem.txt";
	
	char[] buff = new char[128];
	int len = -1;
	
	try {
		InputStreamReader fr = new InputStreamReader(new FileInputStream(filePath), "UTF-8");
		while((len=fr.read(buff))!= -1) {
			out.print(new String(buff, 0, len));
		}
	}catch(IOException ex) {
		out.print("익셉션 발생 :" + ex.getMessage());
	}
%>
</body>
</html>

시 읽어오기

🎇application 기본 객체의 자원 접근 메서드

  • getRealPath(String path) : 리턴 타입은 String
    웹 어플리케이션 내에서 지정한 경로에 해당하는 자원의 시스템상에서의 자원 경로를 리턴
  • getResource(String path) : 리턴 타입은 URL
    웹 어플리케이션 내에서 지정한 경로에 해당하는 자원에 접근할 수 있는 URL 객체를 리턴
    URL url = application.getResource(resourcePath);
    url.openStream()
  • getResourceAsStream(String path) : 리턴 타입은 InputStream
    웹 어플리케이션 내에서 지정한 경로에 해당하는 자원으로부터 데이터를 읽어올 수 있는 InputStream을 리턴
    application.getResourceAsStream(resourcePath)

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

<%@page import="java.net.URL"%>
<%@page import="java.io.InputStreamReader"%>
<%@page import="java.io.IOException"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>application 기본 객체를 사용하여 자원 읽기</title>
</head>
<body>
<%
	String resourcePath = "/chapter05/message/notice.txt";
%>
자원의 실제 경로<br>
<%
/*
D:\A_TeachingMaterial\6.JspSpring\workspace\.metadata
\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
\dditServlet\message\notice.txt
*/
	out.print(application.getRealPath(resourcePath)+ "<br/>");
    out.print(application.getResource(resourcePath)+ "<br/>");
%>
--------------------------------------<br>
<%
	char[] buff = new char[128];
	int len = -1;
	URL url = application.getResource(resourcePath);
	
	try {
		/* new FileInputStream(filePath) //realPath */
		
		//상대경로
		InputStreamReader br = new InputStreamReader(application.getResourceAsStream(resourcePath), "UTF-8");
		/* InputStreamReader br = new InputStreamReader(url.openStream(), "UTF-8"); */
		while((len=br.read(buff))!= -1) {
			out.print(new String(buff,0,len));
		}
	}catch(IOException ex) {
		out.print("익셉션 발생 : " + ex.getMessage());
	}
%>
</body>
</html>

0개의 댓글