【问题标题】:How to redirect from inside a JSP如何从 JSP 内部重定向
【发布时间】:2014-07-20 02:38:53
【问题描述】:

我有一个JSP页面,需要引入条件重定向逻辑。例如,如果变量高于某个阈值,则继续像正常一样渲染 JSP。否则,我需要将浏览器重定向到http://myapp.example.com/fizz

if(var > threshold) {
    // Render page like normal
} else {
    // Redirect to http://myapp.example.com/fizz.
}

关于如何完成重定向部分的任何想法(从 JSP 页面内部)?

【问题讨论】:

  • response.sendRedirect(http://myapp.example.com/fizz) 我想你想要这个
  • 感谢@JqueryLearner (+1) - URL 应该在引号内吗?最后加一个分号?
  • 请不要在 jsp 中使用 scriplets,因为您使用上述方法是一种不好的做法。改用自定义标签库。至于你的问题,我猜 senredirect 可以解决问题

标签: java jsp redirect


【解决方案1】:

使用

 reponse.sendRedirect("http://myapp.example.com/fizz");

添加这个

【讨论】:

  • 谢谢@gau123 (+1) - 我最后不需要分号吗?我的重定向只是:response.sendRedirect("http://myapp.example.com/fizz");?
  • 是的,你必须在最后加上一个分号..然后重定向就像 response.sendRedirect("myapp.example.com/fizz");
  • 再次感谢@gau123 (+1) - 只是好奇这是如何工作的......如果我不指定“http://”,那么如果我想使用 SSL 怎么办( https)?
【解决方案2】:

试试这个-

<%
// New location to be redirected
String site = new String("http://myapp.example.com/fizz");
response.setStatus(response.SC_MOVED_TEMPORARILY);
response.setHeader("Location", site); 
%>

或者你也可以使用-

<%    
  response.sendRedirect("http://myapp.example.com/fizz");
 %>

您可以使用它们中的任何方法。

【讨论】:

    【解决方案3】:

    @IAmYourFaja 如果您想跳过 scriplet 以更好地练习代码,请通过 JSTL 标记尝试这样的操作。

    <c:if test="${var gt threshold}">
           <c:redirect url="http://myapp.example.com/fizz"/> // Redirect to http://myapp.example.com/fizz.
    </c:if>
    

    不需要添加任何其他东西。希望对你有帮助。

    【讨论】:

      【解决方案4】:

      在你的 else 循环中你可以使用

      response.sendRedirect("http://myapp.example.com/fizz");
      

      是的,网址应该在双引号内(""),因为

      response.sendRedirect() 接受字符串参数

      是的,; 应该在最后,否则您的代码将无法编译。

      【讨论】:

        【解决方案5】:
          String site = new String("http://www.google.com");
          response.setStatus(response.SC_MOVED_TEMPORARILY);
          response.setHeader("Location", site);
        

        【讨论】:

          【解决方案6】:

          关于您在 gau123 中回答您的问题的查询

          if I don't specify "http://", then what if I want to use SSL (https)?
          

          为此,您可以使用您的项目路径,例如,如果您想转到链接 http://myapp.example.com/fizz 或什至使用 https://myapp.example.com/fizz

          你将使用reponse.sendRedirect("../fizz");

          在这两种情况下,它都会将您重定向到 fizz 页面

          另外,最可靠的方法是创建一个包含上下文路径的域相关 URL。

          response.sendRedirect(request.getContextPath() + "/fizz");
          

          (引用自Send redirect to relative path in JSP?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-07-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-06-12
            相关资源
            最近更新 更多