2013-09-03 1 views
3

Ну, есть много обсуждений, сообщений, комментариев и вопросов по Интернету, чтобы различать URI, URL и URN. Один answer на SO объясните об этом, но я запутался в результате реализации в моем коде.URI vs URL vs URN

Q: Если URI супер набор URL, то как же он получил этот следующий вывод:

URI : /XXX/abc.do 

URL : http://examplehost:8080/XXX/abc.do 

Когда я пишу код ниже:

System.out.println(“URI : “+ httpRequestObj.getRequestURI()); 
System.out.println(“URL : “+ httpRequestObj.getRequestURL()); 

EDIT: Могли бы вы поделиться подробным ответом, сохранив JAVA и оригинальную концепцию URI, URL и URN.

С уважением,

Arun Kumar

ответ

1

Если URI является супер набор URL, то как же он получил этот следующий вывод ...

Определения URI и URL не может быть использован, чтобы вывести поведение getRequestURI() и getRequestURL(). Чтобы понять, как возвращаются методы, вам необходимо прочитать javadocs и спецификацию Servlet.

Смысл этих методов заключается в том, что они вызвали из-за того, что API HttpRequest со временем эволюционировал, и эта эволюция должна была поддерживать обратную совместимость.

getRequestURI() возвращает URI, а getRequestURL() возвращает URL-адрес, но URI и URL-адреса предназначены для разных целей.

+0

Да, согласно JavaDoc, 'getRequestURI()' Возвращает часть URL этого запроса от имени протокола до строки запроса в первой строке HTTP-запроса, тогда как 'getRequestURL()' возвращает строка содержит протокол, имя сервера, номер порта и путь к серверу, но не содержит параметры строки запроса. –

+2

Исправить. Объяснение того, что вы наблюдаете, дается javadocs ... не посредством каких-либо логических выводов из определений URI, URL или URN. –

+0

* «Не могли бы вы предоставить подробный ответ, сохранив JAVA и оригинальную концепцию URI, URL и URN в области.«* - Мой ответ уже делает это. –

4

java.net.URI API дает хорошее объяснение:

URI, является унифицированным идентификатором ресурса в то время как URL является унифицированным указателем ресурса. Следовательно, каждый URL-адрес является URI, абстрактно говоря, но не каждый URI является URL-адресом. Это связано с тем, что существует еще одна подкатегория URI, унифицированные имена ресурсов (URN), которые называют ресурсы, но не определяют, как их найти. Приведенные выше сообщения электронной почты, новостей и isbn URI являются примерами URN.

+0

Это значит, что '/ XXX/abc.do' является супер-набором' http: // examplehost: 8080/XXX/abc.do' ?? –

+0

@ArunKumar - № «/XXX/abc.do» не является «установленным», поэтому он не может быть «супер-множеством» чего-либо. –

+1

Я не уверен, какие отношения между этими двумя. API URI не определяет понятие супер-набора. Согласно API, первый из них относительный, второй - абсолютный. API также определяет 3 операции между экземплярами URI - нормализацию, разрешение и релятивизацию. –

 Смежные вопросы

  • Нет связанных вопросов^_^