在JSP中重定向页面?

时间:2011-02-11 09:37:14

标签: java jsp redirect

我必须在jsp中设计几个页面。 单击第一页上的“提交”按钮后,页面应自动重定向到第二页。

您能帮助我们快速举例说明一个示例如何实现它的教程链接吗?

5 个答案:

答案 0 :(得分:100)

<%
    String redirectURL = "http://whatever.com/myJSPFile.jsp";
    response.sendRedirect(redirectURL);
%>

答案 1 :(得分:25)

This answer还包含仅使用jstl重定向标记的标准解决方案:

<c:redirect url="/home.html"/>

答案 2 :(得分:7)

只需在包含提交按钮的action的{​​{1}}属性中定义目标网页。

所以,在<form>

page1.jsp

与此问题无关,如果您需要执行任何操作,JSP not是开展业务的最佳位置。考虑学习servlets

答案 3 :(得分:2)

你好:如果你需要更多地控制链接应该重定向到的位置,你可以使用这个解决方案。

IE中。如果用户点击 CHECKOUT链接,但您想将他/她发送到结帐页面,如果已注册(已登录)或注册页面,如果他/她不是。

您可以使用JSTL核心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

那么:在简单的HTML中......

<a href="your.domain.com/${linkToRedirect}">CHECKOUT</a>

答案 4 :(得分:1)

使用return;声明扩展@ oopbase的答案。

让我们考虑一下传统身份验证系统的用例,我们将登录信息存储到会话中。在每个页面上,我们都会检查活动会话,例如

/* 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;
}

请注意,重定向的使用可能会因要求而异。如今人们不会使用这种认证系统。 (现代方法 - Token Based Authentication)这只是一个简单的例子,可以了解重定向的位置和方式。