<jsp:include page="/abc/defg/hij.jsp" flush="true" /> 라고 사용하는 것은 이미 아는 이야기 겠고..
<%@ include file="/abc/defg/hij.jsp" %> 와의 차이점도 아시겠죠..?
물론 두가지 방식 모두 동일 서버나 클러스터링 된 서버 또는,
NetworkFileSystem 이나 NAS 장비가 Mount 되어 있는 서버에서 가져와야 하지요.
다른 URL 을 가지고 있는 다른 물리적인 서버에서는 가져올 수가 없습니다.
동일 서버에 존재하더라도 page 에 "http://.../abc/defg/hij.jsp" 뭐 이렇게 기술하면 오류가 납니다.
그리고 jsp:include 에서 page 에 파라미터를 넣으려면 2가지 방법이 있는데,
<jsp:include page="/abc/def/ghi.jsp" flush="true">
<jsp:params name="aa" value="bb" />
</jsp:include>
위와 같이 하든지, 아니면 jsp:params 없이 jsp:include 의 page 에 파라미터를 넣으면 되는데..
이때는 /abc/def/ghi.jsp?abc=&def= 뭐 이런식으로 넣으면 안 되고,
<% String url = "/abc/def/ghi.jsp?abc=&def="; %>
<jsp:include page="<%= url %>" flush="true" /> 와 같이 해야 하는 것도 아실테고..
가만 있자.. 아하.. 오늘 이야기 하려는 것은,
일반적인 웹서비스를 통해 접근할 수 없는 파일을 jsp:include 를 통하여 가져오는 방법..
url 에 JSP 파일 하나 넣고, JSP 에서는 화면에 표시하는 내용을 기술하면 되는데..
만약, url 에 파일 내용을 읽어서 가져와야 한다면 어떻게 해야 할까..?
가령, 웹서버를 통해서는 가져올 수 없는 이미지 파일이 있다면..?
첨부 파일을 웹서버의 URI 를 통해서는 닿을 수 없는 곳에 있는 파일을 가져오게 하려면..?
이를테면, 웹서버의 서비스 경로가 아닌 다른 디렉토리에 쌓여 있는 파일을 가져오게 하려면..?
이런 파일들은 웹사이트를 긁어갈 수 있는 웹로봇도 접근이 불가능하니까.. ㅋ
그리고, 해당 파일을 가져오는 것을 jsp 에 구현하고, jsp 는 접근권한을 주면 보안도 확실.
HTML 파일의 경우 문자셋도 고려해야 하는데, 일반적인 방식이라면 이곳에서 설명하는 대로 하면 한글이 깨지지 않죠.
jsp 에서는 다음을 구현하고, String fileSpec = "/data/path1/path2/file.jpg"; // os 상의 절대 경로를 기술, 웹서비스 상의 절대 경로 아님 File file = new File(fileSpec); if(file.exists() && file.length()>0){ // 파일이 존재하면 해당 로직을 구현한 Java 에서 해당 파일의 내용을 긁어온다 fileMng.sendImage(response, fileMng.readImage(file)); // fileSpec OS 상의 절대 경로 } |
위에서 fileSpec 에 해당하는 것은 DB 에서 값을 가져올 수도 있겠고, 그냥 파라미터로 가져올 수도 있겠지요.
java 에서는 다음을 구현한다. 참고로, java 에서 response 개체에 실어 보내야 한다. /** * 데이타를 response 로 내 보낸다<br> * 데이타는 HTML 파일 일 수도 있고, Image 파일 일 수도 있다. * @param HttpServletResponse 데이타를 내보내는 곳 * @param byte 데이타 * @return void * @throws Exception */ public void sendImage(HttpServletResponse response, byte[] imgContentsArray){ ServletOutputStream svrOut = null; try{ svrOut = response.getOutputStream(); }catch(Exception e){
byte[] buf = null; try{ File f = new File(filePath); }catch(Exception e){ return buf; |
readImage 메소드는 Overiding 을 통해 File 개체를 파라미터로 받도록 해야 위에서 기술한 jsp 와 맞아 떨어진다.
지면의 편의상 String 개체로 FileSpec 을 파라미터로 받는 부분을 설명했다. 여기까지 설명했으면 알아서 할 수 있죠..?
각각의 close 메소드는 finally 에 필히 등록. 아니면 간혹, 서버가 Out of Memory 에 시달릴 수도 ..
'컴퓨터 이야기 > 프로그래밍' 카테고리의 다른 글
SSL, 이거 항상 좋은 것만은 아니네요. 사용자가 선택하게 해야 한다라니.. 유감입니다. (0) | 2009.07.16 |
---|---|
본문에 사용된 HTML 태그를 관리자 화면에서 다루는 요령 (2) | 2009.07.15 |
이미지 사이즈 조정 (2) | 2009.07.06 |
자바 스크립트, submit() 과 history.back() 이 모두 기술된다면 어떤 것이 실행될까 (2) | 2009.06.30 |
모니터 화면이 스크롤되어도 일정한 곳에 보이도록 하였던 이미지가 갑자기 움직이지 않는다 (0) | 2009.06.30 |