티스토리 뷰
반응형
ajax 와 jsonp 를 사용하면, 다른 머신에서 서비스 되는 데이타를 가져올 수 있다고 하긴 하는데..
오늘 설명하고자 하는 것은, URLConnection 과 ajax 를 사용하여 다른 머신에서 서비스 되는 웹페이지를 가져오는 방법.
ajax 로는 사실 다른 머신에서 서비스 되는 웹페이지 내용을 가져올 수 없잖아요..
jsonp 로 데이타는 가져올 수 있어도 해당 웹페이지 자체를 가져올 수는 없으니까..
물론, 웹페이지 뿐만 아니라 json 이나 xml 등의 데이타도 가져올 수 있습니다.
외부 머신의 URL 스트림을 받아서 일단 내부 머신의 .jsp 에 담았으면,
이를 jsp:include 해도 되고.. ajax 에 사용해도 되고..
<%--
* 프로그램 명칭 :
* 프로그램 설명 :
* 작업일/작업자 :
--%><%@ page language="java" contentType="text/html; charset=EUC-KR"
%><%@ page import="java.util.*"
%><%@ page import="java.io.*"
%><%@ page import="java.net.URL"
%><%@ page import="java.net.URLConnection"
%><%@ page import="java.net.UnknownHostException"
%><%
URLConnection con = null;
InputStreamReader isr = null;
BufferedReader br = null; // File I/O 가 아니라서 필요없을 수도 있긴 한데..
StringBuffer sb = null;
ServletOutputStream sos = null;
BufferedOutputStream bos = null; // 꼭 필요한 것을 아닐텐데..
try{
URL u = new URL("http://URL");
con = u.openConnection(); // DB 에서 Connection 을 생성하는 것처럼..
con.connect();
isr = new InputStreamReader(con.getInputStream(),"EUC-KR"); // 문자셋은 상황에 맞게..
br = new BufferedReader(isr);
sb = new StringBuffer();
String line = null;
while((line = br.readLine()) != null){
sb.append(line+"\n");
}
String cont = sb.toString().trim(); // The processing instruction target matching "[xX][mM][lL]" is not allowed 오류 제거 위해 trim()
sos = response.getOutputStream();
bos = new BufferedOutputStream(sos);
byte[] bs = cont.getBytes();
bos.write(bs, 0, bs.length);
bos.flush(); // flush() 는 반드시 해야 해요.. 아니면, Buffer 에 남은 짜투리가 제대로 전달되지 않을수도.
}catch(UnknownHostException uhe){
StringBuffer sbLog = new StringBuffer(); // FileAccess 를 줄이기 위해서 한번에 Write 하는 방식
sbLog.append("\n+++."+request.getRequestURL()+ "..\n");
sbLog.append("+++.Exception:" +uhe.toString()+ "..\n");
System.out.println(sbLog); // println 이기 때문에 맨 뒤에는 sbLog.append("\n"); 불필요.
sbLog.delete(0,sbLog.length());
}catch(Exception e){
StringBuffer sbLog = new StringBuffer(); // FileAccess 를 줄이기 위해서 한번에 Write 하는 방식
sbLog.append("\n+++."+request.getRequestURL()+ "..\n");
sbLog.append("+++.Exception:" +e.toString()+ "..\n");
System.out.println(sbLog); // println 이기 때문에 맨 뒤에는 sbLog.append("\n"); 불필요.
sbLog.delete(0,sbLog.length());
}finally{
if(sb !=null) try{ sb.delete(0, sb.length()); }catch(Exception e){}finally{ sb =null; }
if(br !=null) try{ br.close(); }catch(Exception e){}finally{ br =null; }
if(isr !=null) try{ isr.close(); }catch(Exception e){}finally{ isr =null; }
if(sos !=null) try{ sos.close(); }catch(Exception e){}finally{ sos =null; }
if(bos !=null) try{ bos.close(); }catch(Exception e){}finally{ bos =null; }
}
%>
출처 - http://jsp-making.tistory.com/250
'Programming > WEB' 카테고리의 다른 글
Edge 브라우저에서 window.open 시 같은 창에서 안열리는 현상 (0) | 2022.11.25 |
---|---|
HTML 브라우저 메타 태그 (0) | 2014.12.23 |
HTML에서 사용되는 quot? amp? lt? gt???? (0) | 2014.11.06 |
VIM / VI 명령어 정리 (0) | 2014.10.30 |
Unix/Linux 디스크 용량 확인 명령어 (df/du) (0) | 2014.10.30 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 로그초기화
- internal error
- 트위터 위젯
- javascript
- Oracle
- oracle 줄바꿈
- webtob
- 대체어
- this
- 웹투비
- 사용자삭제
- 자바스크립트
- 오라클 락
- 오라클
- 0으로
- jQuery
- lock
- 시간지정
- 오라클 복구
- html
- IE모드
- 시간비교
- IE는언제없어지나
- 명령어
- 락걸림
- 트위터 타임라인 위젯
- 오라클 세션
- 음수를
- jeus
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함