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.