【问题标题】:Redirecting HTML page only once仅重定向一次 HTML 页面
【发布时间】:2013-03-11 21:30:27
【问题描述】:

我有使用 JSP 的 Spring 应用程序。我需要重定向一页,但只需要一次。这是由于 spring 安全性 - 一旦用户访问此页面,我需要调用重定向以将他注销,但要留在同一页面上。有什么办法,只能通过java、html或js来做到这一点吗?或者也许我问错了 - 必须有某种方法,如何做到这一点,但我不是很喜欢前端技术,所以我很高兴,如果有人可以发布一些代码来告诉我,如何做到这一点工作..谢谢:)

所以用例:用户键入 mywebsite.com/login -> 如果他已经登录,我需要调用重定向以将他注销 -> 将出现相同的站点,但现在没有重定向。

PS:我无法将用户重定向到另一个站点 - 它必须是具有相同源代码的同一个站点。

【问题讨论】:

标签: java javascript html spring jsp


【解决方案1】:

您可以使用过滤器。

@Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
            HttpServletRequest test1=    (HttpServletRequest) arg0;

         test1.getRequestURL()); it gives  http://localhost:8081/applicationName/menu/index.action
         test1.getRequestURI()); it gives applicationName/menu/index.action
         String pathname = test1.getServletPath()); it gives //menu/index.action


        if(pathname.equals("//menu/index.action")){ 
            arg2.doFilter(arg0, arg1); // call to urs servlet or frameowrk managed controller method


            // in resposne 
           HttpServletResponse httpResp = (HttpServletResponse) arg1;
           RequestDispatcher rd = arg0.getRequestDispatcher("another.jsp");  redirect to another page at response time 
           rd.forward(arg0, arg1);





    }

不要忘记将<dispatcher>FORWARD</dispatcher> 放在 web.xml 中的过滤器映射中 如果您不想使用过滤器,您可以从 urs 控制器方法重定向到另一个 jsp。

【讨论】:

  • Filter 不适合做这项工作(也不是任何类似的组件)。
  • 如果您不想使用过滤器,您可以从 urs 控制器方法重定向到另一个 jsp。
  • 请参阅this great answer and explanation 了解您的方法错误的原因。
  • 这就是让这篇文章完全没有答案的原因。
  • 然后使用 sessionlistener 。调用监听器并使用计数器跟踪它。当计数器值>1时显示errorpage.jsp。
【解决方案2】:

如果我了解您的用例,我宁愿注销用户作为登录操作的一部分(即排除注销过程,并从注销操作和登录操作中调用它) .

如果这不可行(而且我没有理由不这样做),我会专注于“如果他登录则重定向”部分而不是“仅重定向一次”部分 - 前者非常无需对代码进行任何修改即可轻松检查,假设您正在使用某种会话来跟踪登录状态。

免责声明:我对 Sprint 几乎一无所知,这些都是非常通用的 cmets,应该适用于任何经典 web 应用程序。

【讨论】:

    猜你喜欢
    • 2017-09-09
    • 2015-11-24
    • 2019-10-29
    • 1970-01-01
    • 2011-10-05
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多