Ответ 1
<%
String redirectURL = "http://whatever.com/myJSPFile.jsp";
response.sendRedirect(redirectURL);
%>
Мне нужно создать несколько страниц в jsp. После нажатия кнопки отправки на первой странице страница должна быть автоматически перенаправлена на вторую страницу.
Можете ли вы помочь с быстрым примером или ссылкой на учебник, демонстрирующий, как это реализовать?
<%
String redirectURL = "http://whatever.com/myJSPFile.jsp";
response.sendRedirect(redirectURL);
%>
Этот ответ также содержит стандартное решение, использующее только тег перенаправления jstl:
<c:redirect url="/home.html"/>
Просто определите целевую страницу в атрибуте action
<form>
, содержащем кнопку отправки.
Итак, в page1.jsp
:
<form action="page2.jsp">
<input type="submit">
</form>
Не связанный с проблемой, JSP не лучшее место для ведения бизнеса, если вам нужно что-то делать. Рассмотрите возможность обучения servlets.
Здравствуйте,. Если вам нужно больше контроля над тем, куда должна быть перенаправлена ссылка, вы можете использовать это решение.
Т.е. Если пользователь нажимает ссылку 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>
Расширение ответа @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;
, я остановил дальнейшее выполнение и заставил перенаправить страницу в определенное место.
if(null == session || !session.getAttribute("is_login").equals("1")) {
response.sendRedirect("http://domain.com/login");
return;
}
Обратите внимание, что использование перенаправления может варьироваться в зависимости от требований. В настоящее время люди не используют такую систему аутентификации. (Современный подход - Аутентификация на основе токенов) Это просто простой пример, чтобы понять, где и как размещать перенаправления (-ы).