#javascript #java #jsp #jstl #jsp-tags
#javascript #java #jsp #jstl #jsp-теги
Вопрос:
У меня есть следующий код для перенаправления на новую страницу из jsp.
//response.sendRedirect("someJspPage.jsp");
%>
<c:redirect url="someJspPage.jsp" />
<%
Я вижу, что первая строка закомментирована. Но я не уверен, почему.
Я хочу знать, в чем точная разница между response.sendRedirect
и <c:redirect url=
Может ли кто-нибудь помочь мне понять, как перенаправление работает по-разному в обоих случаях. Я пишу решение для проблемы со смешанным контентом, но сначала мне нужно понять эту разницу.
Ответ №1:
Оба они работают одинаково. Я полагаю, вы уже знаете, что тег c:redirect
является тегом из JSTL (стандартная библиотека тегов JSP) и используется для перенаправления запроса на другой ресурс. Как и любой тег JSP, преимущество его использования заключается в генерации динамического HTML-кода без смешивания кода Java (например response.sendRedirect("someJspPage.jsp");
) с тегами HTML.
Он также поддерживает c:param
, например
<c:redirect url="someJspPage.jsp" >
<c:param name="someVar" value="1234"/>
</c:redirect>
В случае response.sendRedirect
, вам придется сделать это как:
response.sendRedirect("someJspPage.jsp?someVar=1234");
Комментарии:
1. Не совсем верно.
<c:param>
Правильное использованиеURLEncoder#encode()
под прикрытием. Так что это немного больше работы, чем то, чтоresponse.sendRedirect
пытается показать ваш фрагмент.