Разница между тегом URL перенаправления jsp и методом response.sendRedirect()

#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 пытается показать ваш фрагмент.