2014년 4월 30일 수요일

[JAVA NETWORK URL]자바에서 URL 다루기(JAVA URL), 자바네트워크 공부잘하세요, 네트워크프로그래밍은 개발의 꽃입니다.

[JAVA NETWORK URL]자바에서 URL  다루기(JAVA URL), 자바네트워크 공부잘하세요, 네트워크프로그래밍은 개발의 꽃입니다.
 
이번 시간에는 자바를 이용하여 URL을 다루는 방법에 대해 살펴 보도록 하겠습니다.
 
요즘은 거의 인터넷을 사용한다고 하니 프로그램을 통해 HTTP를 핸들링해야 하는 경우가 가끔식 있을 겁니다.
 
URL을 다루기 위한 가장 기본적인 클래스는 java.net.URL 클래스 입니다.
 
우선 URL에 대해 잠시 알아 보면 URL은 Uniform Resource Locator의 첫글짜를 딴것으로 인터넷상의 자원에 대해 참조하기 위해 만들어 진것 입니다. 아래와 같은 구조를 가지구요...
URL 클래스의 생성자는 다음과 같습니다. 아래에서 80은 포트 입니다.

new URL("http://www.onjprogramming.co.kr:80/");
new URL("http", "www.onjprogramming.co.kr", "/index.html");
new URL("http", "www.onjprogramming.co.kr", 80, "pages/index.html");
 
또한 URL 클래스는 Write-Once Class 입니다.단지 URL 클래스를 만들수 있을 뿐이지 나중에 속성(포트, 파일이름, 호스트이름)을 변경 하는 것은 불가능 합니다.
 
다음은 몇가지 메소드 입니다.
 
public String getProtocol() : Returns the protocol identifier component of the URL.
public String getHost() : Returns the host name of the URL.
public int getPort() : Returns the port number component of the URL.
public String getFile() : Returns the filename of the URL.
public Object getContent()
Gets the contents of this URL
public Object getContent(Class[] classes)
Gets the contents of this URL
 
매개변수로 들어온 class의 인스턴스로 만들어진 자바의 URL 객체 컨텐츠를 반환한다. 클래스가 지원되지 않는 경우는 null 반환한다.이 메소드를 호출한 쪽에서 어떻게 content를 인코딩 할지를 조절 할 수 있다. 예를들면 현재의 URL은 HTML 웹페이지의 인코딩을 String, HTML객체, InputStream 타입으로 수행할 수 있도록 지원하고 있는데 이때 URL 리소스를 문자열로 인코딩하여 받고 싶다면 이 메소드에 String.class를 넘기면 되고 , 스트림으로 인코딩 하여 받고 싶다면 InputStream.class를 넘기면 된다. 즉 이 메소드는 주어진 URL에서 여러가지 컨텐트 인코딩을 지원하는 경우에 쓸모가 있다. public Object getContent() 의 경우 반환되는 content의 type은 해당 컨텐츠에 달려 있다. 만약 URL이 어떤 이미지를 가리키고 있다면 반환되는 타입은 Image 가 될것 입니다.
아래의 예제를 작성하고 실행해 보죠~
 
 
import java.io.*;
import java.net.*;
class URLInfoTest{
public static void main(String[] args) throws Exception {
try{
URL aURL = new URL("http", www.daum.net, 80 , "/index.html");
System.out.println("protocol name:" + aURL.getProtocol());
System.out.println("host name:" + aURL.getHost());
System.out.println("file name:" + aURL.getFile());
//생성자에서 port가 set되는 경우에 표시, 아니면 -1
System.out.println("port name:" + aURL.getPort());
//HTML 문서 내부의 위치를 지정하는 태그의 값을 구한다.
System.out.println("ref : "+aURL.getRef());
BufferedReader br = new BufferedReader(new InputStreamReader(aURL.openStream()));
String line;
while((line = br.readLine()) != null) {
System.out.println(line);
}
}
catch(MalformedURLException e) {
System.out.println("MalformedURLException : "+e);
}
catch(IOException e) {
System.out.println("IOException :"+ e);
}
}
}
위에서 나온 aURL.openStream() 메소드는 기본형이 아래와 같습니다. 하는일은 URL에서 내용을 읽기 위한 관(스트림)을 만드는 거죠...
? public final InputStream openStream() throws IOException
? Opens a connection to this URL and returns an InputStream for reading from that connection.
? This method is a shorthand for openConnection().getInputStream()
www.onjprogramming.co.kr의 index.html의 내용을 받아오는 예제 입니다. 결과는 대충 아래와 같이 나올겁니다.

---------- java ----------
protocol name:http
host name:www.onjprogramming.co.kr
file name:/index.html
port name:80
ref : null

오라클자바커뮤니티에서 운영, 개발자 전문교육, 개인80%환급 
오엔제이프로그래밍실무교육센터(www.onjprogramming.co.kr)

평일주간(9:30~18:20) 개강
(5/12)C#4.0,ADO.NET,Network 프로그래밍
(5/12)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
(5/12)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(5/12)안드로이드개발자과정
(5/19)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
(5/21)[교육전취업확정]Spring,MyBatis,XPlatform실무프로젝트과정
(5/26)[기업100%환급]SQL기초에서 Schema Object까지

평일야간(19:00~21:50) 개강
(5/07)Spring3.X, MyBatis, Hibernate실무과정
(5/09)웹퍼블리싱 마스터
(5/09)JAVA&WEB프레임워크실무과정
(5/09)SQL초보에서실전전문가까지
(5/16)자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정
(5/16)C#,ASP.NET마스터
(5/19)안드로이드개발자과정
(5/20)개발자를위한PLSQL,SQL튜닝,힌트

주말(10:00~17:50) 개강
(5/03)안드로이드개발자과정
(5/03)C#,ASP.NET마스터
(5/03)JAVA&WEB프레임워크실무과정
(5/10)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(5/10)닷넷실무자를위한WPF개발자과정
(5/10)SQL초보에서실전전문가까지
(5/10)Spring3.X, MyBatis, Hibernate실무과정
(5/11)웹퍼블리싱 마스터
(5/17)개발자를위한PLSQL,SQL튜닝,힌트

주말저녁(18:30~22:20) 개강
(5/17)자바&웹,jQUERY,스프링프레임워크
(5/17)SQL기초에서 Schema Object까지




댓글 없음:

댓글 쓰기