Каква е разликата между относителна иабсолютен URL адрес в контейнер сервлет. например, ако има папка jsp, наречена forum.jsp, в папката webinf. когато искам да изпратя текущата заявка към jsp от текущия jsp файл, който е под същата папка webinf, е следният правилен начин
/forum.jsp
относителен URL означава относително папката web-inf или местоположението jsp.
Отговори:
2 за отговор № 1Абсолютен URL адрес е: http://stackoverflow.com/questions/3591899/relative-url-and-absolute-url-difference
и a относителен URL адрес е: /questions/3591899/relative-url-and-absolute-url-difference
Също така, a относителен URL адрес може да бъде само: ../questions/3591899/relative-url-and-absolute-url-difference
в зависимост от това къде се намира свързващата страница ...
Или ./3591899/relative-url-and-absolute-url-difference
ако свързващата страница е разположена на questions
папка
Ще предложа винаги да се използва Относителен URL адрес... и става трудно, продължавайте да се опитвате да ги използвате ...
Един въпрос, защо вашите JSP са в WEB-INF/
папка?
Нямате достъп до JSP
под WEB-INF
папка, ако се опитате да получите достъп до нея сървърът ще хвърли a 404 error
. J2EE
търси само класове и библиотеки под тази папка.
1 за отговор № 2
Абсолютен URL адрес е URL, който включва схемата (напр. http:
). Относителният URL адрес не включва схемата и следователно зависи от настоящия контекст.
Как да интерпретираме относителен URL адрес е малко по-сложно. Това зависи изцяло от контекста, в който се използва URL адресът. Например в уеб браузър, или в сървлет, или дори в файловата система на локалния диск (java.io.File
и така нататък).
Когато говорим в контекста на сервлета, когато започва относителен URL адрес /
, това ще бъде относително към контекстния корен (т.е. корен на папката webcontent, там където /WEB-INF
папка е и където са поставени всички JSP файлове).
Така че, когато искате да препратите заявката до /WEB-INF/forums.jsp
, тогава просто посочете така:
request.getRequestDispatcher("/WEB-INF/forums.jsp").forward(request, response);
Но когато относителен URL адрес не започва /
, то ще бъде относително към текущия URL адрес на заявката. Така че, когато URL адресът на заявката е например http://example.com/context/servlets/servletname и използвате относителния URL адрес forums.jsp
, след това следното
request.getRequestDispatcher("forums.jsp").forward(request, response);
всъщност ще посочи http://example.com/context/servlets/forums.jsp