/ / относителна URL адреса и абсолютна разлика в url - java, jsp, servlets

относителна url и абсолютна url разлика - java, jsp, servlets

Каква е разликата между относителна иабсолютен 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