URI против URL против URN

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

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());

РЕДАКТИРОВАТЬ: Не могли бы вы поделиться подробным ответом, сохранив в рамках JAVA и оригинальную концепцию URI, URL и URN.

С Уважением,

Арун Кумар

2 ответа

Решение

Если URI - это супер-набор URL, тогда как получилось следующее:

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

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

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

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

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

Другие вопросы по тегам