2011-01-03 5 views
2

URL 및 상대 경로 (쿼리)에 문제가 있습니다. 나는 상대 URL에서 절대 URL을 얻기 위해이 코드를 썼다 :java.net.URL 및 상대 URL

여기
old = "http://domain/script?param"; 
    new_ = "?otherparam"; 
    URL u = new URL(old); 
    u = new URL(u,new_); 

입니다 출력 :

JAVA URL: http://domain/script?param + ?otherparam = http://domain/?otherparam 
FireFox: http://domain/script?param + ?otherparam = http://domain/script?otherparam 

이유는 URL의 결과가 파이어 폭스의 차이점은 무엇입니까? FireFox와 같은 URL을 작성하는 방법은 무엇입니까?

+0

"Firefox"는 무엇을 의미합니까? – Bozho

+0

@Bozho 확인 출력 섹션 –

+0

예, Firefox 또는 다른 브라우저. – JakeLi

답변

1

URL (URL 컨텍스트, 문자열 사양)이 질문에 대한 가장 좋은 대답 제공의 javadoc는 읽기 :

사양의 경로 구성 요소는 슬래시 문자 "/"다음 경로로 처리됩니다로 시작하는 경우를 absolute이고 spec 경로가 컨텍스트 경로를 대체합니다.

그렇지 않으면 RFC2396에 설명 된대로 경로가 상대 경로로 처리되고 컨텍스트 경로에 추가됩니다. 또한이 경우 경로는 ".."및 "."발생으로 인한 디렉토리 변경 사항 제거를 통해 표준화됩니다.

URL 컨텍스트 URL이 슬래시없이 끝나기 때문에 제거됩니다. old = "http://domain/script/?param";

+0

사이트 맵을 만들고 있습니다. 각 페이지를 다운로드하고 모든 URL (href)을 추출해야합니다. URL은 다릅니다 -?, /, ./, ../, 절대 등으로 시작하십시오. 모두 처리해야합니다. 미안, 너의 최선의 대답을 얻지 못했다. 내 샘플 URL에서 "?"로 시작합니다. (쿼리 부분). – JakeLi

+0

죄송합니다. 답변을 편집했습니다. 이제는 더 명확 해지기를 바랍니다. – Tarlog