Перенаправить страницы в JSP? - PullRequest
40 голосов
/ 11 февраля 2011

Мне нужно оформить несколько страниц в jsp.После нажатия кнопки «Отправить» на первой странице страница должна быть автоматически перенаправлена ​​на вторую страницу.

Можете ли вы помочь с быстрым примером или ссылкой на учебник, демонстрирующий, как это реализовать?

Ответы [ 5 ]

101 голосов
/ 11 февраля 2011
<%
    String redirectURL = "http://whatever.com/myJSPFile.jsp";
    response.sendRedirect(redirectURL);
%>
25 голосов
/ 03 ноября 2014

Этот ответ также содержит стандартное решение, использующее только тег перенаправления jstl:

<c:redirect url="/home.html"/>
7 голосов
/ 11 февраля 2011

Просто определите целевую страницу в атрибуте action <form>, содержащем кнопку отправки.

Итак, в page1.jsp:

<form action="page2.jsp">
    <input type="submit">
</form>

Независимо от проблемы, JSP не лучшее место для ведения бизнеса, если вам нужно это сделать Подумайте над изучением сервлетов .

2 голосов
/ 15 октября 2015

Здравствуйте! : Если вам нужно больше контроля над тем, куда должна перенаправляться ссылка, вы можете использовать это решение.

Т.е.Если пользователь щелкает по ссылке CHECKOUT , но вы хотите отправить его на страницу checkout , если она зарегистрирована (авторизована) или на странице регистрация , еслион / она не.

Вы можете использовать JSTL core LIKE:

<!--include the library-->
<%@ taglib prefix="core" uri="http://java.sun.com/jsp/jstl/core" %>

<%--create a var to store link--%>
<core:set var="linkToRedirect">
  <%--test the condition you need--%>
  <core:choose>
    <core:when test="${USER IS REGISTER}">
      checkout.jsp
    </core:when>
    <core:otherwise>
      registration.jsp
    </core:otherwise>
  </core:choose>
</core:set>

ОБЪЯСНЕНИЕ: то же самое, что и ...

 //pseudo code
 if(condition == true)
   set linkToRedirect = checkout.jsp
 else
   set linkToRedirect = registration.jsp

THEN: в простом HTML ...

<a href="your.domain.com/${linkToRedirect}">CHECKOUT</a>
1 голос
/ 05 августа 2016

Расширение ответа @ oopbase с помощью оператора return;.

Давайте рассмотрим вариант использования традиционной системы аутентификации, где мы сохраняем информацию для входа в систему в сеансе .На каждой странице мы проверяем активный сеанс вроде,

/* Some Import Statements here. */

if(null == session || !session.getAttribute("is_login").equals("1")) {
    response.sendRedirect("http://domain.com/login");
}

// ....

session.getAttribute("user_id");

// ....
/* Some More JSP+Java+HTML code here */

Однако на первый взгляд все выглядит хорошо;У него есть одна проблема.Если ваш сервер истек сеанс из-за ограничения по времени, и пользователь пытается получить доступ к странице, он может получить ошибку, если вы не пишете свой код в try..catch блоке или не обрабатываете if(null != session.getAttribute("attr_name")) каждый раз.

return; оператор I остановил дальнейшее выполнение и принудительно перенаправил страницу в определенное место.

if(null == session || !session.getAttribute("is_login").equals("1")) {
    response.sendRedirect("http://domain.com/login");
    return;
}

Обратите внимание, что использование перенаправления может варьироваться в зависимости от требований.В настоящее время люди не используют такую ​​систему аутентификации.(Современный подход - Аутентификация на основе токенов ) Это просто простой пример, чтобы понять, где и как разместить перенаправления (я).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...